diff --git a/Dockerfile.saibuilder b/Dockerfile.saibuilder index 3ef6677f..3cf0670c 100644 --- a/Dockerfile.saibuilder +++ b/Dockerfile.saibuilder @@ -1,8 +1,8 @@ FROM us-west1-docker.pkg.dev/openconfig-lemming/internal/builder@sha256:6a960d06bfd63c9cd8cff1f2ab3b3cc21e578b570979b5574d232be644dd0bf9 WORKDIR /build COPY patches/sai.patch sai.patch -RUN wget -q https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.11.0.tar.gz && tar xf v1.11.0.tar.gz && rm v1.11.0.tar.gz -RUN mkdir external && mv SAI-1.11.0 external/com_github_opencomputeproject_sai && patch -p1 -d external/com_github_opencomputeproject_sai < sai.patch +RUN wget -q https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.14.0.tar.gz && tar xf v1.14.0.tar.gz && rm v1.14.0.tar.gz +RUN mkdir external && mv SAI-1.14.0 external/com_github_opencomputeproject_sai && patch -p1 -d external/com_github_opencomputeproject_sai < sai.patch COPY go.* . COPY dataplane/proto/sai/*.proto dataplane/proto/sai/ COPY dataplane/cpusink/*.go dataplane/cpusink/ @@ -15,4 +15,4 @@ COPY dataplane/standalone/sai/*.cc dataplane/standalone/sai/ COPY dataplane/standalone/sai/*.h dataplane/standalone/sai/ COPY dataplane/standalone/entrypoint.cc dataplane/standalone/entrypoint.cc COPY Makefile . -RUN make lucius-libsai -j 48 \ No newline at end of file +RUN make lucius-libsai -j 48 diff --git a/WORKSPACE b/WORKSPACE index d098162e..0cd4ed17 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -283,9 +283,9 @@ cc_library( """, patch_args = ["-p1"], patches = ["//patches:sai.patch"], - sha256 = "240d0211bbea2758faabfdbfa5e5488d837a47d42839bfe99b4bfbff52ab6c11", - strip_prefix = "SAI-1.11.0", - urls = ["https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.11.0.tar.gz"], + sha256 = "4e3a1d010bda0c589db46e077725a2cd9624a5cc255c89d1caa79deb408d1fa7", + strip_prefix = "SAI-1.14.0", + urls = ["https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.14.0.tar.gz"], ) http_archive( diff --git a/dataplane/apigen/typeinfo/types.go b/dataplane/apigen/typeinfo/types.go index 52ecfd1c..5f9fb019 100644 --- a/dataplane/apigen/typeinfo/types.go +++ b/dataplane/apigen/typeinfo/types.go @@ -113,6 +113,15 @@ var ( Repeated: true, ProtoType: "PortErrStatus", }, + "sai_port_frequency_offset_ppm_list_t": { + ProtoType: "bytes", + }, + "sai_port_snr_list_t": { + ProtoType: "bytes", + }, + "sai_acl_chain_list_t": { + ProtoType: "bytes", + }, "sai_vlan_list_t": { Repeated: true, ProtoType: "uint32", @@ -551,6 +560,9 @@ message FdbEventNotificationData { "sai_acl_field_data_t": func(_ string, _ *docparser.SAIInfo) (string, bool) { return "AclFieldData", false }, + "sai_acl_field_data_mask_t": func(_ string, _ *docparser.SAIInfo) (string, bool) { + return "AclFieldData", false + }, "map_sai_acl_field_data_t": func(_ string, _ *docparser.SAIInfo) (string, bool) { return "map", true }, diff --git a/dataplane/proto/sai/BUILD b/dataplane/proto/sai/BUILD index 7c44725c..94f08cf7 100644 --- a/dataplane/proto/sai/BUILD +++ b/dataplane/proto/sai/BUILD @@ -7,12 +7,24 @@ proto_library( name = "sai_proto", srcs = [ "acl.proto", + "ars.proto", + "ars_profile.proto", "bfd.proto", "bmtor.proto", "bridge.proto", "buffer.proto", "common.proto", "counter.proto", + "dash_acl.proto", + "dash_direction_lookup.proto", + "dash_eni.proto", + "dash_inbound_routing.proto", + "dash_meter.proto", + "dash_outbound_ca_to_pa.proto", + "dash_outbound_routing.proto", + "dash_pa_validation.proto", + "dash_vip.proto", + "dash_vnet.proto", "debug_counter.proto", "dtel.proto", "fdb.proto", @@ -35,6 +47,7 @@ proto_library( "neighbor.proto", "next_hop.proto", "next_hop_group.proto", + "poe.proto", "policer.proto", "port.proto", "qos_map.proto", @@ -51,6 +64,7 @@ proto_library( "system_port.proto", "tam.proto", "tunnel.proto", + "twamp.proto", "udf.proto", "virtual_router.proto", "vlan.proto", diff --git a/dataplane/proto/sai/acl.pb.go b/dataplane/proto/sai/acl.pb.go index e474f5f6..7b923037 100644 --- a/dataplane/proto/sai/acl.pb.go +++ b/dataplane/proto/sai/acl.pb.go @@ -124,114 +124,130 @@ const ( AclTableAttr_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER AclTableAttr = 94 AclTableAttr_ACL_TABLE_ATTR_FIELD_GRE_KEY AclTableAttr = 95 AclTableAttr_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE AclTableAttr = 96 - AclTableAttr_ACL_TABLE_ATTR_ENTRY_LIST AclTableAttr = 97 - AclTableAttr_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY AclTableAttr = 98 - AclTableAttr_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER AclTableAttr = 99 + AclTableAttr_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC AclTableAttr = 97 + AclTableAttr_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC AclTableAttr = 98 + AclTableAttr_ACL_TABLE_ATTR_FIELD_VRF_ID AclTableAttr = 99 + AclTableAttr_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT AclTableAttr = 100 + AclTableAttr_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED AclTableAttr = 101 + AclTableAttr_ACL_TABLE_ATTR_ENTRY_LIST AclTableAttr = 102 + AclTableAttr_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY AclTableAttr = 103 + AclTableAttr_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER AclTableAttr = 104 + AclTableAttr_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE AclTableAttr = 105 + AclTableAttr_ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6 AclTableAttr = 106 + AclTableAttr_ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6 AclTableAttr = 107 ) // Enum value maps for AclTableAttr. var ( AclTableAttr_name = map[int32]string{ - 0: "ACL_TABLE_ATTR_UNSPECIFIED", - 1: "ACL_TABLE_ATTR_ACL_STAGE", - 2: "ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST", - 3: "ACL_TABLE_ATTR_SIZE", - 4: "ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST", - 5: "ACL_TABLE_ATTR_FIELD_SRC_IPV6", - 6: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3", - 7: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2", - 8: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1", - 9: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0", - 10: "ACL_TABLE_ATTR_FIELD_DST_IPV6", - 11: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3", - 12: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2", - 13: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1", - 14: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0", - 15: "ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6", - 16: "ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6", - 17: "ACL_TABLE_ATTR_FIELD_SRC_MAC", - 18: "ACL_TABLE_ATTR_FIELD_DST_MAC", - 19: "ACL_TABLE_ATTR_FIELD_SRC_IP", - 20: "ACL_TABLE_ATTR_FIELD_DST_IP", - 21: "ACL_TABLE_ATTR_FIELD_INNER_SRC_IP", - 22: "ACL_TABLE_ATTR_FIELD_INNER_DST_IP", - 23: "ACL_TABLE_ATTR_FIELD_IN_PORTS", - 24: "ACL_TABLE_ATTR_FIELD_OUT_PORTS", - 25: "ACL_TABLE_ATTR_FIELD_IN_PORT", - 26: "ACL_TABLE_ATTR_FIELD_OUT_PORT", - 27: "ACL_TABLE_ATTR_FIELD_SRC_PORT", - 28: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID", - 29: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI", - 30: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI", - 31: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID", - 32: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI", - 33: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI", - 34: "ACL_TABLE_ATTR_FIELD_L4_SRC_PORT", - 35: "ACL_TABLE_ATTR_FIELD_L4_DST_PORT", - 36: "ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT", - 37: "ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT", - 38: "ACL_TABLE_ATTR_FIELD_ETHER_TYPE", - 39: "ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE", - 40: "ACL_TABLE_ATTR_FIELD_IP_PROTOCOL", - 41: "ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL", - 42: "ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION", - 43: "ACL_TABLE_ATTR_FIELD_DSCP", - 44: "ACL_TABLE_ATTR_FIELD_ECN", - 45: "ACL_TABLE_ATTR_FIELD_TTL", - 46: "ACL_TABLE_ATTR_FIELD_TOS", - 47: "ACL_TABLE_ATTR_FIELD_IP_FLAGS", - 48: "ACL_TABLE_ATTR_FIELD_TCP_FLAGS", - 49: "ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE", - 50: "ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG", - 51: "ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL", - 52: "ACL_TABLE_ATTR_FIELD_TC", - 53: "ACL_TABLE_ATTR_FIELD_ICMP_TYPE", - 54: "ACL_TABLE_ATTR_FIELD_ICMP_CODE", - 55: "ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE", - 56: "ACL_TABLE_ATTR_FIELD_ICMPV6_CODE", - 57: "ACL_TABLE_ATTR_FIELD_PACKET_VLAN", - 58: "ACL_TABLE_ATTR_FIELD_TUNNEL_VNI", - 59: "ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG", - 60: "ACL_TABLE_ATTR_FIELD_MACSEC_SCI", - 61: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL", - 62: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL", - 63: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP", - 64: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS", - 65: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL", - 66: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL", - 67: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP", - 68: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS", - 69: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL", - 70: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL", - 71: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP", - 72: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS", - 73: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL", - 74: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL", - 75: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP", - 76: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS", - 77: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL", - 78: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL", - 79: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP", - 80: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS", - 81: "ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META", - 82: "ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META", - 83: "ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META", - 84: "ACL_TABLE_ATTR_FIELD_PORT_USER_META", - 85: "ACL_TABLE_ATTR_FIELD_VLAN_USER_META", - 86: "ACL_TABLE_ATTR_FIELD_ACL_USER_META", - 87: "ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT", - 88: "ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT", - 89: "ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT", - 90: "ACL_TABLE_ATTR_FIELD_BTH_OPCODE", - 91: "ACL_TABLE_ATTR_FIELD_AETH_SYNDROME", - 92: "ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN", - 93: "ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE", - 94: "ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER", - 95: "ACL_TABLE_ATTR_FIELD_GRE_KEY", - 96: "ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE", - 97: "ACL_TABLE_ATTR_ENTRY_LIST", - 98: "ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY", - 99: "ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER", + 0: "ACL_TABLE_ATTR_UNSPECIFIED", + 1: "ACL_TABLE_ATTR_ACL_STAGE", + 2: "ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST", + 3: "ACL_TABLE_ATTR_SIZE", + 4: "ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST", + 5: "ACL_TABLE_ATTR_FIELD_SRC_IPV6", + 6: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3", + 7: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2", + 8: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1", + 9: "ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0", + 10: "ACL_TABLE_ATTR_FIELD_DST_IPV6", + 11: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3", + 12: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2", + 13: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1", + 14: "ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0", + 15: "ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6", + 16: "ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6", + 17: "ACL_TABLE_ATTR_FIELD_SRC_MAC", + 18: "ACL_TABLE_ATTR_FIELD_DST_MAC", + 19: "ACL_TABLE_ATTR_FIELD_SRC_IP", + 20: "ACL_TABLE_ATTR_FIELD_DST_IP", + 21: "ACL_TABLE_ATTR_FIELD_INNER_SRC_IP", + 22: "ACL_TABLE_ATTR_FIELD_INNER_DST_IP", + 23: "ACL_TABLE_ATTR_FIELD_IN_PORTS", + 24: "ACL_TABLE_ATTR_FIELD_OUT_PORTS", + 25: "ACL_TABLE_ATTR_FIELD_IN_PORT", + 26: "ACL_TABLE_ATTR_FIELD_OUT_PORT", + 27: "ACL_TABLE_ATTR_FIELD_SRC_PORT", + 28: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID", + 29: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI", + 30: "ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI", + 31: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID", + 32: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI", + 33: "ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI", + 34: "ACL_TABLE_ATTR_FIELD_L4_SRC_PORT", + 35: "ACL_TABLE_ATTR_FIELD_L4_DST_PORT", + 36: "ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT", + 37: "ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT", + 38: "ACL_TABLE_ATTR_FIELD_ETHER_TYPE", + 39: "ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE", + 40: "ACL_TABLE_ATTR_FIELD_IP_PROTOCOL", + 41: "ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL", + 42: "ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION", + 43: "ACL_TABLE_ATTR_FIELD_DSCP", + 44: "ACL_TABLE_ATTR_FIELD_ECN", + 45: "ACL_TABLE_ATTR_FIELD_TTL", + 46: "ACL_TABLE_ATTR_FIELD_TOS", + 47: "ACL_TABLE_ATTR_FIELD_IP_FLAGS", + 48: "ACL_TABLE_ATTR_FIELD_TCP_FLAGS", + 49: "ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE", + 50: "ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG", + 51: "ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL", + 52: "ACL_TABLE_ATTR_FIELD_TC", + 53: "ACL_TABLE_ATTR_FIELD_ICMP_TYPE", + 54: "ACL_TABLE_ATTR_FIELD_ICMP_CODE", + 55: "ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE", + 56: "ACL_TABLE_ATTR_FIELD_ICMPV6_CODE", + 57: "ACL_TABLE_ATTR_FIELD_PACKET_VLAN", + 58: "ACL_TABLE_ATTR_FIELD_TUNNEL_VNI", + 59: "ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG", + 60: "ACL_TABLE_ATTR_FIELD_MACSEC_SCI", + 61: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL", + 62: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL", + 63: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP", + 64: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS", + 65: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL", + 66: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL", + 67: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP", + 68: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS", + 69: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL", + 70: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL", + 71: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP", + 72: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS", + 73: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL", + 74: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL", + 75: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP", + 76: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS", + 77: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL", + 78: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL", + 79: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP", + 80: "ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS", + 81: "ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META", + 82: "ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META", + 83: "ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META", + 84: "ACL_TABLE_ATTR_FIELD_PORT_USER_META", + 85: "ACL_TABLE_ATTR_FIELD_VLAN_USER_META", + 86: "ACL_TABLE_ATTR_FIELD_ACL_USER_META", + 87: "ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT", + 88: "ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT", + 89: "ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT", + 90: "ACL_TABLE_ATTR_FIELD_BTH_OPCODE", + 91: "ACL_TABLE_ATTR_FIELD_AETH_SYNDROME", + 92: "ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN", + 93: "ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE", + 94: "ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER", + 95: "ACL_TABLE_ATTR_FIELD_GRE_KEY", + 96: "ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE", + 97: "ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC", + 98: "ACL_TABLE_ATTR_FIELD_INNER_DST_MAC", + 99: "ACL_TABLE_ATTR_FIELD_VRF_ID", + 100: "ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT", + 101: "ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED", + 102: "ACL_TABLE_ATTR_ENTRY_LIST", + 103: "ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY", + 104: "ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER", + 105: "ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE", + 106: "ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6", + 107: "ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6", } AclTableAttr_value = map[string]int32{ "ACL_TABLE_ATTR_UNSPECIFIED": 0, @@ -331,9 +347,17 @@ var ( "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_ENTRY_LIST": 97, - "ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY": 98, - "ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER": 99, + "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, } ) @@ -463,59 +487,68 @@ const ( AclEntryAttr_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER AclEntryAttr = 93 AclEntryAttr_ACL_ENTRY_ATTR_FIELD_GRE_KEY AclEntryAttr = 94 AclEntryAttr_ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE AclEntryAttr = 95 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_REDIRECT AclEntryAttr = 96 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP AclEntryAttr = 97 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST AclEntryAttr = 98 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION AclEntryAttr = 99 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_FLOOD AclEntryAttr = 100 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_COUNTER AclEntryAttr = 101 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS AclEntryAttr = 102 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS AclEntryAttr = 103 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_POLICER AclEntryAttr = 104 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL AclEntryAttr = 105 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_TC AclEntryAttr = 106 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR AclEntryAttr = 107 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID AclEntryAttr = 108 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI AclEntryAttr = 109 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID AclEntryAttr = 110 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI AclEntryAttr = 111 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID AclEntryAttr = 112 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI AclEntryAttr = 113 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC AclEntryAttr = 114 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC AclEntryAttr = 115 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP AclEntryAttr = 116 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_IP AclEntryAttr = 117 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6 AclEntryAttr = 118 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6 AclEntryAttr = 119 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DSCP AclEntryAttr = 120 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ECN AclEntryAttr = 121 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT AclEntryAttr = 122 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT AclEntryAttr = 123 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE AclEntryAttr = 124 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE AclEntryAttr = 125 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA AclEntryAttr = 126 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST AclEntryAttr = 127 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID AclEntryAttr = 128 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN AclEntryAttr = 129 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP AclEntryAttr = 130 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION AclEntryAttr = 131 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE AclEntryAttr = 132 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE AclEntryAttr = 133 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT AclEntryAttr = 134 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS AclEntryAttr = 135 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_NO_NAT AclEntryAttr = 136 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_INSERT AclEntryAttr = 137 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_DELETE AclEntryAttr = 138 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW AclEntryAttr = 139 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS AclEntryAttr = 140 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS AclEntryAttr = 141 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT AclEntryAttr = 142 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP AclEntryAttr = 143 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW AclEntryAttr = 144 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID AclEntryAttr = 145 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID AclEntryAttr = 146 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_VRF AclEntryAttr = 147 - AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS AclEntryAttr = 148 + AclEntryAttr_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC AclEntryAttr = 96 + AclEntryAttr_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC AclEntryAttr = 97 + AclEntryAttr_ACL_ENTRY_ATTR_FIELD_VRF_ID AclEntryAttr = 98 + AclEntryAttr_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT AclEntryAttr = 99 + AclEntryAttr_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED AclEntryAttr = 100 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_REDIRECT AclEntryAttr = 101 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP AclEntryAttr = 102 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST AclEntryAttr = 103 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION AclEntryAttr = 104 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_FLOOD AclEntryAttr = 105 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_COUNTER AclEntryAttr = 106 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS AclEntryAttr = 107 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS AclEntryAttr = 108 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_POLICER AclEntryAttr = 109 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL AclEntryAttr = 110 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_TC AclEntryAttr = 111 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR AclEntryAttr = 112 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID AclEntryAttr = 113 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI AclEntryAttr = 114 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID AclEntryAttr = 115 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI AclEntryAttr = 116 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID AclEntryAttr = 117 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI AclEntryAttr = 118 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC AclEntryAttr = 119 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC AclEntryAttr = 120 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP AclEntryAttr = 121 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_IP AclEntryAttr = 122 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6 AclEntryAttr = 123 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6 AclEntryAttr = 124 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DSCP AclEntryAttr = 125 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ECN AclEntryAttr = 126 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT AclEntryAttr = 127 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT AclEntryAttr = 128 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE AclEntryAttr = 129 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE AclEntryAttr = 130 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA AclEntryAttr = 131 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST AclEntryAttr = 132 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID AclEntryAttr = 133 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN AclEntryAttr = 134 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP AclEntryAttr = 135 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION AclEntryAttr = 136 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE AclEntryAttr = 137 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE AclEntryAttr = 138 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT AclEntryAttr = 139 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS AclEntryAttr = 140 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_NO_NAT AclEntryAttr = 141 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_INSERT AclEntryAttr = 142 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_DELETE AclEntryAttr = 143 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW AclEntryAttr = 144 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS AclEntryAttr = 145 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS AclEntryAttr = 146 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT AclEntryAttr = 147 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP AclEntryAttr = 148 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW AclEntryAttr = 149 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID AclEntryAttr = 150 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID AclEntryAttr = 151 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_VRF AclEntryAttr = 152 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS AclEntryAttr = 153 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING AclEntryAttr = 154 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT AclEntryAttr = 155 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING AclEntryAttr = 156 + AclEntryAttr_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT AclEntryAttr = 157 ) // Enum value maps for AclEntryAttr. @@ -617,59 +650,68 @@ var ( 93: "ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER", 94: "ACL_ENTRY_ATTR_FIELD_GRE_KEY", 95: "ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE", - 96: "ACL_ENTRY_ATTR_ACTION_REDIRECT", - 97: "ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP", - 98: "ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST", - 99: "ACL_ENTRY_ATTR_ACTION_PACKET_ACTION", - 100: "ACL_ENTRY_ATTR_ACTION_FLOOD", - 101: "ACL_ENTRY_ATTR_ACTION_COUNTER", - 102: "ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS", - 103: "ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS", - 104: "ACL_ENTRY_ATTR_ACTION_SET_POLICER", - 105: "ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL", - 106: "ACL_ENTRY_ATTR_ACTION_SET_TC", - 107: "ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR", - 108: "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID", - 109: "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI", - 110: "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID", - 111: "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI", - 112: "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID", - 113: "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI", - 114: "ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC", - 115: "ACL_ENTRY_ATTR_ACTION_SET_DST_MAC", - 116: "ACL_ENTRY_ATTR_ACTION_SET_SRC_IP", - 117: "ACL_ENTRY_ATTR_ACTION_SET_DST_IP", - 118: "ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6", - 119: "ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6", - 120: "ACL_ENTRY_ATTR_ACTION_SET_DSCP", - 121: "ACL_ENTRY_ATTR_ACTION_SET_ECN", - 122: "ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT", - 123: "ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT", - 124: "ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE", - 125: "ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE", - 126: "ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA", - 127: "ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST", - 128: "ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID", - 129: "ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN", - 130: "ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP", - 131: "ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION", - 132: "ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE", - 133: "ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE", - 134: "ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT", - 135: "ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS", - 136: "ACL_ENTRY_ATTR_ACTION_NO_NAT", - 137: "ACL_ENTRY_ATTR_ACTION_INT_INSERT", - 138: "ACL_ENTRY_ATTR_ACTION_INT_DELETE", - 139: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW", - 140: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS", - 141: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS", - 142: "ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT", - 143: "ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP", - 144: "ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW", - 145: "ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID", - 146: "ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID", - 147: "ACL_ENTRY_ATTR_ACTION_SET_VRF", - 148: "ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS", + 96: "ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC", + 97: "ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC", + 98: "ACL_ENTRY_ATTR_FIELD_VRF_ID", + 99: "ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT", + 100: "ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED", + 101: "ACL_ENTRY_ATTR_ACTION_REDIRECT", + 102: "ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP", + 103: "ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST", + 104: "ACL_ENTRY_ATTR_ACTION_PACKET_ACTION", + 105: "ACL_ENTRY_ATTR_ACTION_FLOOD", + 106: "ACL_ENTRY_ATTR_ACTION_COUNTER", + 107: "ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS", + 108: "ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS", + 109: "ACL_ENTRY_ATTR_ACTION_SET_POLICER", + 110: "ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL", + 111: "ACL_ENTRY_ATTR_ACTION_SET_TC", + 112: "ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR", + 113: "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID", + 114: "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI", + 115: "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID", + 116: "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI", + 117: "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID", + 118: "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI", + 119: "ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC", + 120: "ACL_ENTRY_ATTR_ACTION_SET_DST_MAC", + 121: "ACL_ENTRY_ATTR_ACTION_SET_SRC_IP", + 122: "ACL_ENTRY_ATTR_ACTION_SET_DST_IP", + 123: "ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6", + 124: "ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6", + 125: "ACL_ENTRY_ATTR_ACTION_SET_DSCP", + 126: "ACL_ENTRY_ATTR_ACTION_SET_ECN", + 127: "ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT", + 128: "ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT", + 129: "ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE", + 130: "ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE", + 131: "ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA", + 132: "ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST", + 133: "ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID", + 134: "ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN", + 135: "ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP", + 136: "ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION", + 137: "ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE", + 138: "ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE", + 139: "ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT", + 140: "ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS", + 141: "ACL_ENTRY_ATTR_ACTION_NO_NAT", + 142: "ACL_ENTRY_ATTR_ACTION_INT_INSERT", + 143: "ACL_ENTRY_ATTR_ACTION_INT_DELETE", + 144: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW", + 145: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS", + 146: "ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS", + 147: "ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT", + 148: "ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP", + 149: "ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW", + 150: "ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID", + 151: "ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID", + 152: "ACL_ENTRY_ATTR_ACTION_SET_VRF", + 153: "ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS", + 154: "ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING", + 155: "ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT", + 156: "ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING", + 157: "ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT", } AclEntryAttr_value = map[string]int32{ "ACL_ENTRY_ATTR_UNSPECIFIED": 0, @@ -768,59 +810,68 @@ var ( "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_ACTION_REDIRECT": 96, - "ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP": 97, - "ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST": 98, - "ACL_ENTRY_ATTR_ACTION_PACKET_ACTION": 99, - "ACL_ENTRY_ATTR_ACTION_FLOOD": 100, - "ACL_ENTRY_ATTR_ACTION_COUNTER": 101, - "ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS": 102, - "ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS": 103, - "ACL_ENTRY_ATTR_ACTION_SET_POLICER": 104, - "ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL": 105, - "ACL_ENTRY_ATTR_ACTION_SET_TC": 106, - "ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR": 107, - "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID": 108, - "ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI": 109, - "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID": 110, - "ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI": 111, - "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID": 112, - "ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI": 113, - "ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC": 114, - "ACL_ENTRY_ATTR_ACTION_SET_DST_MAC": 115, - "ACL_ENTRY_ATTR_ACTION_SET_SRC_IP": 116, - "ACL_ENTRY_ATTR_ACTION_SET_DST_IP": 117, - "ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6": 118, - "ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6": 119, - "ACL_ENTRY_ATTR_ACTION_SET_DSCP": 120, - "ACL_ENTRY_ATTR_ACTION_SET_ECN": 121, - "ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT": 122, - "ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT": 123, - "ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE": 124, - "ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE": 125, - "ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA": 126, - "ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST": 127, - "ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID": 128, - "ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN": 129, - "ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP": 130, - "ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION": 131, - "ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE": 132, - "ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE": 133, - "ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT": 134, - "ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS": 135, - "ACL_ENTRY_ATTR_ACTION_NO_NAT": 136, - "ACL_ENTRY_ATTR_ACTION_INT_INSERT": 137, - "ACL_ENTRY_ATTR_ACTION_INT_DELETE": 138, - "ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW": 139, - "ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS": 140, - "ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS": 141, - "ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT": 142, - "ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP": 143, - "ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW": 144, - "ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID": 145, - "ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID": 146, - "ACL_ENTRY_ATTR_ACTION_SET_VRF": 147, - "ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS": 148, + "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, } ) @@ -969,6 +1020,7 @@ const ( AclTableGroupAttr_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST AclTableGroupAttr = 2 AclTableGroupAttr_ACL_TABLE_GROUP_ATTR_TYPE AclTableGroupAttr = 3 AclTableGroupAttr_ACL_TABLE_GROUP_ATTR_MEMBER_LIST AclTableGroupAttr = 4 + AclTableGroupAttr_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST AclTableGroupAttr = 5 ) // Enum value maps for AclTableGroupAttr. @@ -979,6 +1031,7 @@ var ( 2: "ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST", 3: "ACL_TABLE_GROUP_ATTR_TYPE", 4: "ACL_TABLE_GROUP_ATTR_MEMBER_LIST", + 5: "ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST", } AclTableGroupAttr_value = map[string]int32{ "ACL_TABLE_GROUP_ATTR_UNSPECIFIED": 0, @@ -986,6 +1039,7 @@ var ( "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, } ) @@ -1019,10 +1073,11 @@ func (AclTableGroupAttr) EnumDescriptor() ([]byte, []int) { type AclTableGroupMemberAttr int32 const ( - AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED AclTableGroupMemberAttr = 0 - AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID AclTableGroupMemberAttr = 1 - AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID AclTableGroupMemberAttr = 2 - AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY AclTableGroupMemberAttr = 3 + AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED AclTableGroupMemberAttr = 0 + AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID AclTableGroupMemberAttr = 1 + AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID AclTableGroupMemberAttr = 2 + AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY AclTableGroupMemberAttr = 3 + AclTableGroupMemberAttr_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID AclTableGroupMemberAttr = 4 ) // Enum value maps for AclTableGroupMemberAttr. @@ -1032,12 +1087,14 @@ var ( 1: "ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID", 2: "ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID", 3: "ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY", + 4: "ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID", } AclTableGroupMemberAttr_value = map[string]int32{ - "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_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, } ) @@ -1068,6 +1125,55 @@ func (AclTableGroupMemberAttr) EnumDescriptor() ([]byte, []int) { return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{5} } +type AclTableChainGroupAttr int32 + +const ( + AclTableChainGroupAttr_ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED AclTableChainGroupAttr = 0 + AclTableChainGroupAttr_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE AclTableChainGroupAttr = 1 + AclTableChainGroupAttr_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE AclTableChainGroupAttr = 2 +) + +// Enum value maps for AclTableChainGroupAttr. +var ( + AclTableChainGroupAttr_name = map[int32]string{ + 0: "ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED", + 1: "ACL_TABLE_CHAIN_GROUP_ATTR_TYPE", + 2: "ACL_TABLE_CHAIN_GROUP_ATTR_STAGE", + } + AclTableChainGroupAttr_value = map[string]int32{ + "ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED": 0, + "ACL_TABLE_CHAIN_GROUP_ATTR_TYPE": 1, + "ACL_TABLE_CHAIN_GROUP_ATTR_STAGE": 2, + } +) + +func (x AclTableChainGroupAttr) Enum() *AclTableChainGroupAttr { + p := new(AclTableChainGroupAttr) + *p = x + return p +} + +func (x AclTableChainGroupAttr) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AclTableChainGroupAttr) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_acl_proto_enumTypes[6].Descriptor() +} + +func (AclTableChainGroupAttr) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_acl_proto_enumTypes[6] +} + +func (x AclTableChainGroupAttr) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AclTableChainGroupAttr.Descriptor instead. +func (AclTableChainGroupAttr) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{6} +} + type CreateAclTableRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` @@ -1167,6 +1273,14 @@ type CreateAclTableRequest struct { FieldIpv6NextHeader *bool `protobuf:"varint,95,opt,name=field_ipv6_next_header,json=fieldIpv6NextHeader,proto3,oneof" json:"field_ipv6_next_header,omitempty"` FieldGreKey *bool `protobuf:"varint,96,opt,name=field_gre_key,json=fieldGreKey,proto3,oneof" json:"field_gre_key,omitempty"` FieldTamIntType *bool `protobuf:"varint,97,opt,name=field_tam_int_type,json=fieldTamIntType,proto3,oneof" json:"field_tam_int_type,omitempty"` + FieldInnerSrcMac *bool `protobuf:"varint,98,opt,name=field_inner_src_mac,json=fieldInnerSrcMac,proto3,oneof" json:"field_inner_src_mac,omitempty"` + FieldInnerDstMac *bool `protobuf:"varint,99,opt,name=field_inner_dst_mac,json=fieldInnerDstMac,proto3,oneof" json:"field_inner_dst_mac,omitempty"` + FieldVrfId *bool `protobuf:"varint,100,opt,name=field_vrf_id,json=fieldVrfId,proto3,oneof" json:"field_vrf_id,omitempty"` + FieldIpmcNpuMetaDstHit *bool `protobuf:"varint,101,opt,name=field_ipmc_npu_meta_dst_hit,json=fieldIpmcNpuMetaDstHit,proto3,oneof" json:"field_ipmc_npu_meta_dst_hit,omitempty"` + FieldTunnelTerminated *bool `protobuf:"varint,102,opt,name=field_tunnel_terminated,json=fieldTunnelTerminated,proto3,oneof" json:"field_tunnel_terminated,omitempty"` + AclTableMatchType *AclTableMatchType `protobuf:"varint,103,opt,name=acl_table_match_type,json=aclTableMatchType,proto3,enum=lemming.dataplane.sai.AclTableMatchType,oneof" json:"acl_table_match_type,omitempty"` + FieldValidBitsSrcIpv6 *AclFieldData `protobuf:"bytes,104,opt,name=field_valid_bits_src_ipv6,json=fieldValidBitsSrcIpv6,proto3,oneof" json:"field_valid_bits_src_ipv6,omitempty"` + FieldValidBitsDstIpv6 *AclFieldData `protobuf:"bytes,105,opt,name=field_valid_bits_dst_ipv6,json=fieldValidBitsDstIpv6,proto3,oneof" json:"field_valid_bits_dst_ipv6,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1880,6 +1994,62 @@ func (x *CreateAclTableRequest) GetFieldTamIntType() bool { return false } +func (x *CreateAclTableRequest) GetFieldInnerSrcMac() bool { + if x != nil && x.FieldInnerSrcMac != nil { + return *x.FieldInnerSrcMac + } + return false +} + +func (x *CreateAclTableRequest) GetFieldInnerDstMac() bool { + if x != nil && x.FieldInnerDstMac != nil { + return *x.FieldInnerDstMac + } + return false +} + +func (x *CreateAclTableRequest) GetFieldVrfId() bool { + if x != nil && x.FieldVrfId != nil { + return *x.FieldVrfId + } + return false +} + +func (x *CreateAclTableRequest) GetFieldIpmcNpuMetaDstHit() bool { + if x != nil && x.FieldIpmcNpuMetaDstHit != nil { + return *x.FieldIpmcNpuMetaDstHit + } + return false +} + +func (x *CreateAclTableRequest) GetFieldTunnelTerminated() bool { + if x != nil && x.FieldTunnelTerminated != nil { + return *x.FieldTunnelTerminated + } + return false +} + +func (x *CreateAclTableRequest) GetAclTableMatchType() AclTableMatchType { + if x != nil && x.AclTableMatchType != nil { + return *x.AclTableMatchType + } + return AclTableMatchType_ACL_TABLE_MATCH_TYPE_UNSPECIFIED +} + +func (x *CreateAclTableRequest) GetFieldValidBitsSrcIpv6() *AclFieldData { + if x != nil { + return x.FieldValidBitsSrcIpv6 + } + return nil +} + +func (x *CreateAclTableRequest) GetFieldValidBitsDstIpv6() *AclFieldData { + if x != nil { + return x.FieldValidBitsDstIpv6 + } + return nil +} + type CreateAclTableResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -2198,59 +2368,68 @@ type CreateAclEntryRequest struct { FieldIpv6NextHeader *AclFieldData `protobuf:"bytes,94,opt,name=field_ipv6_next_header,json=fieldIpv6NextHeader,proto3,oneof" json:"field_ipv6_next_header,omitempty"` FieldGreKey *AclFieldData `protobuf:"bytes,95,opt,name=field_gre_key,json=fieldGreKey,proto3,oneof" json:"field_gre_key,omitempty"` FieldTamIntType *AclFieldData `protobuf:"bytes,96,opt,name=field_tam_int_type,json=fieldTamIntType,proto3,oneof" json:"field_tam_int_type,omitempty"` - ActionRedirect *AclActionData `protobuf:"bytes,97,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` - ActionEndpointIp *AclActionData `protobuf:"bytes,98,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` - ActionRedirectList *AclActionData `protobuf:"bytes,99,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` - ActionPacketAction *AclActionData `protobuf:"bytes,100,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` - ActionFlood *AclActionData `protobuf:"bytes,101,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` - ActionCounter *AclActionData `protobuf:"bytes,102,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` - ActionMirrorIngress *AclActionData `protobuf:"bytes,103,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` - ActionMirrorEgress *AclActionData `protobuf:"bytes,104,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` - ActionSetPolicer *AclActionData `protobuf:"bytes,105,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` - ActionDecrementTtl *AclActionData `protobuf:"bytes,106,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` - ActionSetTc *AclActionData `protobuf:"bytes,107,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` - ActionSetPacketColor *AclActionData `protobuf:"bytes,108,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` - ActionSetInnerVlanId *AclActionData `protobuf:"bytes,109,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` - ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,110,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` - ActionSetOuterVlanId *AclActionData `protobuf:"bytes,111,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` - ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,112,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` - ActionAddVlanId *AclActionData `protobuf:"bytes,113,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` - ActionAddVlanPri *AclActionData `protobuf:"bytes,114,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` - ActionSetSrcMac *AclActionData `protobuf:"bytes,115,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` - ActionSetDstMac *AclActionData `protobuf:"bytes,116,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` - ActionSetSrcIp *AclActionData `protobuf:"bytes,117,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` - ActionSetDstIp *AclActionData `protobuf:"bytes,118,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` - ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,119,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` - ActionSetDstIpv6 *AclActionData `protobuf:"bytes,120,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` - ActionSetDscp *AclActionData `protobuf:"bytes,121,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` - ActionSetEcn *AclActionData `protobuf:"bytes,122,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` - ActionSetL4SrcPort *AclActionData `protobuf:"bytes,123,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` - ActionSetL4DstPort *AclActionData `protobuf:"bytes,124,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` - ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,125,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` - ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,126,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` - ActionSetAclMetaData *AclActionData `protobuf:"bytes,127,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` - ActionEgressBlockPortList *AclActionData `protobuf:"bytes,128,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` - ActionSetUserTrapId *AclActionData `protobuf:"bytes,129,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` - ActionSetDoNotLearn *AclActionData `protobuf:"bytes,130,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` - ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,131,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` - ActionDtelIntSession *AclActionData `protobuf:"bytes,132,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` - ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,133,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` - ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,134,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` - ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,135,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` - ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,136,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` - ActionNoNat *AclActionData `protobuf:"bytes,137,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` - ActionIntInsert *AclActionData `protobuf:"bytes,138,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` - ActionIntDelete *AclActionData `protobuf:"bytes,139,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` - ActionIntReportFlow *AclActionData `protobuf:"bytes,140,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` - ActionIntReportDrops *AclActionData `protobuf:"bytes,141,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` - ActionIntReportTailDrops *AclActionData `protobuf:"bytes,142,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` - ActionTamIntObject *AclActionData `protobuf:"bytes,143,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` - ActionSetIsolationGroup *AclActionData `protobuf:"bytes,144,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` - ActionMacsecFlow *AclActionData `protobuf:"bytes,145,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` - ActionSetLagHashId *AclActionData `protobuf:"bytes,146,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` - ActionSetEcmpHashId *AclActionData `protobuf:"bytes,147,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` - ActionSetVrf *AclActionData `protobuf:"bytes,148,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` - ActionSetForwardingClass *AclActionData `protobuf:"bytes,149,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + FieldInnerSrcMac *AclFieldData `protobuf:"bytes,97,opt,name=field_inner_src_mac,json=fieldInnerSrcMac,proto3,oneof" json:"field_inner_src_mac,omitempty"` + FieldInnerDstMac *AclFieldData `protobuf:"bytes,98,opt,name=field_inner_dst_mac,json=fieldInnerDstMac,proto3,oneof" json:"field_inner_dst_mac,omitempty"` + FieldVrfId *AclFieldData `protobuf:"bytes,99,opt,name=field_vrf_id,json=fieldVrfId,proto3,oneof" json:"field_vrf_id,omitempty"` + FieldIpmcNpuMetaDstHit *AclFieldData `protobuf:"bytes,100,opt,name=field_ipmc_npu_meta_dst_hit,json=fieldIpmcNpuMetaDstHit,proto3,oneof" json:"field_ipmc_npu_meta_dst_hit,omitempty"` + FieldTunnelTerminated *AclFieldData `protobuf:"bytes,101,opt,name=field_tunnel_terminated,json=fieldTunnelTerminated,proto3,oneof" json:"field_tunnel_terminated,omitempty"` + ActionRedirect *AclActionData `protobuf:"bytes,102,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` + ActionEndpointIp *AclActionData `protobuf:"bytes,103,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` + ActionRedirectList *AclActionData `protobuf:"bytes,104,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` + ActionPacketAction *AclActionData `protobuf:"bytes,105,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` + ActionFlood *AclActionData `protobuf:"bytes,106,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` + ActionCounter *AclActionData `protobuf:"bytes,107,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` + ActionMirrorIngress *AclActionData `protobuf:"bytes,108,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` + ActionMirrorEgress *AclActionData `protobuf:"bytes,109,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` + ActionSetPolicer *AclActionData `protobuf:"bytes,110,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` + ActionDecrementTtl *AclActionData `protobuf:"bytes,111,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` + ActionSetTc *AclActionData `protobuf:"bytes,112,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` + ActionSetPacketColor *AclActionData `protobuf:"bytes,113,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` + ActionSetInnerVlanId *AclActionData `protobuf:"bytes,114,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` + ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,115,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` + ActionSetOuterVlanId *AclActionData `protobuf:"bytes,116,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` + ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,117,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` + ActionAddVlanId *AclActionData `protobuf:"bytes,118,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` + ActionAddVlanPri *AclActionData `protobuf:"bytes,119,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` + ActionSetSrcMac *AclActionData `protobuf:"bytes,120,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` + ActionSetDstMac *AclActionData `protobuf:"bytes,121,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` + ActionSetSrcIp *AclActionData `protobuf:"bytes,122,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` + ActionSetDstIp *AclActionData `protobuf:"bytes,123,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` + ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,124,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` + ActionSetDstIpv6 *AclActionData `protobuf:"bytes,125,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` + ActionSetDscp *AclActionData `protobuf:"bytes,126,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` + ActionSetEcn *AclActionData `protobuf:"bytes,127,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` + ActionSetL4SrcPort *AclActionData `protobuf:"bytes,128,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` + ActionSetL4DstPort *AclActionData `protobuf:"bytes,129,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` + ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,130,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` + ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,131,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` + ActionSetAclMetaData *AclActionData `protobuf:"bytes,132,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` + ActionEgressBlockPortList *AclActionData `protobuf:"bytes,133,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` + ActionSetUserTrapId *AclActionData `protobuf:"bytes,134,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` + ActionSetDoNotLearn *AclActionData `protobuf:"bytes,135,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` + ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,136,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` + ActionDtelIntSession *AclActionData `protobuf:"bytes,137,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` + ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,138,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` + ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,139,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` + ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,140,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` + ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,141,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` + ActionNoNat *AclActionData `protobuf:"bytes,142,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` + ActionIntInsert *AclActionData `protobuf:"bytes,143,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` + ActionIntDelete *AclActionData `protobuf:"bytes,144,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` + ActionIntReportFlow *AclActionData `protobuf:"bytes,145,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` + ActionIntReportDrops *AclActionData `protobuf:"bytes,146,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` + ActionIntReportTailDrops *AclActionData `protobuf:"bytes,147,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` + ActionTamIntObject *AclActionData `protobuf:"bytes,148,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` + ActionSetIsolationGroup *AclActionData `protobuf:"bytes,149,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` + ActionMacsecFlow *AclActionData `protobuf:"bytes,150,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` + ActionSetLagHashId *AclActionData `protobuf:"bytes,151,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` + ActionSetEcmpHashId *AclActionData `protobuf:"bytes,152,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` + ActionSetVrf *AclActionData `protobuf:"bytes,153,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` + ActionSetForwardingClass *AclActionData `protobuf:"bytes,154,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + ActionSetArsMonitoring *AclActionData `protobuf:"bytes,155,opt,name=action_set_ars_monitoring,json=actionSetArsMonitoring,proto3,oneof" json:"action_set_ars_monitoring,omitempty"` + ActionSetArsObject *AclActionData `protobuf:"bytes,156,opt,name=action_set_ars_object,json=actionSetArsObject,proto3,oneof" json:"action_set_ars_object,omitempty"` + ActionDisableArsForwarding *AclActionData `protobuf:"bytes,157,opt,name=action_disable_ars_forwarding,json=actionDisableArsForwarding,proto3,oneof" json:"action_disable_ars_forwarding,omitempty"` + ActionChainRedirect *AclActionData `protobuf:"bytes,158,opt,name=action_chain_redirect,json=actionChainRedirect,proto3,oneof" json:"action_chain_redirect,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2957,6 +3136,41 @@ func (x *CreateAclEntryRequest) GetFieldTamIntType() *AclFieldData { return nil } +func (x *CreateAclEntryRequest) GetFieldInnerSrcMac() *AclFieldData { + if x != nil { + return x.FieldInnerSrcMac + } + return nil +} + +func (x *CreateAclEntryRequest) GetFieldInnerDstMac() *AclFieldData { + if x != nil { + return x.FieldInnerDstMac + } + return nil +} + +func (x *CreateAclEntryRequest) GetFieldVrfId() *AclFieldData { + if x != nil { + return x.FieldVrfId + } + return nil +} + +func (x *CreateAclEntryRequest) GetFieldIpmcNpuMetaDstHit() *AclFieldData { + if x != nil { + return x.FieldIpmcNpuMetaDstHit + } + return nil +} + +func (x *CreateAclEntryRequest) GetFieldTunnelTerminated() *AclFieldData { + if x != nil { + return x.FieldTunnelTerminated + } + return nil +} + func (x *CreateAclEntryRequest) GetActionRedirect() *AclActionData { if x != nil { return x.ActionRedirect @@ -3328,6 +3542,34 @@ func (x *CreateAclEntryRequest) GetActionSetForwardingClass() *AclActionData { return nil } +func (x *CreateAclEntryRequest) GetActionSetArsMonitoring() *AclActionData { + if x != nil { + return x.ActionSetArsMonitoring + } + return nil +} + +func (x *CreateAclEntryRequest) GetActionSetArsObject() *AclActionData { + if x != nil { + return x.ActionSetArsObject + } + return nil +} + +func (x *CreateAclEntryRequest) GetActionDisableArsForwarding() *AclActionData { + if x != nil { + return x.ActionDisableArsForwarding + } + return nil +} + +func (x *CreateAclEntryRequest) GetActionChainRedirect() *AclActionData { + if x != nil { + return x.ActionChainRedirect + } + return nil +} + type CreateAclEntryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -3549,59 +3791,68 @@ type SetAclEntryAttributeRequest struct { FieldIpv6NextHeader *AclFieldData `protobuf:"bytes,93,opt,name=field_ipv6_next_header,json=fieldIpv6NextHeader,proto3,oneof" json:"field_ipv6_next_header,omitempty"` FieldGreKey *AclFieldData `protobuf:"bytes,94,opt,name=field_gre_key,json=fieldGreKey,proto3,oneof" json:"field_gre_key,omitempty"` FieldTamIntType *AclFieldData `protobuf:"bytes,95,opt,name=field_tam_int_type,json=fieldTamIntType,proto3,oneof" json:"field_tam_int_type,omitempty"` - ActionRedirect *AclActionData `protobuf:"bytes,96,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` - ActionEndpointIp *AclActionData `protobuf:"bytes,97,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` - ActionRedirectList *AclActionData `protobuf:"bytes,98,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` - ActionPacketAction *AclActionData `protobuf:"bytes,99,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` - ActionFlood *AclActionData `protobuf:"bytes,100,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` - ActionCounter *AclActionData `protobuf:"bytes,101,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` - ActionMirrorIngress *AclActionData `protobuf:"bytes,102,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` - ActionMirrorEgress *AclActionData `protobuf:"bytes,103,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` - ActionSetPolicer *AclActionData `protobuf:"bytes,104,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` - ActionDecrementTtl *AclActionData `protobuf:"bytes,105,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` - ActionSetTc *AclActionData `protobuf:"bytes,106,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` - ActionSetPacketColor *AclActionData `protobuf:"bytes,107,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` - ActionSetInnerVlanId *AclActionData `protobuf:"bytes,108,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` - ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,109,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` - ActionSetOuterVlanId *AclActionData `protobuf:"bytes,110,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` - ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,111,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` - ActionAddVlanId *AclActionData `protobuf:"bytes,112,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` - ActionAddVlanPri *AclActionData `protobuf:"bytes,113,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` - ActionSetSrcMac *AclActionData `protobuf:"bytes,114,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` - ActionSetDstMac *AclActionData `protobuf:"bytes,115,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` - ActionSetSrcIp *AclActionData `protobuf:"bytes,116,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` - ActionSetDstIp *AclActionData `protobuf:"bytes,117,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` - ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,118,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` - ActionSetDstIpv6 *AclActionData `protobuf:"bytes,119,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` - ActionSetDscp *AclActionData `protobuf:"bytes,120,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` - ActionSetEcn *AclActionData `protobuf:"bytes,121,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` - ActionSetL4SrcPort *AclActionData `protobuf:"bytes,122,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` - ActionSetL4DstPort *AclActionData `protobuf:"bytes,123,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` - ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,124,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` - ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,125,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` - ActionSetAclMetaData *AclActionData `protobuf:"bytes,126,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` - ActionEgressBlockPortList *AclActionData `protobuf:"bytes,127,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` - ActionSetUserTrapId *AclActionData `protobuf:"bytes,128,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` - ActionSetDoNotLearn *AclActionData `protobuf:"bytes,129,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` - ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,130,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` - ActionDtelIntSession *AclActionData `protobuf:"bytes,131,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` - ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,132,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` - ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,133,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` - ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,134,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` - ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,135,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` - ActionNoNat *AclActionData `protobuf:"bytes,136,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` - ActionIntInsert *AclActionData `protobuf:"bytes,137,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` - ActionIntDelete *AclActionData `protobuf:"bytes,138,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` - ActionIntReportFlow *AclActionData `protobuf:"bytes,139,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` - ActionIntReportDrops *AclActionData `protobuf:"bytes,140,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` - ActionIntReportTailDrops *AclActionData `protobuf:"bytes,141,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` - ActionTamIntObject *AclActionData `protobuf:"bytes,142,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` - ActionSetIsolationGroup *AclActionData `protobuf:"bytes,143,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` - ActionMacsecFlow *AclActionData `protobuf:"bytes,144,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` - ActionSetLagHashId *AclActionData `protobuf:"bytes,145,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` - ActionSetEcmpHashId *AclActionData `protobuf:"bytes,146,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` - ActionSetVrf *AclActionData `protobuf:"bytes,147,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` - ActionSetForwardingClass *AclActionData `protobuf:"bytes,148,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + FieldInnerSrcMac *AclFieldData `protobuf:"bytes,96,opt,name=field_inner_src_mac,json=fieldInnerSrcMac,proto3,oneof" json:"field_inner_src_mac,omitempty"` + FieldInnerDstMac *AclFieldData `protobuf:"bytes,97,opt,name=field_inner_dst_mac,json=fieldInnerDstMac,proto3,oneof" json:"field_inner_dst_mac,omitempty"` + FieldVrfId *AclFieldData `protobuf:"bytes,98,opt,name=field_vrf_id,json=fieldVrfId,proto3,oneof" json:"field_vrf_id,omitempty"` + FieldIpmcNpuMetaDstHit *AclFieldData `protobuf:"bytes,99,opt,name=field_ipmc_npu_meta_dst_hit,json=fieldIpmcNpuMetaDstHit,proto3,oneof" json:"field_ipmc_npu_meta_dst_hit,omitempty"` + FieldTunnelTerminated *AclFieldData `protobuf:"bytes,100,opt,name=field_tunnel_terminated,json=fieldTunnelTerminated,proto3,oneof" json:"field_tunnel_terminated,omitempty"` + ActionRedirect *AclActionData `protobuf:"bytes,101,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` + ActionEndpointIp *AclActionData `protobuf:"bytes,102,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` + ActionRedirectList *AclActionData `protobuf:"bytes,103,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` + ActionPacketAction *AclActionData `protobuf:"bytes,104,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` + ActionFlood *AclActionData `protobuf:"bytes,105,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` + ActionCounter *AclActionData `protobuf:"bytes,106,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` + ActionMirrorIngress *AclActionData `protobuf:"bytes,107,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` + ActionMirrorEgress *AclActionData `protobuf:"bytes,108,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` + ActionSetPolicer *AclActionData `protobuf:"bytes,109,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` + ActionDecrementTtl *AclActionData `protobuf:"bytes,110,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` + ActionSetTc *AclActionData `protobuf:"bytes,111,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` + ActionSetPacketColor *AclActionData `protobuf:"bytes,112,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` + ActionSetInnerVlanId *AclActionData `protobuf:"bytes,113,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` + ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,114,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` + ActionSetOuterVlanId *AclActionData `protobuf:"bytes,115,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` + ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,116,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` + ActionAddVlanId *AclActionData `protobuf:"bytes,117,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` + ActionAddVlanPri *AclActionData `protobuf:"bytes,118,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` + ActionSetSrcMac *AclActionData `protobuf:"bytes,119,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` + ActionSetDstMac *AclActionData `protobuf:"bytes,120,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` + ActionSetSrcIp *AclActionData `protobuf:"bytes,121,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` + ActionSetDstIp *AclActionData `protobuf:"bytes,122,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` + ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,123,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` + ActionSetDstIpv6 *AclActionData `protobuf:"bytes,124,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` + ActionSetDscp *AclActionData `protobuf:"bytes,125,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` + ActionSetEcn *AclActionData `protobuf:"bytes,126,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` + ActionSetL4SrcPort *AclActionData `protobuf:"bytes,127,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` + ActionSetL4DstPort *AclActionData `protobuf:"bytes,128,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` + ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,129,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` + ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,130,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` + ActionSetAclMetaData *AclActionData `protobuf:"bytes,131,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` + ActionEgressBlockPortList *AclActionData `protobuf:"bytes,132,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` + ActionSetUserTrapId *AclActionData `protobuf:"bytes,133,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` + ActionSetDoNotLearn *AclActionData `protobuf:"bytes,134,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` + ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,135,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` + ActionDtelIntSession *AclActionData `protobuf:"bytes,136,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` + ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,137,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` + ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,138,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` + ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,139,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` + ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,140,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` + ActionNoNat *AclActionData `protobuf:"bytes,141,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` + ActionIntInsert *AclActionData `protobuf:"bytes,142,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` + ActionIntDelete *AclActionData `protobuf:"bytes,143,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` + ActionIntReportFlow *AclActionData `protobuf:"bytes,144,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` + ActionIntReportDrops *AclActionData `protobuf:"bytes,145,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` + ActionIntReportTailDrops *AclActionData `protobuf:"bytes,146,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` + ActionTamIntObject *AclActionData `protobuf:"bytes,147,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` + ActionSetIsolationGroup *AclActionData `protobuf:"bytes,148,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` + ActionMacsecFlow *AclActionData `protobuf:"bytes,149,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` + ActionSetLagHashId *AclActionData `protobuf:"bytes,150,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` + ActionSetEcmpHashId *AclActionData `protobuf:"bytes,151,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` + ActionSetVrf *AclActionData `protobuf:"bytes,152,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` + ActionSetForwardingClass *AclActionData `protobuf:"bytes,153,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + ActionSetArsMonitoring *AclActionData `protobuf:"bytes,154,opt,name=action_set_ars_monitoring,json=actionSetArsMonitoring,proto3,oneof" json:"action_set_ars_monitoring,omitempty"` + ActionSetArsObject *AclActionData `protobuf:"bytes,155,opt,name=action_set_ars_object,json=actionSetArsObject,proto3,oneof" json:"action_set_ars_object,omitempty"` + ActionDisableArsForwarding *AclActionData `protobuf:"bytes,156,opt,name=action_disable_ars_forwarding,json=actionDisableArsForwarding,proto3,oneof" json:"action_disable_ars_forwarding,omitempty"` + ActionChainRedirect *AclActionData `protobuf:"bytes,157,opt,name=action_chain_redirect,json=actionChainRedirect,proto3,oneof" json:"action_chain_redirect,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4301,6 +4552,41 @@ func (x *SetAclEntryAttributeRequest) GetFieldTamIntType() *AclFieldData { return nil } +func (x *SetAclEntryAttributeRequest) GetFieldInnerSrcMac() *AclFieldData { + if x != nil { + return x.FieldInnerSrcMac + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetFieldInnerDstMac() *AclFieldData { + if x != nil { + return x.FieldInnerDstMac + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetFieldVrfId() *AclFieldData { + if x != nil { + return x.FieldVrfId + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetFieldIpmcNpuMetaDstHit() *AclFieldData { + if x != nil { + return x.FieldIpmcNpuMetaDstHit + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetFieldTunnelTerminated() *AclFieldData { + if x != nil { + return x.FieldTunnelTerminated + } + return nil +} + func (x *SetAclEntryAttributeRequest) GetActionRedirect() *AclActionData { if x != nil { return x.ActionRedirect @@ -4672,6 +4958,34 @@ func (x *SetAclEntryAttributeRequest) GetActionSetForwardingClass() *AclActionDa return nil } +func (x *SetAclEntryAttributeRequest) GetActionSetArsMonitoring() *AclActionData { + if x != nil { + return x.ActionSetArsMonitoring + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetActionSetArsObject() *AclActionData { + if x != nil { + return x.ActionSetArsObject + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetActionDisableArsForwarding() *AclActionData { + if x != nil { + return x.ActionDisableArsForwarding + } + return nil +} + +func (x *SetAclEntryAttributeRequest) GetActionChainRedirect() *AclActionData { + if x != nil { + return x.ActionChainRedirect + } + return nil +} + type SetAclEntryAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -5789,13 +6103,14 @@ func (x *GetAclTableGroupAttributeResponse) GetAttr() *AclTableGroupAttribute { } type CreateAclTableGroupMemberRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - AclTableGroupId *uint64 `protobuf:"varint,2,opt,name=acl_table_group_id,json=aclTableGroupId,proto3,oneof" json:"acl_table_group_id,omitempty"` - AclTableId *uint64 `protobuf:"varint,3,opt,name=acl_table_id,json=aclTableId,proto3,oneof" json:"acl_table_id,omitempty"` - Priority *uint32 `protobuf:"varint,4,opt,name=priority,proto3,oneof" json:"priority,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"` + AclTableGroupId *uint64 `protobuf:"varint,2,opt,name=acl_table_group_id,json=aclTableGroupId,proto3,oneof" json:"acl_table_group_id,omitempty"` + AclTableId *uint64 `protobuf:"varint,3,opt,name=acl_table_id,json=aclTableId,proto3,oneof" json:"acl_table_id,omitempty"` + Priority *uint32 `protobuf:"varint,4,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + AclTableChainGroupId *uint64 `protobuf:"varint,5,opt,name=acl_table_chain_group_id,json=aclTableChainGroupId,proto3,oneof" json:"acl_table_chain_group_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateAclTableGroupMemberRequest) Reset() { @@ -5856,6 +6171,13 @@ func (x *CreateAclTableGroupMemberRequest) GetPriority() uint32 { return 0 } +func (x *CreateAclTableGroupMemberRequest) GetAclTableChainGroupId() uint64 { + if x != nil && x.AclTableChainGroupId != nil { + return *x.AclTableChainGroupId + } + return 0 +} + type CreateAclTableGroupMemberResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -5980,6 +6302,94 @@ func (*RemoveAclTableGroupMemberResponse) Descriptor() ([]byte, []int) { return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{37} } +type SetAclTableGroupMemberAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + AclTableChainGroupId *uint64 `protobuf:"varint,2,opt,name=acl_table_chain_group_id,json=aclTableChainGroupId,proto3,oneof" json:"acl_table_chain_group_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetAclTableGroupMemberAttributeRequest) Reset() { + *x = SetAclTableGroupMemberAttributeRequest{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetAclTableGroupMemberAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetAclTableGroupMemberAttributeRequest) ProtoMessage() {} + +func (x *SetAclTableGroupMemberAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[38] + 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 SetAclTableGroupMemberAttributeRequest.ProtoReflect.Descriptor instead. +func (*SetAclTableGroupMemberAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{38} +} + +func (x *SetAclTableGroupMemberAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *SetAclTableGroupMemberAttributeRequest) GetAclTableChainGroupId() uint64 { + if x != nil && x.AclTableChainGroupId != nil { + return *x.AclTableChainGroupId + } + return 0 +} + +type SetAclTableGroupMemberAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetAclTableGroupMemberAttributeResponse) Reset() { + *x = SetAclTableGroupMemberAttributeResponse{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetAclTableGroupMemberAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetAclTableGroupMemberAttributeResponse) ProtoMessage() {} + +func (x *SetAclTableGroupMemberAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[39] + 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 SetAclTableGroupMemberAttributeResponse.ProtoReflect.Descriptor instead. +func (*SetAclTableGroupMemberAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{39} +} + type GetAclTableGroupMemberAttributeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -5990,7 +6400,7 @@ type GetAclTableGroupMemberAttributeRequest struct { func (x *GetAclTableGroupMemberAttributeRequest) Reset() { *x = GetAclTableGroupMemberAttributeRequest{} - mi := &file_dataplane_proto_sai_acl_proto_msgTypes[38] + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6002,7 +6412,7 @@ func (x *GetAclTableGroupMemberAttributeRequest) String() string { func (*GetAclTableGroupMemberAttributeRequest) ProtoMessage() {} func (x *GetAclTableGroupMemberAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_acl_proto_msgTypes[38] + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6015,7 +6425,7 @@ func (x *GetAclTableGroupMemberAttributeRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use GetAclTableGroupMemberAttributeRequest.ProtoReflect.Descriptor instead. func (*GetAclTableGroupMemberAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{38} + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{40} } func (x *GetAclTableGroupMemberAttributeRequest) GetOid() uint64 { @@ -6041,7 +6451,7 @@ type GetAclTableGroupMemberAttributeResponse struct { func (x *GetAclTableGroupMemberAttributeResponse) Reset() { *x = GetAclTableGroupMemberAttributeResponse{} - mi := &file_dataplane_proto_sai_acl_proto_msgTypes[39] + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6053,7 +6463,7 @@ func (x *GetAclTableGroupMemberAttributeResponse) String() string { func (*GetAclTableGroupMemberAttributeResponse) ProtoMessage() {} func (x *GetAclTableGroupMemberAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_acl_proto_msgTypes[39] + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6066,7 +6476,7 @@ func (x *GetAclTableGroupMemberAttributeResponse) ProtoReflect() protoreflect.Me // Deprecated: Use GetAclTableGroupMemberAttributeResponse.ProtoReflect.Descriptor instead. func (*GetAclTableGroupMemberAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{39} + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{41} } func (x *GetAclTableGroupMemberAttributeResponse) GetAttr() *AclTableGroupMemberAttribute { @@ -6076,32 +6486,312 @@ func (x *GetAclTableGroupMemberAttributeResponse) GetAttr() *AclTableGroupMember return nil } -var File_dataplane_proto_sai_acl_proto protoreflect.FileDescriptor +type CreateAclTableChainGroupRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + Type *AclTableChainGroupType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.AclTableChainGroupType,oneof" json:"type,omitempty"` + Stage *AclTableChainGroupStage `protobuf:"varint,3,opt,name=stage,proto3,enum=lemming.dataplane.sai.AclTableChainGroupStage,oneof" json:"stage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} -var file_dataplane_proto_sai_acl_proto_rawDesc = []byte{ - 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x61, 0x63, 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, 0x22, 0x8c, 0x40, 0x0a, 0x15, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 0x49, 0x0a, 0x09, 0x61, 0x63, - 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x62, 0x69, 0x6e, - 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x03, 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, - 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, 0x63, 0x6c, 0x42, 0x69, 0x6e, - 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x5d, 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, +func (x *CreateAclTableChainGroupRequest) Reset() { + *x = CreateAclTableChainGroupRequest{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateAclTableChainGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAclTableChainGroupRequest) ProtoMessage() {} + +func (x *CreateAclTableChainGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[42] + 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 CreateAclTableChainGroupRequest.ProtoReflect.Descriptor instead. +func (*CreateAclTableChainGroupRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{42} +} + +func (x *CreateAclTableChainGroupRequest) GetSwitch() uint64 { + if x != nil { + return x.Switch + } + return 0 +} + +func (x *CreateAclTableChainGroupRequest) GetType() AclTableChainGroupType { + if x != nil && x.Type != nil { + return *x.Type + } + return AclTableChainGroupType_ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED +} + +func (x *CreateAclTableChainGroupRequest) GetStage() AclTableChainGroupStage { + if x != nil && x.Stage != nil { + return *x.Stage + } + return AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED +} + +type CreateAclTableChainGroupResponse 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 *CreateAclTableChainGroupResponse) Reset() { + *x = CreateAclTableChainGroupResponse{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateAclTableChainGroupResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAclTableChainGroupResponse) ProtoMessage() {} + +func (x *CreateAclTableChainGroupResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[43] + 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 CreateAclTableChainGroupResponse.ProtoReflect.Descriptor instead. +func (*CreateAclTableChainGroupResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{43} +} + +func (x *CreateAclTableChainGroupResponse) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveAclTableChainGroupRequest 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 *RemoveAclTableChainGroupRequest) Reset() { + *x = RemoveAclTableChainGroupRequest{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveAclTableChainGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveAclTableChainGroupRequest) ProtoMessage() {} + +func (x *RemoveAclTableChainGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[44] + 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 RemoveAclTableChainGroupRequest.ProtoReflect.Descriptor instead. +func (*RemoveAclTableChainGroupRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{44} +} + +func (x *RemoveAclTableChainGroupRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveAclTableChainGroupResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RemoveAclTableChainGroupResponse) Reset() { + *x = RemoveAclTableChainGroupResponse{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveAclTableChainGroupResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveAclTableChainGroupResponse) ProtoMessage() {} + +func (x *RemoveAclTableChainGroupResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[45] + 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 RemoveAclTableChainGroupResponse.ProtoReflect.Descriptor instead. +func (*RemoveAclTableChainGroupResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{45} +} + +type GetAclTableChainGroupAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + AttrType []AclTableChainGroupAttr `protobuf:"varint,2,rep,packed,name=attr_type,json=attrType,proto3,enum=lemming.dataplane.sai.AclTableChainGroupAttr" json:"attr_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAclTableChainGroupAttributeRequest) Reset() { + *x = GetAclTableChainGroupAttributeRequest{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAclTableChainGroupAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAclTableChainGroupAttributeRequest) ProtoMessage() {} + +func (x *GetAclTableChainGroupAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[46] + 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 GetAclTableChainGroupAttributeRequest.ProtoReflect.Descriptor instead. +func (*GetAclTableChainGroupAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{46} +} + +func (x *GetAclTableChainGroupAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *GetAclTableChainGroupAttributeRequest) GetAttrType() []AclTableChainGroupAttr { + if x != nil { + return x.AttrType + } + return nil +} + +type GetAclTableChainGroupAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Attr *AclTableChainGroupAttribute `protobuf:"bytes,1,opt,name=attr,proto3" json:"attr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAclTableChainGroupAttributeResponse) Reset() { + *x = GetAclTableChainGroupAttributeResponse{} + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAclTableChainGroupAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAclTableChainGroupAttributeResponse) ProtoMessage() {} + +func (x *GetAclTableChainGroupAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_acl_proto_msgTypes[47] + 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 GetAclTableChainGroupAttributeResponse.ProtoReflect.Descriptor instead. +func (*GetAclTableChainGroupAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_acl_proto_rawDescGZIP(), []int{47} +} + +func (x *GetAclTableChainGroupAttributeResponse) GetAttr() *AclTableChainGroupAttribute { + if x != nil { + return x.Attr + } + return nil +} + +var File_dataplane_proto_sai_acl_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_acl_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x61, 0x63, 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, 0x22, 0xd4, 0x46, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 0x49, 0x0a, 0x09, 0x61, 0x63, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x62, 0x69, 0x6e, + 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x03, 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, + 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, 0x63, 0x6c, 0x42, 0x69, 0x6e, + 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x5d, 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 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, 0x41, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, @@ -6457,3504 +7147,3865 @@ var file_dataplane_proto_sai_acl_proto_rawDesc = []byte{ 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x61, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5b, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x61, 0x6d, 0x49, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x08, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, + 0x62, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x5c, 0x52, + 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x4d, 0x61, + 0x63, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x63, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5d, 0x52, 0x10, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, + 0x12, 0x2d, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, + 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x5e, + 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x72, 0x66, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x48, 0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, + 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x65, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x5f, 0x52, 0x16, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x6d, 0x63, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, + 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x17, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x65, 0x48, 0x60, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x66, + 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x67, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x61, + 0x52, 0x11, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x18, 0x68, 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, 0x6a, 0x48, 0x62, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x42, 0x69, 0x74, 0x73, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, + 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, + 0x69, 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, 0x6b, 0x48, 0x63, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x42, 0x69, 0x74, 0x73, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x1a, 0x4b, + 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, + 0xad, 0x0f, 0x08, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, + 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, - 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, - 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, + 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, + 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, + 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, + 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, + 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, + 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, - 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, + 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, - 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, - 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, - 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, - 0x6f, 0x6d, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, - 0x54, 0x61, 0x62, 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, 0x18, - 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, + 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, + 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, + 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, + 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, + 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, + 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, + 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, + 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, + 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x22, + 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 0x29, 0x0a, 0x15, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 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, 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, 0x41, 0x63, 0x6c, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x22, 0xeb, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, + 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, 0x26, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 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, 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, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x76, 0x36, 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, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x33, 0x18, 0x06, 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, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xbe, 0x8f, 0x01, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x26, 0x0a, 0x08, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x03, 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, 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, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x05, 0x20, + 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, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, + 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, + 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x07, 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, 0x06, 0x48, 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, + 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x08, 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, 0x07, 0x48, 0x06, 0x52, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, + 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, 0x09, 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, 0x08, 0x48, + 0x07, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, + 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 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, 0x09, 0x48, 0x08, 0x52, 0x0c, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, + 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x0b, 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, 0x09, 0x52, 0x11, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, + 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x0c, 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, 0x0b, 0x48, 0x0a, 0x52, + 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, + 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x0d, 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, 0x04, - 0x48, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, - 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x06, 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, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, - 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x07, - 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, - 0x06, 0x48, 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, - 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, - 0x31, 0x18, 0x08, 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, 0x07, 0x48, 0x06, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, - 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, - 0x6f, 0x72, 0x64, 0x30, 0x18, 0x09, 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, 0x08, 0x48, 0x07, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, - 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, - 0x36, 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, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, - 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, - 0x0b, 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, 0x09, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, - 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, + 0x48, 0x0b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, + 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, + 0x18, 0x0e, 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, 0x0d, 0x48, 0x0c, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, + 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x18, 0x0f, 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, 0x0e, 0x48, 0x0d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, + 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x10, 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, 0x0f, 0x48, 0x0e, 0x52, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, + 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, + 0x61, 0x63, 0x18, 0x11, 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, 0x0b, 0x48, 0x0a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, - 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, - 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x0d, 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, 0x0c, 0x48, 0x0b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, - 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, + 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x12, 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, 0x0d, 0x48, 0x0c, 0x52, 0x11, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, - 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0b, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, + 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x13, 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, 0x12, + 0x48, 0x11, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x18, 0x14, 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, 0x13, 0x48, 0x12, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x15, 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, 0x0e, 0x48, 0x0d, - 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, - 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x10, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, + 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x16, 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, 0x15, 0x48, 0x14, 0x52, + 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x17, 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, 0x16, 0x48, 0x15, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x18, 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, - 0x0f, 0x48, 0x0e, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, - 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x11, 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, 0x10, 0x48, 0x0f, 0x52, - 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, - 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, - 0x18, 0x12, 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, 0x11, 0x48, 0x10, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x4d, - 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x17, 0x48, 0x16, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x19, 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, 0x18, 0x48, 0x17, 0x52, 0x0b, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1a, 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, 0x19, + 0x48, 0x18, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1b, 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, 0x12, 0x48, 0x11, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x14, 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, 0x13, 0x48, 0x12, 0x52, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, - 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x18, 0x15, 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, 0x14, 0x48, 0x13, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x19, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x1c, 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, 0x15, 0x48, 0x14, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, - 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x17, 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, 0x16, - 0x48, 0x15, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x18, 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, 0x17, 0x48, 0x16, 0x52, 0x0d, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, - 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x19, + 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x1a, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, + 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1d, 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, 0x1c, 0x48, 0x1b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, + 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x1e, 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, 0x1d, 0x48, 0x1c, 0x52, 0x11, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, + 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1f, 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, 0x1e, 0x48, 0x1d, 0x52, 0x10, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x20, 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, 0x1f, 0x48, 0x1e, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, + 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x21, 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, - 0x18, 0x48, 0x17, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1a, 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, 0x19, 0x48, 0x18, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1b, 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, 0x1a, - 0x48, 0x19, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1c, 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, 0x1b, 0x48, 0x1a, 0x52, - 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1d, 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, 0x1c, 0x48, - 0x1b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, - 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, - 0x1e, 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, 0x1d, 0x48, 0x1c, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, - 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x1f, 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, 0x1e, 0x48, 0x1d, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x70, 0x72, 0x69, 0x18, 0x20, 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, 0x1f, 0x48, 0x1e, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x21, 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, 0x20, 0x48, 0x1f, 0x52, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, - 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x22, 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, 0x21, 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5b, - 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x23, 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, 0x22, 0x48, 0x21, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, - 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x24, 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, 0x23, 0x48, 0x22, 0x52, 0x13, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x20, 0x48, 0x1f, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, + 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x22, + 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, + 0x21, 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x23, 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, 0x22, 0x48, 0x21, + 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x25, + 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x24, 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, - 0x24, 0x48, 0x23, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, - 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x26, 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, 0x25, 0x48, 0x24, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x27, 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, 0x26, 0x48, 0x25, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, - 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x18, 0x28, 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, 0x27, 0x48, 0x26, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x23, 0x48, 0x22, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, + 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x25, 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, 0x24, 0x48, 0x23, 0x52, 0x13, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x26, 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, 0x28, 0x48, 0x27, 0x52, 0x14, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x2a, 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, 0x29, 0x48, 0x28, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x2b, 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, 0x2a, - 0x48, 0x29, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x2c, 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, 0x2b, - 0x48, 0x2a, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2d, 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, 0x2c, 0x48, - 0x2b, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, - 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, 0x48, 0x24, 0x52, 0x0e, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, + 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x27, 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, 0x26, 0x48, 0x25, 0x52, 0x13, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x28, 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, 0x2d, 0x48, 0x2c, - 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, - 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, - 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x48, 0x26, + 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, + 0x29, 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, 0x2e, 0x48, 0x2d, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, 0x61, - 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, - 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x0f, 0x28, 0x48, 0x27, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, + 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, + 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2a, 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, 0x2f, 0x48, 0x2e, 0x52, 0x0d, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x28, 0x52, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x2b, 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, 0x2a, 0x48, 0x29, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x2c, 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, 0x2b, 0x48, 0x2a, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2d, 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, 0x30, 0x48, 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, - 0x67, 0x18, 0x32, 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, 0x31, 0x48, 0x30, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, - 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x33, 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, 0x32, 0x48, 0x31, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, - 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x2b, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x74, 0x6f, 0x73, 0x18, 0x2e, 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, 0x2d, 0x48, 0x2c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, + 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x2f, 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, 0x2e, 0x48, 0x2d, 0x52, 0x0c, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, + 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x18, 0x30, 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, 0x2f, 0x48, 0x2e, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x70, 0x46, + 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x31, 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, 0x30, 0x48, + 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x18, 0x32, 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, 0x31, 0x48, 0x30, 0x52, 0x0e, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x33, 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, 0x33, 0x48, 0x32, 0x52, - 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, - 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, - 0x34, 0x48, 0x33, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x36, 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, 0x35, 0x48, 0x34, 0x52, 0x0d, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x37, 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, 0x36, 0x48, 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, - 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x32, 0x48, 0x31, 0x52, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x74, 0x63, 0x18, 0x34, 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, 0x37, 0x48, 0x36, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, - 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, 0x32, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, + 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 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, 0x34, 0x48, 0x33, 0x52, 0x0d, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, + 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x36, 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, 0x38, 0x48, 0x37, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x3a, 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, 0x39, - 0x48, 0x38, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, - 0x6e, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, - 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x3b, 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, 0x3a, 0x48, 0x39, - 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x61, 0x73, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, 0x3c, 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, 0x3b, 0x48, 0x3a, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x3d, 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, 0x3c, 0x48, 0x3b, - 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x30, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, - 0x74, 0x6c, 0x18, 0x3e, 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, 0x3d, 0x48, 0x3c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, - 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x3f, 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, 0x3e, 0x48, 0x3d, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x40, 0x20, 0x01, + 0xad, 0x0f, 0x35, 0x48, 0x34, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x37, 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, 0x3f, 0x48, - 0x3e, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x30, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, 0x48, + 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x38, 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, 0x37, 0x48, 0x36, 0x52, + 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x39, 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, 0x38, 0x48, 0x37, 0x52, 0x0f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x3a, 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, 0x39, 0x48, 0x38, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x74, 0x61, 0x67, 0x18, 0x3b, 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, 0x40, 0x48, 0x3f, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x39, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x48, + 0x61, 0x73, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, + 0x18, 0x3c, 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, 0x3b, 0x48, 0x3a, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x3d, 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, 0x3c, 0x48, 0x3b, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x3e, 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, 0x41, 0x48, 0x40, 0x52, - 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x3c, 0x52, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x18, - 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x18, + 0x3f, 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, 0x42, 0x48, 0x41, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x31, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, - 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x0f, 0x3e, 0x48, 0x3d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, + 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x40, 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, 0x43, 0x48, 0x42, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x3e, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x45, 0x20, 0x01, 0x28, + 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x41, 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, 0x44, 0x48, 0x43, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x48, 0x3f, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x32, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, - 0x74, 0x6c, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x42, 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, 0x45, 0x48, 0x44, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, + 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x48, 0x40, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, + 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x43, 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, 0x46, 0x48, 0x45, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x48, 0x41, 0x52, 0x12, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x48, 0x20, 0x01, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x44, 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, 0x47, 0x48, - 0x46, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x32, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, + 0x42, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x31, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x45, 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, 0x48, 0x48, 0x47, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x43, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x46, 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, 0x49, 0x48, 0x48, 0x52, - 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x48, 0x44, 0x52, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, - 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x18, + 0x47, 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, 0x4a, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, - 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x0f, 0x46, 0x48, 0x45, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, + 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x48, 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, 0x4b, 0x48, 0x4a, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x46, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x49, 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, 0x4c, 0x48, 0x4b, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x47, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x34, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, - 0x74, 0x6c, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x4a, 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, 0x4d, 0x48, 0x4c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, + 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x48, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, + 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4b, 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, 0x4e, 0x48, 0x4d, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, 0x70, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x50, 0x20, 0x01, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4c, 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, 0x4f, 0x48, - 0x4e, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x34, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, + 0x4a, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x4d, 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, 0x50, 0x48, 0x4f, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, - 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, - 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x52, 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, 0x51, - 0x48, 0x50, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1c, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x53, 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, 0x52, 0x48, - 0x51, 0x52, 0x18, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x54, 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, 0x53, 0x48, 0x52, 0x52, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, - 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x55, 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, 0x54, 0x48, 0x53, 0x52, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x56, 0x20, 0x01, 0x28, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x4b, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4e, 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, 0x4d, 0x48, 0x4c, 0x52, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, + 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x18, + 0x4f, 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, 0x4e, 0x48, 0x4d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, + 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x50, 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, 0x4f, 0x48, 0x4e, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x51, 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, 0x55, 0x48, 0x54, - 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x68, 0x69, 0x74, 0x18, 0x57, 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, 0x56, 0x48, 0x55, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, - 0x64, 0x62, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x4f, + 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x52, 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, 0x57, 0x48, 0x56, 0x52, 0x1a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, - 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1c, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x59, 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, 0x58, 0x48, 0x57, 0x52, 0x17, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, - 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x5a, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x50, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, + 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x18, 0x53, 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, 0x52, 0x48, 0x51, 0x52, 0x18, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x54, 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, - 0x59, 0x48, 0x58, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, - 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5b, 0x20, + 0x53, 0x48, 0x52, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x18, 0x55, 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, 0x54, 0x48, 0x53, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x6c, 0x61, + 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x56, 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, 0x55, 0x48, 0x54, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, + 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, + 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x57, 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, 0x56, 0x48, 0x55, + 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, + 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, 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, 0x5a, - 0x48, 0x59, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x65, 0x74, 0x68, 0x53, 0x79, 0x6e, - 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x92, 0x01, 0x0a, 0x1c, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x4a, 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, 0x41, 0x63, - 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x5b, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x61, 0x0a, - 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, + 0x48, 0x56, 0x52, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, + 0x72, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x6f, 0x0a, 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, + 0x74, 0x18, 0x59, 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, 0x58, 0x48, 0x57, 0x52, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, + 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x5a, 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, 0x59, 0x48, 0x58, 0x52, 0x0e, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x60, + 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, + 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5b, 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, 0x5c, 0x48, 0x5a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x5e, 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, 0x5d, 0x48, 0x5b, 0x52, - 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x5f, 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, 0x5e, 0x48, 0x5c, 0x52, 0x0b, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, - 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x60, 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, 0x5f, 0x48, 0x5d, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, - 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, - 0x61, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x60, 0x48, 0x5e, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x62, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x61, 0x48, 0x5f, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x59, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x41, 0x65, 0x74, 0x68, 0x53, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x92, 0x01, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, + 0x6e, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 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, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x60, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x63, - 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x18, 0x75, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, + 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5d, 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, 0x5c, + 0x48, 0x5a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x5e, 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, 0x5d, 0x48, 0x5b, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, + 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, + 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x5f, 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, 0x5e, 0x48, 0x5c, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x60, 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, 0x5f, 0x48, 0x5d, + 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x61, 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, 0x60, 0x48, 0x5e, + 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x4d, + 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x62, 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, 0x61, 0x48, + 0x5f, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, + 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x63, 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, 0x62, 0x48, 0x60, 0x52, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x56, 0x72, 0x66, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1b, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x64, 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, 0x63, 0x48, 0x61, 0x52, 0x16, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x6d, 0x63, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, + 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x65, 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, 0x64, 0x48, 0x62, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x66, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x61, 0x52, 0x12, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, - 0x6f, 0x6f, 0x64, 0x18, 0x65, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x62, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x66, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, - 0x63, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x67, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, - 0x48, 0x64, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x68, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x65, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, 0x63, 0x52, 0x0e, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x67, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x66, 0x52, 0x10, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x48, 0x64, 0x52, 0x10, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x68, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x67, 0x52, 0x12, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, - 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x68, 0x52, 0x0b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x6c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x69, 0x52, 0x14, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x6d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x6a, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x6e, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x6d, 0x48, 0x6b, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, - 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x69, - 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x65, 0x52, 0x12, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x69, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x68, 0x48, 0x66, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x6a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x6c, - 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, - 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x6d, 0x52, 0x15, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, - 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x71, 0x20, 0x01, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x67, + 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x68, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x6c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x69, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x6a, 0x52, + 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x6e, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, - 0x48, 0x6e, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, 0x61, - 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x72, 0x20, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, + 0x48, 0x6b, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, + 0x6f, 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, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x6e, 0x48, 0x6c, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x71, 0x48, 0x6f, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, - 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x73, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x72, 0x48, 0x70, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, - 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x74, + 0x6f, 0x48, 0x6d, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x71, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x73, 0x48, 0x71, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, - 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x75, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x74, 0x48, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, - 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, - 0x73, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x49, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x77, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, - 0x74, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x49, - 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x78, 0x20, + 0x0f, 0x70, 0x48, 0x6e, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, + 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x72, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x6f, 0x52, + 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, + 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x73, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x72, 0x48, 0x70, 0x52, 0x15, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, + 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x74, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x73, 0x48, 0x71, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x75, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x77, 0x48, 0x75, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, - 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, 0x48, - 0x76, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x63, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x74, 0x48, 0x72, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, + 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, + 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, 0x73, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, + 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x70, 0x72, 0x69, 0x18, 0x77, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, 0x74, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, + 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x77, 0x52, 0x0c, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x77, 0x48, 0x75, 0x52, 0x0f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, 0x48, 0x76, 0x52, 0x0f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x18, 0x7a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x77, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x18, 0x7b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x78, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x7c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x79, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, + 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x18, 0x7d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x7a, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, + 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x18, 0x7e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x7b, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, + 0x48, 0x7c, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x80, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x7f, 0x48, 0x7d, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, + 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x16, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x81, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x78, 0x52, 0x12, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7c, 0x20, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x48, 0x7e, 0x52, 0x12, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x82, 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, 0x63, 0x6c, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, + 0x01, 0x48, 0x7f, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x7f, 0x0a, 0x21, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 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, 0x18, 0x83, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x7b, 0x48, 0x79, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, - 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x22, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 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, - 0x18, 0x7d, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x7a, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x7c, 0x0a, 0x21, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, - 0x7e, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x7d, 0x48, 0x7b, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x82, 0x01, 0x48, 0x80, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 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, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x7c, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x80, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x7d, 0x52, 0x19, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x84, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x48, 0x7e, 0x52, 0x13, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x18, - 0x82, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x7f, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x18, 0x83, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, - 0x48, 0x80, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6c, 0x44, 0x74, - 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x84, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x81, 0x01, 0x52, - 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x85, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, - 0x48, 0x82, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x44, - 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, - 0x48, 0x83, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x54, - 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x81, 0x01, 0x52, 0x14, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, + 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x85, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, 0x82, 0x01, + 0x52, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, + 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, - 0x84, 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, - 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, - 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x88, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x85, 0x01, 0x52, 0x1a, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, - 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0d, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x89, 0x01, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, + 0x83, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, + 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x18, 0x87, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x84, 0x01, 0x52, 0x13, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, + 0x61, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, + 0x70, 0x18, 0x88, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x85, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x63, 0x6c, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, + 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x89, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x88, 0x01, 0x48, 0x86, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x4e, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x8a, 0x01, 0x20, 0x01, + 0x0f, 0x88, 0x01, 0x48, 0x86, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, + 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, + 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x8a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x87, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, + 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x8b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, 0x01, 0x48, 0x88, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x54, 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, + 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, + 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x18, 0x8c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x89, 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, - 0x01, 0x48, 0x87, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x49, - 0x6e, 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x8b, 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x8a, 0x01, 0x48, 0x88, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, + 0x01, 0x48, 0x8a, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x8e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x89, 0x01, 0x52, 0x13, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6c, - 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, - 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, - 0x70, 0x73, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x0b, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x4e, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, + 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, + 0x72, 0x74, 0x18, 0x8f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x69, 0x6c, - 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x18, 0x90, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x8d, 0x01, 0x52, 0x0f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x91, 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, 0x63, 0x6c, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, + 0x01, 0x48, 0x8e, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x92, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8f, 0x01, + 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, + 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x93, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x48, + 0x90, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x54, 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, + 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x94, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x91, + 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x95, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, 0x92, 0x01, 0x52, + 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, + 0x77, 0x18, 0x96, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x90, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x8d, 0x01, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x91, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, - 0x48, 0x8e, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x64, 0x18, 0x92, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x93, 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x92, 0x01, 0x48, 0x90, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, - 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, - 0x18, 0x94, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x91, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x93, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, + 0x68, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, + 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x97, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, - 0x92, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x1a, - 0x70, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x09, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, - 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, - 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, - 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, + 0x94, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x69, 0x64, 0x18, 0x98, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x48, 0x95, 0x01, 0x52, 0x13, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x18, 0x99, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x98, 0x01, 0x48, 0x96, 0x01, + 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, + 0x01, 0x12, 0x73, 0x0a, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x18, 0x9a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x99, 0x01, 0x48, 0x97, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x69, 0x6e, 0x67, 0x18, 0x9b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x98, 0x01, 0x52, 0x16, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x72, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x9c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, 0x48, 0x99, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x41, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x77, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x18, 0x9d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9c, 0x01, 0x48, 0x9a, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x15, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x18, 0x9e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x48, 0x9b, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x88, 0x01, 0x01, 0x1a, 0x70, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x09, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, + 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, + 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, - 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, - 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, - 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, + 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, + 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, + 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, + 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, + 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, + 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, + 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, + 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, + 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, - 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, - 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, - 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, - 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, - 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, + 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, + 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, + 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, + 0x66, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, + 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x24, 0x0a, 0x22, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1b, 0x0a, 0x19, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, - 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, - 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, 0x24, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, - 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, - 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, - 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x2a, 0x0a, 0x16, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x63, 0x6c, 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, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x8f, 0x01, - 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, - 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, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x04, 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, 0x04, 0x48, 0x02, 0x52, 0x0c, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 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, 0x03, 0x52, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, - 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x06, 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, 0x06, 0x48, 0x04, 0x52, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, - 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x07, 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, 0x07, 0x48, - 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, - 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, - 0x08, 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, 0x08, 0x48, 0x06, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, - 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x09, 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, 0x09, 0x48, - 0x07, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, - 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 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, - 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, - 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x0b, 0x20, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, + 0x0a, 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x24, 0x0a, 0x22, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 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, 0x1b, 0x0a, 0x19, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, + 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, + 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, + 0x24, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, + 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, + 0x70, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, + 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, + 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x1c, 0x0a, 0x1a, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x29, 0x0a, 0x15, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 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, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xb2, 0x98, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 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, 0x00, + 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x04, 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, 0x0b, - 0x48, 0x09, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, - 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x02, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, + 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 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, 0x03, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, + 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x06, + 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, + 0x06, 0x48, 0x04, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, + 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, + 0x31, 0x18, 0x07, 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, 0x07, 0x48, 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, + 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, + 0x6f, 0x72, 0x64, 0x30, 0x18, 0x08, 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, 0x08, 0x48, 0x06, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, + 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x18, 0x09, 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, 0x09, 0x48, 0x07, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, + 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 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, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, + 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, + 0x64, 0x32, 0x18, 0x0b, 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, 0x0b, 0x48, 0x09, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, + 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, + 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x0c, 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, 0x0c, 0x48, 0x0a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, + 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, 0x0d, 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, 0x0d, 0x48, 0x0b, 0x52, 0x11, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, + 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0e, 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, 0x0e, 0x48, 0x0c, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, + 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0f, + 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, + 0x0f, 0x48, 0x0d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, + 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x10, 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, 0x10, 0x48, 0x0e, 0x52, + 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, + 0x18, 0x11, 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, 0x0c, 0x48, 0x0a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, - 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, - 0x72, 0x64, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x4d, + 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x12, 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, 0x12, 0x48, 0x10, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x13, 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, 0x13, 0x48, 0x11, 0x52, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, + 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x18, 0x14, 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, 0x0d, 0x48, 0x0b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, - 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x61, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x18, 0x15, 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, 0x15, 0x48, 0x13, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, + 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x16, 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, 0x16, + 0x48, 0x14, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x17, 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, 0x0e, 0x48, 0x0c, 0x52, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, - 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0f, 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, 0x0f, 0x48, 0x0d, 0x52, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, - 0x36, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x10, 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, 0x10, 0x48, 0x0e, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x11, 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, 0x11, 0x48, 0x0f, - 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, - 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x18, 0x12, 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, 0x12, 0x48, 0x10, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x69, 0x70, 0x18, 0x13, 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, 0x13, 0x48, 0x11, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x14, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x15, 0x52, 0x0d, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, + 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 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, - 0x14, 0x48, 0x12, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, - 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x15, 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, 0x15, - 0x48, 0x13, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, - 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x16, 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, 0x16, 0x48, 0x14, 0x52, 0x0c, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, - 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x17, 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, 0x17, 0x48, 0x15, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, - 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 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, 0x18, 0x48, 0x16, 0x52, 0x0b, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, - 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x19, 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, 0x19, 0x48, 0x17, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1a, 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, 0x1a, 0x48, 0x18, 0x52, 0x0c, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, - 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x18, 0x48, 0x16, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x19, 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, 0x1b, 0x48, 0x19, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1c, 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, 0x1c, 0x48, 0x1a, 0x52, 0x11, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, - 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x17, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1a, 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, 0x1a, + 0x48, 0x18, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 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, 0x1d, 0x48, 0x1b, 0x52, - 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, - 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x19, 0x52, + 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1c, 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, 0x1e, 0x48, - 0x1c, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, - 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1f, - 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, - 0x1f, 0x48, 0x1d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, - 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, - 0x69, 0x18, 0x20, 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, 0x20, 0x48, 0x1e, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, + 0x1a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, + 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, + 0x1d, 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, 0x1d, 0x48, 0x1b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, + 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x1e, 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, 0x21, 0x48, 0x1f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x53, - 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x22, + 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x1c, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, + 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x18, 0x1f, 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, 0x1f, 0x48, 0x1d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x61, + 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x20, 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, 0x20, 0x48, 0x1e, 0x52, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, + 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x21, 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, 0x21, 0x48, 0x1f, 0x52, 0x0e, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5b, + 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x22, 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, 0x22, 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, + 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x23, 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, 0x23, 0x48, 0x21, 0x52, 0x13, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x24, 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, - 0x22, 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x24, 0x48, 0x22, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, + 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x25, 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, 0x25, 0x48, 0x23, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x26, 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, 0x23, 0x48, 0x21, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x66, - 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x24, 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, 0x24, 0x48, 0x22, 0x52, 0x13, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x25, 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, 0x25, 0x48, 0x23, 0x52, - 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x26, 0x20, 0x01, + 0x93, 0xad, 0x0f, 0x26, 0x48, 0x24, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, + 0x65, 0x72, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, + 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x27, 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, 0x27, 0x48, 0x25, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x28, 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, 0x28, 0x48, 0x26, 0x52, 0x14, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x29, 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, 0x29, 0x48, 0x27, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x2a, 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, 0x2a, + 0x48, 0x28, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x2b, 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, 0x2b, + 0x48, 0x29, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2c, 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, 0x26, 0x48, - 0x24, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x27, - 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, - 0x27, 0x48, 0x25, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0x28, 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, 0x28, 0x48, 0x26, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, - 0x6e, 0x65, 0x72, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, + 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, + 0x2a, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, + 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x2d, 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, 0x29, 0x48, 0x27, - 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x2a, 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, 0x2a, 0x48, 0x28, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x2b, + 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, + 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, + 0x2e, 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, 0x2e, 0x48, 0x2c, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, 0x61, + 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x2f, 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, 0x2b, 0x48, 0x29, 0x52, 0x08, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2c, 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, 0x2c, 0x48, 0x2a, 0x52, 0x08, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x2d, 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, 0x2d, 0x48, 0x2b, 0x52, 0x08, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x48, 0x2d, 0x52, 0x0d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x30, 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, 0x30, 0x48, 0x2e, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, + 0x67, 0x18, 0x31, 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, 0x31, 0x48, 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, + 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x32, 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, 0x32, 0x48, 0x30, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, + 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, + 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x18, 0x33, 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, 0x2e, 0x48, 0x2c, 0x52, - 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x18, 0x2f, 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, 0x2f, 0x48, 0x2d, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, - 0x63, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x30, 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, 0x30, 0x48, 0x2e, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x18, 0x31, 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, 0x31, 0x48, - 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x46, 0x72, 0x61, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x32, 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, 0x32, - 0x48, 0x30, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, - 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x08, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x18, 0x33, 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, 0x33, 0x48, 0x31, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, 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, 0x34, 0x48, 0x32, 0x52, 0x0d, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x35, 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, 0x35, 0x48, 0x33, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, - 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x36, 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, 0x36, 0x48, 0x34, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x37, 0x20, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, 0x31, 0x52, + 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x34, + 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, + 0x34, 0x48, 0x32, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x35, 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, 0x35, 0x48, 0x33, 0x52, 0x0d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x36, 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, 0x36, 0x48, 0x34, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x37, 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, 0x37, 0x48, 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, + 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x18, 0x38, 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, 0x38, 0x48, 0x36, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x39, 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, 0x37, - 0x48, 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, - 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x38, 0x20, 0x01, 0x28, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, + 0x48, 0x37, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, + 0x6e, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, + 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x3a, 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, 0x38, 0x48, 0x36, - 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, 0x61, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x38, + 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x61, 0x73, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, 0x3b, 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, 0x39, 0x48, 0x37, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x3a, 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, 0x3a, 0x48, 0x38, 0x52, 0x0f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x48, 0x61, 0x73, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, - 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x73, 0x63, 0x69, 0x18, 0x3b, 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, 0x3b, 0x48, 0x39, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x3c, 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, 0x3c, 0x48, 0x3a, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x3d, 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, 0x3d, - 0x48, 0x3b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x30, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, - 0x78, 0x70, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x39, 0x52, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, + 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x3c, 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, 0x3c, 0x48, 0x3a, + 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x30, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x3d, 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, 0x3e, 0x48, 0x3c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, + 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x3b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, + 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x3e, 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, 0x3f, 0x48, 0x3d, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x42, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x40, - 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, - 0x40, 0x48, 0x3e, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x41, 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, 0x41, 0x48, 0x3f, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x54, 0x74, 0x6c, 0x88, 0x01, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, 0x3c, 0x52, 0x12, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x3f, 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, 0x3f, 0x48, + 0x3d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x30, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x40, 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, 0x40, 0x48, 0x3e, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x41, 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, 0x42, 0x48, 0x40, 0x52, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x48, 0x3f, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, - 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x18, - 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x18, + 0x42, 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, 0x43, 0x48, 0x41, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x31, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x44, 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, 0x44, 0x48, 0x42, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x45, 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, 0x45, - 0x48, 0x43, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, - 0x78, 0x70, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x0f, 0x42, 0x48, 0x40, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x31, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, + 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x43, 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, 0x43, 0x48, 0x41, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x44, 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, 0x44, 0x48, 0x42, + 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x32, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x45, 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, 0x46, 0x48, 0x44, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, + 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x48, 0x43, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, + 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x46, 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, 0x47, 0x48, 0x45, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x42, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x48, - 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, - 0x48, 0x48, 0x46, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x49, 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, 0x49, 0x48, 0x47, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x54, 0x74, 0x6c, 0x88, 0x01, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, 0x48, 0x44, 0x52, 0x12, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x47, 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, 0x47, 0x48, + 0x45, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x32, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x48, 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, 0x48, 0x48, 0x46, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x49, 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, 0x4a, 0x48, 0x48, 0x52, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x47, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, - 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x18, - 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, + 0x4a, 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, 0x4b, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x4c, 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, 0x4c, 0x48, 0x4a, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4d, 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, 0x4d, - 0x48, 0x4b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x34, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, - 0x78, 0x70, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x0f, 0x4a, 0x48, 0x48, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, + 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4b, 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, 0x4b, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x67, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x4c, 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, 0x4c, 0x48, 0x4a, + 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x34, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x4d, 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, 0x4e, 0x48, 0x4c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, + 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x4b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, + 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4f, 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, 0x4f, 0x48, 0x4d, 0x52, 0x12, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x42, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x50, - 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, - 0x50, 0x48, 0x4e, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x44, 0x73, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x51, 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, 0x51, 0x48, 0x4f, 0x52, 0x15, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4e, 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, 0x52, 0x48, 0x50, 0x52, 0x18, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x18, 0x53, 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, 0x53, 0x48, 0x51, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x6f, 0x72, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x14, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x18, 0x54, 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, 0x54, 0x48, 0x52, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x56, 0x6c, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, - 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x4c, 0x52, 0x12, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4f, 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, 0x4f, 0x48, + 0x4d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x34, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x50, 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, 0x50, 0x48, 0x4e, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, + 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, + 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x51, 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, 0x51, + 0x48, 0x4f, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1c, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x52, 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, 0x52, 0x48, + 0x50, 0x52, 0x18, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, + 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x61, + 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x53, 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, 0x55, 0x48, 0x53, 0x52, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, - 0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, - 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x56, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x51, 0x52, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, + 0x01, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x54, 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, 0x54, 0x48, 0x52, 0x52, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x55, 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, 0x55, 0x48, 0x53, + 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, + 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x68, 0x69, 0x74, 0x18, 0x56, 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, 0x56, 0x48, 0x54, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, + 0x64, 0x62, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x57, 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, 0x57, 0x48, 0x55, 0x52, 0x1a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, + 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1c, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, 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, 0x58, 0x48, 0x56, 0x52, 0x17, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, + 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x59, 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, - 0x56, 0x48, 0x54, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x4e, 0x70, 0x75, - 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, - 0x1f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, - 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, - 0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x59, 0x48, 0x57, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5a, 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, 0x5a, + 0x48, 0x58, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x65, 0x74, 0x68, 0x53, 0x79, 0x6e, + 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x1c, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x50, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x69, 0x6e, 0x12, 0x61, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5c, 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, 0x5c, 0x48, 0x59, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x5d, 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, 0x57, 0x48, 0x55, 0x52, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, 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, 0x58, 0x48, 0x56, 0x52, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, - 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0xad, 0x0f, 0x5d, 0x48, 0x5a, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, + 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x5e, + 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, + 0x5e, 0x48, 0x5b, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, + 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5f, 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, 0x59, 0x48, 0x57, 0x52, 0x0e, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x60, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, - 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5a, 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, 0x5a, 0x48, 0x58, 0x52, 0x11, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x41, 0x65, 0x74, 0x68, 0x53, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x98, 0x01, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x61, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5c, 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, 0x5c, 0x48, 0x59, 0x52, 0x11, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x65, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x5d, 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, 0x5d, 0x48, 0x5a, - 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x5c, 0x52, 0x0f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x60, 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, 0x5e, 0x48, 0x5b, 0x52, 0x0b, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x5d, - 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5d, 0x52, 0x10, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x61, 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, 0x61, 0x48, 0x5e, 0x52, + 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x4d, 0x61, + 0x63, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, + 0x66, 0x5f, 0x69, 0x64, 0x18, 0x62, 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, 0x5f, 0x48, 0x5c, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, - 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x18, 0x60, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5d, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, - 0x61, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x61, 0x48, 0x5e, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x62, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5f, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5f, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x56, 0x72, 0x66, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x63, 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, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x60, 0x52, 0x12, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 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, 0x63, 0x48, 0x60, 0x52, 0x16, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x70, 0x6d, 0x63, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, + 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x64, 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, 0x64, 0x48, 0x61, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x18, 0x65, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x61, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x65, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, - 0x48, 0x62, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x66, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x66, 0x48, 0x63, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, 0x62, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, + 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x5f, 0x69, 0x70, 0x18, 0x66, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x64, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x48, 0x63, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, + 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x67, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x65, 0x52, 0x10, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x69, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x66, 0x52, - 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x6a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x67, 0x52, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, - 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x68, 0x52, 0x14, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x6c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x69, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, - 0x6d, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x6d, 0x48, 0x6a, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, - 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x6e, 0x20, 0x01, 0x28, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x64, 0x52, 0x12, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x68, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, - 0x6b, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, - 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, + 0x65, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x69, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x66, 0x52, 0x0b, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, + 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x18, 0x6a, 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, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x67, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x68, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x69, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x6c, 0x52, 0x15, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, - 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x70, 0x20, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x69, 0x52, 0x12, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x6d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x6a, + 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x6e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x70, 0x48, 0x6d, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x71, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x71, 0x48, 0x6e, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, - 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, - 0x72, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x72, 0x48, 0x6f, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, - 0x73, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x73, 0x48, 0x70, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x74, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x74, 0x48, 0x71, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, - 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x75, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, - 0x48, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, - 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, - 0x48, 0x73, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, - 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x77, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x77, 0x48, 0x74, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, - 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x78, 0x20, 0x01, + 0x6e, 0x48, 0x6b, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x6f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, + 0x6c, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x68, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, - 0x48, 0x75, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x63, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x76, 0x52, 0x0c, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, - 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, + 0x48, 0x6d, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x71, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x77, 0x52, 0x12, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7b, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x7b, 0x48, 0x78, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, - 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x22, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x6e, 0x52, 0x14, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, + 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x18, 0x72, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x72, 0x48, 0x6f, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, + 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x73, 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, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x73, 0x48, 0x70, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, + 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x74, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, 0x48, + 0x71, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, + 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x75, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x79, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 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, 0x7c, 0x0a, 0x21, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, - 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, 0x72, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x64, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, + 0x72, 0x69, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, 0x73, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x64, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, + 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x18, 0x77, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x77, 0x48, 0x74, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, + 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, 0x48, 0x75, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x76, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x18, 0x7a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x7a, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 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, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x7e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x7b, 0x52, 0x14, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x7c, 0x52, 0x19, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x80, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x48, 0x7d, 0x52, 0x13, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x18, - 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x77, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x18, 0x7b, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x7e, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x78, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x7c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x79, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, + 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x18, 0x7d, 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, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x7a, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x7e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x7b, + 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x65, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, - 0x48, 0x7f, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6c, 0x44, 0x74, 0x65, - 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x83, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x80, 0x01, 0x52, 0x14, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, + 0x7c, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x53, 0x72, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x80, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x48, 0x7d, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x80, 0x01, 0x0a, 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x81, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x7e, + 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 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, 0x7e, 0x0a, 0x21, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x82, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, - 0x81, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x44, 0x72, - 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, - 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, 0x48, + 0x7f, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 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, 0x6c, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x83, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x80, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, + 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x84, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, 0x81, 0x01, 0x52, 0x19, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, + 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x85, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, 0x82, 0x01, 0x52, 0x13, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, + 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, + 0x6e, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x83, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, + 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x18, 0x87, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x87, 0x01, 0x48, 0x84, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, + 0x6c, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6b, + 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, + 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x88, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, - 0x82, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x54, 0x61, - 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x83, - 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, - 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x48, + 0x85, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x89, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x89, 0x01, 0x48, 0x86, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, + 0x65, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x8a, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x8a, 0x01, 0x48, 0x87, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, + 0x65, 0x6c, 0x54, 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x1f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x8b, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x8b, 0x01, 0x48, 0x88, 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, + 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x8c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x89, 0x01, + 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x58, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, + 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x6f, 0x4e, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x8e, + 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, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x18, 0x8f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, + 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x90, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x48, 0x8d, 0x01, + 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, + 0x6f, 0x70, 0x73, 0x18, 0x91, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8e, 0x01, 0x52, 0x14, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x6f, + 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, + 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x92, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x18, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, + 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x93, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x90, 0x01, 0x52, 0x12, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x94, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, 0x91, 0x01, 0x52, 0x17, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x95, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x95, 0x01, 0x48, 0x92, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x16, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x96, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x93, 0x01, 0x52, 0x12, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, + 0x18, 0x97, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x48, 0x94, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x5a, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x76, 0x72, 0x66, 0x18, 0x98, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x84, 0x01, 0x52, 0x1a, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, - 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0d, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x88, 0x01, 0x20, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x98, 0x01, 0x48, 0x95, 0x01, 0x52, 0x0c, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, + 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x99, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x88, 0x01, 0x48, 0x85, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x4e, - 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x89, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, - 0x48, 0x86, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x49, 0x6e, - 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x8a, 0x01, 0x20, + 0x99, 0x01, 0x48, 0x96, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, + 0x9a, 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, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x97, 0x01, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x41, 0x72, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, + 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x9b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x8a, 0x01, 0x48, 0x87, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x77, 0x18, 0x8b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x88, 0x01, 0x52, 0x13, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, - 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, - 0x8c, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x89, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x73, 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x69, 0x6c, 0x44, - 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x8e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x8f, + 0x9b, 0x01, 0x48, 0x98, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x41, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x77, 0x0a, 0x1d, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x9c, 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x9c, 0x01, 0x48, 0x99, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x9d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x90, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x48, - 0x8d, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, - 0x64, 0x18, 0x91, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8e, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x92, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x92, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, - 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x18, - 0x93, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x90, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1b, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x94, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, 0x91, - 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x70, - 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, - 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, - 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, - 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, - 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0xad, 0x0f, 0x9d, 0x01, 0x48, 0x9a, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x1a, + 0x70, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, + 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, + 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, + 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, - 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, - 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, - 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, - 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, - 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, - 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, - 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, - 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, - 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, - 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, - 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, - 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, + 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, + 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, + 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, + 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, + 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, + 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, + 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, + 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, + 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, - 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, - 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, - 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, - 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x24, - 0x0a, 0x22, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, - 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, - 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, - 0x0a, 0x20, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, - 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, - 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x9f, 0x03, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x63, 0x6c, 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, 0x26, 0x0a, 0x08, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 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, 0x02, 0x48, 0x01, 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, 0x03, 0x48, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x48, 0x03, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x21, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 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, 0x06, 0x48, 0x05, 0x52, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x0a, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 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, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x41, 0x63, 0x6c, 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, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xbe, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 0x25, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x07, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x05, 0x48, 0x01, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, + 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, + 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, + 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, + 0x61, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, + 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 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, 0x24, 0x0a, 0x22, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, + 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, + 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, + 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, + 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, + 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x41, 0x63, + 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x6c, 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, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, + 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x9f, 0x03, 0x0a, 0x17, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x26, 0x0a, 0x08, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x64, 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, 0x02, 0x48, 0x01, 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, 0x03, 0x48, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, + 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x21, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, + 0x73, 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, 0x06, 0x48, 0x05, 0x52, 0x05, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x0a, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 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, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 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, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x41, 0x63, 0x6c, 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, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, + 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x6c, 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, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd7, 0x01, 0x0a, 0x15, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 0x45, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 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, 0x02, 0x48, 0x01, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, - 0x0f, 0x0b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, - 0x6e, 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, 0x18, 0x0a, 0x16, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, + 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, + 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 0x40, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, - 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd2, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x49, - 0x0a, 0x09, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, - 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, - 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, + 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x6c, 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, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, 0x63, - 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, - 0x65, 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, 0x3a, 0x06, 0xa0, - 0xa9, 0x90, 0xad, 0x0f, 0x0c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2f, 0x0a, 0x1b, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x2e, 0x0a, - 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x1d, 0x0a, - 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x20, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 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, 0x41, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, + 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd7, 0x01, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, + 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 0x45, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 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, 0x02, + 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, + 0x90, 0xad, 0x0f, 0x0b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, + 0x52, 0x61, 0x6e, 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, 0x18, + 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0x89, 0x02, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x38, - 0x0a, 0x12, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x61, 0x63, 0x6c, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x49, 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, - 0x03, 0x48, 0x02, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, - 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x0d, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x0f, 0x0a, 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, 0x22, 0x35, 0x0a, - 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 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, 0x34, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x23, 0x0a, 0x21, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x87, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 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, 0x4b, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x72, 0x0a, 0x27, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd2, 0x02, 0x0a, 0x1a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x49, 0x0a, 0x09, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 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, 0x41, 0x63, 0x6c, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, + 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, + 0x63, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, + 0x61, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 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, 0x3a, + 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x0c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2f, + 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 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, + 0x2e, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 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, + 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, + 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 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, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0xeb, 0x02, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, + 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x38, 0x0a, 0x12, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x61, 0x63, + 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x49, 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, 0x03, 0x48, 0x02, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x43, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x14, + 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x0d, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 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, 0x35, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x34, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x23, + 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x26, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xf9, 0x1e, - 0x0a, 0x0c, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, - 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, - 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, - 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, - 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x4c, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x49, 0x5a, 0x45, - 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x41, - 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x05, 0x12, 0x27, - 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, - 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x07, - 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, - 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, + 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, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x14, 0x61, 0x63, + 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x88, 0x01, 0x01, 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, 0x29, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x01, + 0x0a, 0x26, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 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, 0x4b, 0x0a, 0x09, 0x61, 0x74, + 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, + 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x72, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xf7, 0x01, 0x0a, 0x1f, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, + 0x61, 0x69, 0x6e, 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, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 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, 0x41, 0x63, + 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 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, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 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, 0x41, + 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x6a, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x34, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 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, 0x33, 0x0a, 0x1f, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, + 0x69, 0x6e, 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, 0x22, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 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, 0x4a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x03, 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, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x70, 0x0a, 0x26, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 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, 0x41, 0x63, 0x6c, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xcb, + 0x21, 0x0a, 0x0c, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, + 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x49, 0x5a, + 0x45, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x05, 0x12, + 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, + 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, + 0x07, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, + 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, + 0x30, 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x49, 0x50, 0x56, 0x36, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, + 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x0b, 0x12, + 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, + 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x0c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, + 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, + 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, + 0x36, 0x10, 0x0f, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, + 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x10, 0x12, 0x20, 0x0a, 0x1c, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x20, + 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x12, + 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, + 0x13, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, + 0x10, 0x14, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, - 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, - 0x50, 0x56, 0x36, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x0b, 0x12, 0x27, - 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, - 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x0c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x16, + 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x53, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x18, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, 0x0d, - 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, - 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, + 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, - 0x10, 0x0f, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, - 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x10, 0x12, 0x20, 0x0a, 0x1c, 0x41, - 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x20, 0x0a, - 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x12, 0x12, - 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x13, - 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, - 0x14, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x16, 0x12, - 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, - 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x53, 0x10, 0x18, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, - 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1a, 0x12, 0x21, 0x0a, 0x1d, 0x41, - 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1b, 0x12, 0x26, - 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x1d, 0x12, - 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1a, 0x12, 0x21, 0x0a, 0x1d, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1b, 0x12, + 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1f, + 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x20, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x1e, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, - 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, - 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x22, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x23, 0x12, 0x2a, - 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 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, 0x24, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, + 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, + 0x1f, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x20, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x25, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x26, 0x12, 0x29, 0x0a, 0x25, 0x41, + 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, + 0x49, 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, + 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x22, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x23, 0x12, + 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 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, 0x24, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x27, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, - 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x28, 0x12, 0x2a, 0x0a, 0x26, + 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x25, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x26, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x29, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x2a, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x43, - 0x50, 0x10, 0x2b, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x10, - 0x2c, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x2d, 0x12, - 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x2e, 0x12, 0x21, 0x0a, - 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x2f, - 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x46, 0x4c, 0x41, - 0x47, 0x53, 0x10, 0x30, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, - 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x31, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x10, 0x32, - 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x33, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x27, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x35, 0x12, 0x22, 0x0a, 0x1e, 0x41, + 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x28, 0x12, 0x2a, 0x0a, + 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x29, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x2a, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, + 0x43, 0x50, 0x10, 0x2b, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x43, 0x4e, + 0x10, 0x2c, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x2d, + 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x2e, 0x12, 0x21, + 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, + 0x2f, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x46, 0x4c, + 0x41, 0x47, 0x53, 0x10, 0x30, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x31, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x36, 0x12, - 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, - 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x38, 0x12, 0x24, 0x0a, 0x20, 0x41, + 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x10, + 0x32, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x33, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, - 0x39, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x3a, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x48, - 0x41, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x3b, 0x12, 0x23, 0x0a, - 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x49, - 0x10, 0x3c, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x3d, 0x12, 0x28, - 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, - 0x4c, 0x30, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x3e, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x45, 0x58, 0x50, - 0x10, 0x3f, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x40, 0x12, 0x2a, 0x0a, 0x26, - 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, - 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x41, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x54, 0x54, 0x4c, - 0x10, 0x42, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x43, 0x12, 0x28, 0x0a, 0x24, + 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x35, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, - 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x44, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, - 0x10, 0x45, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x46, 0x12, 0x28, 0x0a, 0x24, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x36, + 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, + 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x38, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, - 0x5f, 0x45, 0x58, 0x50, 0x10, 0x47, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x48, - 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, - 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x49, 0x12, 0x28, 0x0a, 0x24, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, + 0x10, 0x39, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x3a, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x48, 0x41, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x3b, 0x12, 0x23, + 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, + 0x49, 0x10, 0x3c, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x3d, 0x12, + 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x30, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x3e, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x45, 0x58, + 0x50, 0x10, 0x3f, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x40, 0x12, 0x2a, 0x0a, + 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x31, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x41, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x54, 0x54, + 0x4c, 0x10, 0x42, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x43, 0x12, 0x28, 0x0a, + 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x31, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x44, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x10, 0x45, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x46, 0x12, 0x28, 0x0a, + 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x32, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x47, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x42, 0x4f, 0x53, 0x10, + 0x48, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x49, 0x12, 0x28, 0x0a, + 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x33, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x4a, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x45, 0x58, 0x50, 0x10, + 0x4b, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x4c, 0x12, 0x2a, 0x0a, 0x26, 0x41, + 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x4d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x54, 0x54, 0x4c, 0x10, + 0x4e, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4f, 0x12, 0x28, 0x0a, 0x24, 0x41, + 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, + 0x42, 0x4f, 0x53, 0x10, 0x50, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, + 0x42, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, + 0x51, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x52, 0x12, + 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, + 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x53, + 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x54, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, + 0x10, 0x55, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x56, 0x12, 0x2d, 0x0a, 0x29, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x57, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x58, 0x12, 0x2f, 0x0a, + 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x5f, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x59, 0x12, 0x23, + 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, 0x54, 0x48, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, + 0x45, 0x10, 0x5a, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x45, 0x54, 0x48, + 0x5f, 0x53, 0x59, 0x4e, 0x44, 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x5b, 0x12, 0x2f, 0x0a, 0x2b, 0x41, + 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x5c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, - 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x4a, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4b, - 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, - 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x4c, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x5d, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, + 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x5e, + 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, + 0x10, 0x5f, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x60, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, + 0x61, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x62, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x56, 0x52, 0x46, 0x5f, 0x49, 0x44, 0x10, 0x63, 0x12, 0x2e, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x4c, - 0x41, 0x42, 0x45, 0x4c, 0x10, 0x4d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x4e, - 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, - 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4f, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, + 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, + 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x64, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x42, - 0x4f, 0x53, 0x10, 0x50, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, 0x42, - 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x51, + 0x4c, 0x44, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, + 0x41, 0x54, 0x45, 0x44, 0x10, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0x66, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x67, 0x12, 0x28, 0x0a, + 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x68, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x69, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x44, - 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x52, 0x12, 0x2f, - 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x53, 0x12, - 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x54, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, - 0x55, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x56, 0x12, 0x2d, 0x0a, 0x29, 0x41, 0x43, 0x4c, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, - 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x57, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, - 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x58, 0x12, 0x2f, 0x0a, 0x2b, - 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x59, 0x12, 0x23, 0x0a, - 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, 0x54, 0x48, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, 0x45, - 0x10, 0x5a, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x45, 0x54, 0x48, 0x5f, - 0x53, 0x59, 0x4e, 0x44, 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x5b, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x5c, 0x12, 0x27, 0x0a, 0x23, 0x41, - 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x5d, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, - 0x36, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x5e, 0x12, - 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, - 0x5f, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x60, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x61, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x62, 0x12, - 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x63, 0x2a, 0xb6, 0x2f, 0x0a, 0x0c, 0x41, 0x63, - 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, - 0x4c, 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, 0x1b, 0x0a, 0x17, 0x41, 0x43, - 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, - 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x42, + 0x49, 0x54, 0x53, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x6a, 0x12, 0x2c, + 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x42, 0x49, 0x54, + 0x53, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x6b, 0x2a, 0xc0, 0x32, 0x0a, + 0x0c, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, + 0x1a, 0x41, 0x43, 0x4c, 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, 0x1b, 0x0a, + 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x05, - 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, - 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, - 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, - 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, 0x10, 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x09, 0x12, 0x27, + 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, + 0x33, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, + 0x52, 0x44, 0x31, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, + 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, 0x10, 0x08, 0x12, 0x21, + 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, + 0x09, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, + 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, + 0x32, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, 0x0c, 0x12, 0x27, 0x0a, 0x23, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, + 0x52, 0x44, 0x30, 0x10, 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, + 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, - 0x57, 0x4f, 0x52, 0x44, 0x33, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, + 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x32, 0x10, 0x0b, - 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, - 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x31, 0x10, 0x0c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x30, - 0x10, 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, - 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, - 0x56, 0x36, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, - 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x10, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, - 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x12, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, + 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x10, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x13, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, - 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, - 0x14, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x15, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x16, 0x12, 0x22, 0x0a, 0x1e, 0x41, + 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x17, 0x12, - 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x18, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1a, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1b, 0x12, - 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, - 0x1d, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, - 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1e, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, - 0x10, 0x1f, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x20, 0x12, 0x24, 0x0a, 0x20, 0x41, + 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x12, 0x12, 0x1f, 0x0a, 0x1b, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x13, 0x12, 0x25, 0x0a, + 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x49, 0x50, 0x10, 0x14, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, + 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x15, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x22, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x16, 0x12, 0x22, + 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, + 0x10, 0x17, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x10, 0x18, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x23, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x24, 0x12, - 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x25, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1a, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, + 0x10, 0x1b, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, + 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x1c, 0x12, 0x27, 0x0a, 0x23, 0x41, + 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, + 0x46, 0x49, 0x10, 0x1d, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, - 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x26, 0x12, - 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x43, 0x4f, 0x4c, 0x10, 0x27, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 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, - 0x28, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x44, 0x45, - 0x4e, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x29, 0x12, 0x1d, 0x0a, - 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, + 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x1e, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x10, 0x2b, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x50, 0x52, 0x49, 0x10, 0x1f, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, + 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x20, 0x12, 0x24, + 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x22, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x2c, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x2d, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x10, 0x23, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, - 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x2e, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x2f, 0x12, 0x24, 0x0a, - 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x30, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, - 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x10, 0x31, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x42, 0x45, - 0x4c, 0x10, 0x32, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x10, 0x33, - 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, - 0x50, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x35, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, + 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x10, 0x24, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x25, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x26, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x27, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x36, 0x12, 0x24, - 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x38, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, - 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x39, 0x12, - 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x48, 0x41, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, - 0x5f, 0x54, 0x41, 0x47, 0x10, 0x3a, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x3b, 0x12, 0x2a, 0x0a, 0x26, 0x41, + 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x10, 0x28, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, + 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x29, + 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x2a, 0x12, + 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x10, 0x2b, 0x12, 0x1c, 0x0a, + 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x2c, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x3c, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x2d, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x2e, 0x12, 0x22, 0x0a, 0x1e, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x2f, + 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x30, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x10, 0x31, 0x12, 0x28, 0x0a, 0x24, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x10, 0x32, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, + 0x43, 0x10, 0x33, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x34, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x54, 0x54, 0x4c, 0x10, - 0x3d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, - 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x3e, 0x12, 0x28, 0x0a, 0x24, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, - 0x42, 0x4f, 0x53, 0x10, 0x3f, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, - 0x40, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, - 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x41, 0x12, 0x28, 0x0a, 0x24, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, - 0x45, 0x58, 0x50, 0x10, 0x42, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x43, 0x12, - 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x32, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x44, 0x12, 0x28, 0x0a, 0x24, 0x41, + 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x35, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, - 0x54, 0x54, 0x4c, 0x10, 0x45, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x46, 0x12, - 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x32, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x47, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x4c, 0x41, - 0x42, 0x45, 0x4c, 0x10, 0x48, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x49, 0x12, - 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x33, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4a, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x42, 0x4f, - 0x53, 0x10, 0x4b, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, - 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x4c, 0x12, - 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x34, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x4d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x45, 0x58, - 0x50, 0x10, 0x4e, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, - 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x4f, 0x12, 0x2a, 0x0a, - 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x50, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x51, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x36, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x56, 0x36, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x52, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x38, 0x12, 0x23, 0x0a, + 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x4e, 0x49, + 0x10, 0x39, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x48, 0x41, 0x53, 0x5f, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x3a, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x3b, 0x12, 0x2a, + 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x30, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x3c, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x54, + 0x54, 0x4c, 0x10, 0x3d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x30, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x3e, 0x12, 0x28, + 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x30, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x3f, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x10, 0x40, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x41, 0x12, 0x28, + 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x31, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x42, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x31, 0x5f, 0x42, 0x4f, 0x53, + 0x10, 0x43, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x44, 0x12, 0x28, + 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x32, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x45, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x45, 0x58, 0x50, + 0x10, 0x46, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x32, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x47, 0x12, 0x2a, 0x0a, 0x26, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x48, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, - 0x53, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x54, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, + 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x54, 0x54, 0x4c, + 0x10, 0x49, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4a, 0x12, 0x28, 0x0a, 0x24, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x33, + 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x4b, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, + 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x10, 0x4c, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, + 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x4d, 0x12, 0x28, 0x0a, 0x24, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, + 0x5f, 0x45, 0x58, 0x50, 0x10, 0x4e, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, + 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x34, 0x5f, 0x42, 0x4f, 0x53, 0x10, 0x4f, + 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x44, 0x53, 0x54, + 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x50, 0x12, 0x2c, 0x0a, 0x28, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x51, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x10, 0x55, 0x12, 0x2d, 0x0a, 0x29, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4e, - 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, - 0x56, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, - 0x4f, 0x52, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, - 0x48, 0x49, 0x54, 0x10, 0x57, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x52, 0x4f, - 0x55, 0x54, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, - 0x5f, 0x48, 0x49, 0x54, 0x10, 0x58, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x42, - 0x54, 0x48, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x59, 0x12, 0x26, 0x0a, 0x22, 0x41, + 0x4c, 0x44, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x52, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x45, 0x54, 0x48, 0x5f, 0x53, 0x59, 0x4e, 0x44, 0x52, 0x4f, 0x4d, - 0x45, 0x10, 0x5a, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, - 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, - 0x49, 0x4e, 0x10, 0x5b, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x5c, 0x12, 0x29, 0x0a, - 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, - 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x5d, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x10, 0x53, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x10, 0x54, 0x12, 0x26, 0x0a, + 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x10, 0x55, 0x12, 0x2d, 0x0a, 0x29, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x46, 0x44, + 0x42, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x48, + 0x49, 0x54, 0x10, 0x56, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x45, 0x49, + 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, + 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x57, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x5e, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, - 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x5f, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x10, 0x58, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x42, 0x54, 0x48, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x59, 0x12, 0x26, + 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x45, 0x54, 0x48, 0x5f, 0x53, 0x59, 0x4e, 0x44, + 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x5a, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x5b, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x5c, + 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, + 0x58, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x5d, 0x12, 0x20, 0x0a, 0x1c, 0x41, + 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x5e, 0x12, 0x25, 0x0a, + 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x5f, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, + 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x60, 0x12, 0x26, 0x0a, 0x22, + 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, + 0x41, 0x43, 0x10, 0x61, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x52, 0x46, + 0x5f, 0x49, 0x44, 0x10, 0x62, 0x12, 0x2e, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, + 0x4d, 0x43, 0x5f, 0x4e, 0x50, 0x55, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x48, 0x49, 0x54, 0x10, 0x63, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, + 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x10, 0x60, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x45, 0x43, 0x54, 0x10, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, - 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x61, 0x12, 0x27, 0x0a, 0x23, + 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x66, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0x62, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x49, 0x53, 0x54, 0x10, 0x67, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x63, 0x12, 0x1f, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x68, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x64, 0x12, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x69, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, - 0x10, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x10, 0x6a, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x66, 0x12, 0x27, 0x0a, 0x23, + 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x6b, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x10, 0x67, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x45, 0x53, 0x53, 0x10, 0x6c, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x68, 0x12, 0x27, 0x0a, 0x23, + 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x6d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x54, 0x4c, 0x10, 0x69, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x54, 0x54, 0x4c, 0x10, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x54, 0x43, 0x10, 0x6a, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x45, 0x54, 0x5f, 0x54, 0x43, 0x10, 0x6f, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, - 0x52, 0x10, 0x6b, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x52, 0x10, 0x70, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, - 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x6c, + 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x71, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x4e, - 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x6d, 0x12, 0x2b, + 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x72, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, - 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x6e, 0x12, 0x2c, 0x0a, 0x28, 0x41, + 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x73, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x6f, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, + 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x74, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x70, + 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x75, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x71, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, + 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x76, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x72, 0x12, + 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x77, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, - 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x78, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x74, 0x12, 0x24, 0x0a, 0x20, + 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x79, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, - 0x10, 0x75, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x10, 0x7a, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x76, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, + 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x7b, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, - 0x10, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x10, 0x7c, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x44, 0x53, 0x43, 0x50, 0x10, 0x78, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x44, 0x53, 0x43, 0x50, 0x10, 0x7d, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, 0x4e, 0x10, 0x79, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, + 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, 0x4e, 0x10, 0x7e, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x7a, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x52, 0x54, 0x10, 0x7f, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, - 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x7b, 0x12, - 0x35, 0x0a, 0x31, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x7c, 0x12, 0x34, 0x0a, 0x30, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x7d, 0x12, 0x2b, 0x0a, 0x27, - 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x4d, 0x45, - 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x7e, 0x12, 0x30, 0x0a, 0x2c, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x7f, 0x12, 0x2b, 0x0a, 0x26, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x80, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, + 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x80, 0x01, + 0x12, 0x36, 0x0a, 0x31, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x81, 0x01, 0x12, 0x35, 0x0a, 0x30, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4c, 0x45, 0x41, - 0x52, 0x4e, 0x10, 0x81, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x10, - 0x82, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x54, 0x45, 0x4c, - 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x83, 0x01, 0x12, - 0x32, 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x84, 0x01, 0x12, 0x37, 0x0a, 0x32, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x85, 0x01, 0x12, 0x33, 0x0a, 0x2e, - 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x86, - 0x01, 0x12, 0x32, 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x87, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, - 0x4f, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x88, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, + 0x4e, 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, 0x82, 0x01, 0x12, + 0x2c, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x4c, + 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x83, 0x01, 0x12, 0x31, 0x0a, + 0x2c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x84, 0x01, + 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x85, 0x01, 0x12, 0x2b, 0x0a, + 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x10, 0x86, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x4f, 0x50, 0x10, 0x87, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x10, 0x88, 0x01, 0x12, 0x32, 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x89, 0x01, 0x12, 0x37, 0x0a, 0x32, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x89, 0x01, 0x12, - 0x25, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0x8a, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x4e, 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, 0x8a, + 0x01, 0x12, 0x33, 0x0a, 0x2e, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 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, 0x8b, 0x01, 0x12, 0x32, 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, - 0x8b, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, - 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, 0x8c, 0x01, 0x12, - 0x30, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, 0x8d, - 0x01, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, - 0x4e, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x8e, 0x01, 0x12, 0x2e, 0x0a, 0x29, - 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x8f, 0x01, 0x12, 0x26, 0x0a, 0x21, - 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x10, 0x90, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, - 0x54, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x91, 0x01, - 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, - 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x92, 0x01, 0x12, 0x22, 0x0a, - 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x52, 0x46, 0x10, 0x93, - 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x46, - 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, - 0x94, 0x01, 0x2a, 0xf9, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 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, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 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, 0x02, - 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 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, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, - 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, - 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x06, 0x2a, 0x61, - 0x0a, 0x0c, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, - 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x52, - 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, - 0x02, 0x2a, 0xd5, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 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, 0x22, 0x0a, - 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, - 0x01, 0x12, 0x31, 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, - 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x2a, 0xd2, 0x01, 0x0a, 0x17, 0x41, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 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, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x8c, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x8d, 0x01, 0x12, 0x25, 0x0a, + 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, + 0x54, 0x10, 0x8e, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, + 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x8f, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x41, + 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x90, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x53, 0x10, 0x91, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, + 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x53, 0x10, 0x92, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x93, + 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, + 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x94, + 0x01, 0x12, 0x26, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x95, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x4c, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, + 0x49, 0x44, 0x10, 0x96, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x45, 0x54, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, + 0x97, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, + 0x56, 0x52, 0x46, 0x10, 0x98, 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, + 0x4c, 0x41, 0x53, 0x53, 0x10, 0x99, 0x01, 0x12, 0x2d, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, + 0x49, 0x4e, 0x47, 0x10, 0x9a, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x9b, + 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x9c, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, + 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x9d, 0x01, 0x2a, + 0xf9, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 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, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, + 0x44, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 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, 0x02, 0x12, 0x26, 0x0a, + 0x22, 0x41, 0x43, 0x4c, 0x5f, 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, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, + 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x06, 0x2a, 0x61, 0x0a, 0x0c, 0x41, + 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x41, + 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x41, + 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x2a, 0x80, + 0x02, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x41, 0x74, 0x74, 0x72, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 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, 0x22, 0x0a, 0x1e, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x31, + 0x0a, 0x2d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, + 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, + 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, + 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x05, 0x2a, 0x8c, 0x02, 0x0a, 0x17, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x2b, 0x0a, + 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 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, 0x32, 0x0a, 0x2e, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x2c, + 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, + 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x12, 0x38, 0x0a, 0x34, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x49, 0x44, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x32, 0x9b, - 0x14, 0x0a, 0x03, 0x41, 0x63, 0x6c, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 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, + 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x04, + 0x2a, 0x8f, 0x01, 0x0a, 0x16, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 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, 0x41, 0x54, 0x54, 0x52, 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, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, + 0x10, 0x02, 0x32, 0x82, 0x19, 0x0a, 0x03, 0x41, 0x63, 0x6c, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, + 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, + 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, + 0x74, 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, + 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, + 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 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, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, + 0x74, 0x72, 0x79, 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, 0x41, + 0x63, 0x6c, 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, 0x75, 0x0a, 0x10, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, + 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, + 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 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, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 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, 0x41, + 0x63, 0x6c, 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, 0x6f, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, + 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, - 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, + 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, - 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, - 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, + 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, - 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x41, 0x63, 0x6c, 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, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, - 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, - 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, - 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 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, 0x87, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x41, 0x63, 0x6c, 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, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, - 0x65, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, - 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, - 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, - 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, - 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x90, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x90, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 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, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa2, 0x01, 0x0a, 0x1f, + 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x3d, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0xa2, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x3d, 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, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa2, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3d, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, + 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 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, 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, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9f, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x6c, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3c, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 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 ( @@ -9969,8 +11020,8 @@ func file_dataplane_proto_sai_acl_proto_rawDescGZIP() []byte { return file_dataplane_proto_sai_acl_proto_rawDescData } -var file_dataplane_proto_sai_acl_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_dataplane_proto_sai_acl_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_dataplane_proto_sai_acl_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_dataplane_proto_sai_acl_proto_msgTypes = make([]protoimpl.MessageInfo, 51) var file_dataplane_proto_sai_acl_proto_goTypes = []any{ (AclTableAttr)(0), // 0: lemming.dataplane.sai.AclTableAttr (AclEntryAttr)(0), // 1: lemming.dataplane.sai.AclEntryAttr @@ -9978,424 +11029,470 @@ var file_dataplane_proto_sai_acl_proto_goTypes = []any{ (AclRangeAttr)(0), // 3: lemming.dataplane.sai.AclRangeAttr (AclTableGroupAttr)(0), // 4: lemming.dataplane.sai.AclTableGroupAttr (AclTableGroupMemberAttr)(0), // 5: lemming.dataplane.sai.AclTableGroupMemberAttr - (*CreateAclTableRequest)(nil), // 6: lemming.dataplane.sai.CreateAclTableRequest - (*CreateAclTableResponse)(nil), // 7: lemming.dataplane.sai.CreateAclTableResponse - (*RemoveAclTableRequest)(nil), // 8: lemming.dataplane.sai.RemoveAclTableRequest - (*RemoveAclTableResponse)(nil), // 9: lemming.dataplane.sai.RemoveAclTableResponse - (*GetAclTableAttributeRequest)(nil), // 10: lemming.dataplane.sai.GetAclTableAttributeRequest - (*GetAclTableAttributeResponse)(nil), // 11: lemming.dataplane.sai.GetAclTableAttributeResponse - (*CreateAclEntryRequest)(nil), // 12: lemming.dataplane.sai.CreateAclEntryRequest - (*CreateAclEntryResponse)(nil), // 13: lemming.dataplane.sai.CreateAclEntryResponse - (*RemoveAclEntryRequest)(nil), // 14: lemming.dataplane.sai.RemoveAclEntryRequest - (*RemoveAclEntryResponse)(nil), // 15: lemming.dataplane.sai.RemoveAclEntryResponse - (*SetAclEntryAttributeRequest)(nil), // 16: lemming.dataplane.sai.SetAclEntryAttributeRequest - (*SetAclEntryAttributeResponse)(nil), // 17: lemming.dataplane.sai.SetAclEntryAttributeResponse - (*GetAclEntryAttributeRequest)(nil), // 18: lemming.dataplane.sai.GetAclEntryAttributeRequest - (*GetAclEntryAttributeResponse)(nil), // 19: lemming.dataplane.sai.GetAclEntryAttributeResponse - (*CreateAclCounterRequest)(nil), // 20: lemming.dataplane.sai.CreateAclCounterRequest - (*CreateAclCounterResponse)(nil), // 21: lemming.dataplane.sai.CreateAclCounterResponse - (*RemoveAclCounterRequest)(nil), // 22: lemming.dataplane.sai.RemoveAclCounterRequest - (*RemoveAclCounterResponse)(nil), // 23: lemming.dataplane.sai.RemoveAclCounterResponse - (*SetAclCounterAttributeRequest)(nil), // 24: lemming.dataplane.sai.SetAclCounterAttributeRequest - (*SetAclCounterAttributeResponse)(nil), // 25: lemming.dataplane.sai.SetAclCounterAttributeResponse - (*GetAclCounterAttributeRequest)(nil), // 26: lemming.dataplane.sai.GetAclCounterAttributeRequest - (*GetAclCounterAttributeResponse)(nil), // 27: lemming.dataplane.sai.GetAclCounterAttributeResponse - (*CreateAclRangeRequest)(nil), // 28: lemming.dataplane.sai.CreateAclRangeRequest - (*CreateAclRangeResponse)(nil), // 29: lemming.dataplane.sai.CreateAclRangeResponse - (*RemoveAclRangeRequest)(nil), // 30: lemming.dataplane.sai.RemoveAclRangeRequest - (*RemoveAclRangeResponse)(nil), // 31: lemming.dataplane.sai.RemoveAclRangeResponse - (*GetAclRangeAttributeRequest)(nil), // 32: lemming.dataplane.sai.GetAclRangeAttributeRequest - (*GetAclRangeAttributeResponse)(nil), // 33: lemming.dataplane.sai.GetAclRangeAttributeResponse - (*CreateAclTableGroupRequest)(nil), // 34: lemming.dataplane.sai.CreateAclTableGroupRequest - (*CreateAclTableGroupResponse)(nil), // 35: lemming.dataplane.sai.CreateAclTableGroupResponse - (*RemoveAclTableGroupRequest)(nil), // 36: lemming.dataplane.sai.RemoveAclTableGroupRequest - (*RemoveAclTableGroupResponse)(nil), // 37: lemming.dataplane.sai.RemoveAclTableGroupResponse - (*GetAclTableGroupAttributeRequest)(nil), // 38: lemming.dataplane.sai.GetAclTableGroupAttributeRequest - (*GetAclTableGroupAttributeResponse)(nil), // 39: lemming.dataplane.sai.GetAclTableGroupAttributeResponse - (*CreateAclTableGroupMemberRequest)(nil), // 40: lemming.dataplane.sai.CreateAclTableGroupMemberRequest - (*CreateAclTableGroupMemberResponse)(nil), // 41: lemming.dataplane.sai.CreateAclTableGroupMemberResponse - (*RemoveAclTableGroupMemberRequest)(nil), // 42: lemming.dataplane.sai.RemoveAclTableGroupMemberRequest - (*RemoveAclTableGroupMemberResponse)(nil), // 43: lemming.dataplane.sai.RemoveAclTableGroupMemberResponse - (*GetAclTableGroupMemberAttributeRequest)(nil), // 44: lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest - (*GetAclTableGroupMemberAttributeResponse)(nil), // 45: lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse - nil, // 46: lemming.dataplane.sai.CreateAclTableRequest.UserDefinedFieldGroupMinEntry - nil, // 47: lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry - nil, // 48: lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry - (AclStage)(0), // 49: lemming.dataplane.sai.AclStage - (AclBindPointType)(0), // 50: lemming.dataplane.sai.AclBindPointType - (AclActionType)(0), // 51: lemming.dataplane.sai.AclActionType - (AclRangeType)(0), // 52: lemming.dataplane.sai.AclRangeType - (*AclTableAttribute)(nil), // 53: lemming.dataplane.sai.AclTableAttribute - (*AclFieldData)(nil), // 54: lemming.dataplane.sai.AclFieldData - (*AclActionData)(nil), // 55: lemming.dataplane.sai.AclActionData - (*AclEntryAttribute)(nil), // 56: lemming.dataplane.sai.AclEntryAttribute - (*AclCounterAttribute)(nil), // 57: lemming.dataplane.sai.AclCounterAttribute - (*Uint32Range)(nil), // 58: lemming.dataplane.sai.Uint32Range - (*AclRangeAttribute)(nil), // 59: lemming.dataplane.sai.AclRangeAttribute - (AclTableGroupType)(0), // 60: lemming.dataplane.sai.AclTableGroupType - (*AclTableGroupAttribute)(nil), // 61: lemming.dataplane.sai.AclTableGroupAttribute - (*AclTableGroupMemberAttribute)(nil), // 62: lemming.dataplane.sai.AclTableGroupMemberAttribute + (AclTableChainGroupAttr)(0), // 6: lemming.dataplane.sai.AclTableChainGroupAttr + (*CreateAclTableRequest)(nil), // 7: lemming.dataplane.sai.CreateAclTableRequest + (*CreateAclTableResponse)(nil), // 8: lemming.dataplane.sai.CreateAclTableResponse + (*RemoveAclTableRequest)(nil), // 9: lemming.dataplane.sai.RemoveAclTableRequest + (*RemoveAclTableResponse)(nil), // 10: lemming.dataplane.sai.RemoveAclTableResponse + (*GetAclTableAttributeRequest)(nil), // 11: lemming.dataplane.sai.GetAclTableAttributeRequest + (*GetAclTableAttributeResponse)(nil), // 12: lemming.dataplane.sai.GetAclTableAttributeResponse + (*CreateAclEntryRequest)(nil), // 13: lemming.dataplane.sai.CreateAclEntryRequest + (*CreateAclEntryResponse)(nil), // 14: lemming.dataplane.sai.CreateAclEntryResponse + (*RemoveAclEntryRequest)(nil), // 15: lemming.dataplane.sai.RemoveAclEntryRequest + (*RemoveAclEntryResponse)(nil), // 16: lemming.dataplane.sai.RemoveAclEntryResponse + (*SetAclEntryAttributeRequest)(nil), // 17: lemming.dataplane.sai.SetAclEntryAttributeRequest + (*SetAclEntryAttributeResponse)(nil), // 18: lemming.dataplane.sai.SetAclEntryAttributeResponse + (*GetAclEntryAttributeRequest)(nil), // 19: lemming.dataplane.sai.GetAclEntryAttributeRequest + (*GetAclEntryAttributeResponse)(nil), // 20: lemming.dataplane.sai.GetAclEntryAttributeResponse + (*CreateAclCounterRequest)(nil), // 21: lemming.dataplane.sai.CreateAclCounterRequest + (*CreateAclCounterResponse)(nil), // 22: lemming.dataplane.sai.CreateAclCounterResponse + (*RemoveAclCounterRequest)(nil), // 23: lemming.dataplane.sai.RemoveAclCounterRequest + (*RemoveAclCounterResponse)(nil), // 24: lemming.dataplane.sai.RemoveAclCounterResponse + (*SetAclCounterAttributeRequest)(nil), // 25: lemming.dataplane.sai.SetAclCounterAttributeRequest + (*SetAclCounterAttributeResponse)(nil), // 26: lemming.dataplane.sai.SetAclCounterAttributeResponse + (*GetAclCounterAttributeRequest)(nil), // 27: lemming.dataplane.sai.GetAclCounterAttributeRequest + (*GetAclCounterAttributeResponse)(nil), // 28: lemming.dataplane.sai.GetAclCounterAttributeResponse + (*CreateAclRangeRequest)(nil), // 29: lemming.dataplane.sai.CreateAclRangeRequest + (*CreateAclRangeResponse)(nil), // 30: lemming.dataplane.sai.CreateAclRangeResponse + (*RemoveAclRangeRequest)(nil), // 31: lemming.dataplane.sai.RemoveAclRangeRequest + (*RemoveAclRangeResponse)(nil), // 32: lemming.dataplane.sai.RemoveAclRangeResponse + (*GetAclRangeAttributeRequest)(nil), // 33: lemming.dataplane.sai.GetAclRangeAttributeRequest + (*GetAclRangeAttributeResponse)(nil), // 34: lemming.dataplane.sai.GetAclRangeAttributeResponse + (*CreateAclTableGroupRequest)(nil), // 35: lemming.dataplane.sai.CreateAclTableGroupRequest + (*CreateAclTableGroupResponse)(nil), // 36: lemming.dataplane.sai.CreateAclTableGroupResponse + (*RemoveAclTableGroupRequest)(nil), // 37: lemming.dataplane.sai.RemoveAclTableGroupRequest + (*RemoveAclTableGroupResponse)(nil), // 38: lemming.dataplane.sai.RemoveAclTableGroupResponse + (*GetAclTableGroupAttributeRequest)(nil), // 39: lemming.dataplane.sai.GetAclTableGroupAttributeRequest + (*GetAclTableGroupAttributeResponse)(nil), // 40: lemming.dataplane.sai.GetAclTableGroupAttributeResponse + (*CreateAclTableGroupMemberRequest)(nil), // 41: lemming.dataplane.sai.CreateAclTableGroupMemberRequest + (*CreateAclTableGroupMemberResponse)(nil), // 42: lemming.dataplane.sai.CreateAclTableGroupMemberResponse + (*RemoveAclTableGroupMemberRequest)(nil), // 43: lemming.dataplane.sai.RemoveAclTableGroupMemberRequest + (*RemoveAclTableGroupMemberResponse)(nil), // 44: lemming.dataplane.sai.RemoveAclTableGroupMemberResponse + (*SetAclTableGroupMemberAttributeRequest)(nil), // 45: lemming.dataplane.sai.SetAclTableGroupMemberAttributeRequest + (*SetAclTableGroupMemberAttributeResponse)(nil), // 46: lemming.dataplane.sai.SetAclTableGroupMemberAttributeResponse + (*GetAclTableGroupMemberAttributeRequest)(nil), // 47: lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest + (*GetAclTableGroupMemberAttributeResponse)(nil), // 48: lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse + (*CreateAclTableChainGroupRequest)(nil), // 49: lemming.dataplane.sai.CreateAclTableChainGroupRequest + (*CreateAclTableChainGroupResponse)(nil), // 50: lemming.dataplane.sai.CreateAclTableChainGroupResponse + (*RemoveAclTableChainGroupRequest)(nil), // 51: lemming.dataplane.sai.RemoveAclTableChainGroupRequest + (*RemoveAclTableChainGroupResponse)(nil), // 52: lemming.dataplane.sai.RemoveAclTableChainGroupResponse + (*GetAclTableChainGroupAttributeRequest)(nil), // 53: lemming.dataplane.sai.GetAclTableChainGroupAttributeRequest + (*GetAclTableChainGroupAttributeResponse)(nil), // 54: lemming.dataplane.sai.GetAclTableChainGroupAttributeResponse + nil, // 55: lemming.dataplane.sai.CreateAclTableRequest.UserDefinedFieldGroupMinEntry + nil, // 56: lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry + nil, // 57: lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry + (AclStage)(0), // 58: lemming.dataplane.sai.AclStage + (AclBindPointType)(0), // 59: lemming.dataplane.sai.AclBindPointType + (AclActionType)(0), // 60: lemming.dataplane.sai.AclActionType + (AclRangeType)(0), // 61: lemming.dataplane.sai.AclRangeType + (AclTableMatchType)(0), // 62: lemming.dataplane.sai.AclTableMatchType + (*AclFieldData)(nil), // 63: lemming.dataplane.sai.AclFieldData + (*AclTableAttribute)(nil), // 64: lemming.dataplane.sai.AclTableAttribute + (*AclActionData)(nil), // 65: lemming.dataplane.sai.AclActionData + (*AclEntryAttribute)(nil), // 66: lemming.dataplane.sai.AclEntryAttribute + (*AclCounterAttribute)(nil), // 67: lemming.dataplane.sai.AclCounterAttribute + (*Uint32Range)(nil), // 68: lemming.dataplane.sai.Uint32Range + (*AclRangeAttribute)(nil), // 69: lemming.dataplane.sai.AclRangeAttribute + (AclTableGroupType)(0), // 70: lemming.dataplane.sai.AclTableGroupType + (*AclTableGroupAttribute)(nil), // 71: lemming.dataplane.sai.AclTableGroupAttribute + (*AclTableGroupMemberAttribute)(nil), // 72: lemming.dataplane.sai.AclTableGroupMemberAttribute + (AclTableChainGroupType)(0), // 73: lemming.dataplane.sai.AclTableChainGroupType + (AclTableChainGroupStage)(0), // 74: lemming.dataplane.sai.AclTableChainGroupStage + (*AclTableChainGroupAttribute)(nil), // 75: lemming.dataplane.sai.AclTableChainGroupAttribute } var file_dataplane_proto_sai_acl_proto_depIdxs = []int32{ - 49, // 0: lemming.dataplane.sai.CreateAclTableRequest.acl_stage:type_name -> lemming.dataplane.sai.AclStage - 50, // 1: lemming.dataplane.sai.CreateAclTableRequest.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType - 51, // 2: lemming.dataplane.sai.CreateAclTableRequest.acl_action_type_list:type_name -> lemming.dataplane.sai.AclActionType - 46, // 3: lemming.dataplane.sai.CreateAclTableRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.CreateAclTableRequest.UserDefinedFieldGroupMinEntry - 52, // 4: lemming.dataplane.sai.CreateAclTableRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclRangeType - 0, // 5: lemming.dataplane.sai.GetAclTableAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableAttr - 53, // 6: lemming.dataplane.sai.GetAclTableAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableAttribute - 54, // 7: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 8: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 9: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 10: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 11: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 12: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 13: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 14: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 15: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 16: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 17: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 18: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 19: lemming.dataplane.sai.CreateAclEntryRequest.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 20: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 21: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 22: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 23: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 24: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 25: lemming.dataplane.sai.CreateAclEntryRequest.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 26: lemming.dataplane.sai.CreateAclEntryRequest.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 27: lemming.dataplane.sai.CreateAclEntryRequest.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 28: lemming.dataplane.sai.CreateAclEntryRequest.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 29: lemming.dataplane.sai.CreateAclEntryRequest.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 30: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 31: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 32: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 33: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 34: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 35: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 36: lemming.dataplane.sai.CreateAclEntryRequest.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 37: lemming.dataplane.sai.CreateAclEntryRequest.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 38: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 39: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 40: lemming.dataplane.sai.CreateAclEntryRequest.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 41: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 42: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 43: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 44: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 45: lemming.dataplane.sai.CreateAclEntryRequest.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 46: lemming.dataplane.sai.CreateAclEntryRequest.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 47: lemming.dataplane.sai.CreateAclEntryRequest.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 48: lemming.dataplane.sai.CreateAclEntryRequest.field_tos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 49: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 50: lemming.dataplane.sai.CreateAclEntryRequest.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 51: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 52: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 53: lemming.dataplane.sai.CreateAclEntryRequest.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 54: lemming.dataplane.sai.CreateAclEntryRequest.field_tc:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 55: lemming.dataplane.sai.CreateAclEntryRequest.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 56: lemming.dataplane.sai.CreateAclEntryRequest.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 57: lemming.dataplane.sai.CreateAclEntryRequest.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 58: lemming.dataplane.sai.CreateAclEntryRequest.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 59: lemming.dataplane.sai.CreateAclEntryRequest.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 60: lemming.dataplane.sai.CreateAclEntryRequest.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 61: lemming.dataplane.sai.CreateAclEntryRequest.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 62: lemming.dataplane.sai.CreateAclEntryRequest.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 63: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 64: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 65: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 66: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 67: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 68: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 69: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 70: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 71: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 72: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 73: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 74: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 75: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 76: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 77: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 78: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 79: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 80: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 81: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 82: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 83: lemming.dataplane.sai.CreateAclEntryRequest.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 84: lemming.dataplane.sai.CreateAclEntryRequest.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 85: lemming.dataplane.sai.CreateAclEntryRequest.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 86: lemming.dataplane.sai.CreateAclEntryRequest.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 87: lemming.dataplane.sai.CreateAclEntryRequest.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 88: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 89: lemming.dataplane.sai.CreateAclEntryRequest.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 90: lemming.dataplane.sai.CreateAclEntryRequest.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 91: lemming.dataplane.sai.CreateAclEntryRequest.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 92: lemming.dataplane.sai.CreateAclEntryRequest.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 93: lemming.dataplane.sai.CreateAclEntryRequest.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData - 47, // 94: lemming.dataplane.sai.CreateAclEntryRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry - 54, // 95: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 96: lemming.dataplane.sai.CreateAclEntryRequest.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 97: lemming.dataplane.sai.CreateAclEntryRequest.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 98: lemming.dataplane.sai.CreateAclEntryRequest.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData - 55, // 99: lemming.dataplane.sai.CreateAclEntryRequest.action_redirect:type_name -> lemming.dataplane.sai.AclActionData - 55, // 100: lemming.dataplane.sai.CreateAclEntryRequest.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 101: lemming.dataplane.sai.CreateAclEntryRequest.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData - 55, // 102: lemming.dataplane.sai.CreateAclEntryRequest.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData - 55, // 103: lemming.dataplane.sai.CreateAclEntryRequest.action_flood:type_name -> lemming.dataplane.sai.AclActionData - 55, // 104: lemming.dataplane.sai.CreateAclEntryRequest.action_counter:type_name -> lemming.dataplane.sai.AclActionData - 55, // 105: lemming.dataplane.sai.CreateAclEntryRequest.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData - 55, // 106: lemming.dataplane.sai.CreateAclEntryRequest.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData - 55, // 107: lemming.dataplane.sai.CreateAclEntryRequest.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData - 55, // 108: lemming.dataplane.sai.CreateAclEntryRequest.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData - 55, // 109: lemming.dataplane.sai.CreateAclEntryRequest.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData - 55, // 110: lemming.dataplane.sai.CreateAclEntryRequest.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData - 55, // 111: lemming.dataplane.sai.CreateAclEntryRequest.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 112: lemming.dataplane.sai.CreateAclEntryRequest.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 113: lemming.dataplane.sai.CreateAclEntryRequest.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 114: lemming.dataplane.sai.CreateAclEntryRequest.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 115: lemming.dataplane.sai.CreateAclEntryRequest.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 116: lemming.dataplane.sai.CreateAclEntryRequest.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 117: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData - 55, // 118: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData - 55, // 119: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 120: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 121: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 55, // 122: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 55, // 123: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData - 55, // 124: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData - 55, // 125: lemming.dataplane.sai.CreateAclEntryRequest.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData - 55, // 126: lemming.dataplane.sai.CreateAclEntryRequest.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData - 55, // 127: lemming.dataplane.sai.CreateAclEntryRequest.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 128: lemming.dataplane.sai.CreateAclEntryRequest.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 129: lemming.dataplane.sai.CreateAclEntryRequest.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData - 55, // 130: lemming.dataplane.sai.CreateAclEntryRequest.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData - 55, // 131: lemming.dataplane.sai.CreateAclEntryRequest.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 132: lemming.dataplane.sai.CreateAclEntryRequest.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData - 55, // 133: lemming.dataplane.sai.CreateAclEntryRequest.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData - 55, // 134: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData - 55, // 135: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 136: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 137: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData - 55, // 138: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData - 55, // 139: lemming.dataplane.sai.CreateAclEntryRequest.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData - 55, // 140: lemming.dataplane.sai.CreateAclEntryRequest.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData - 55, // 141: lemming.dataplane.sai.CreateAclEntryRequest.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData - 55, // 142: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData - 55, // 143: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData - 55, // 144: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData - 55, // 145: lemming.dataplane.sai.CreateAclEntryRequest.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData - 55, // 146: lemming.dataplane.sai.CreateAclEntryRequest.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData - 55, // 147: lemming.dataplane.sai.CreateAclEntryRequest.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData - 55, // 148: lemming.dataplane.sai.CreateAclEntryRequest.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 149: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 150: lemming.dataplane.sai.CreateAclEntryRequest.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData - 55, // 151: lemming.dataplane.sai.CreateAclEntryRequest.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData - 54, // 152: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 153: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 154: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 155: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 156: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 157: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 158: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 159: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 160: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 161: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 162: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 163: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 164: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 165: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 166: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 167: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 168: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 169: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 170: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 171: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 172: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 173: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 174: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 175: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 176: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 177: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 178: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 179: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 180: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 181: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 182: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 183: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 184: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 185: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 186: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 187: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 188: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 189: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 190: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 191: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 192: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 193: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 194: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 195: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 196: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 197: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 198: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 199: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tc:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 200: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 201: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 202: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 203: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 204: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 205: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 206: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 207: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 208: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 209: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 210: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 211: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 212: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 213: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 214: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 215: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 216: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 217: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 218: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 219: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 220: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 221: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 222: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 223: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 224: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 225: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 226: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 227: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 228: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 229: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 230: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 231: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 232: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 233: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 234: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 235: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 236: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 237: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 238: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData - 48, // 239: lemming.dataplane.sai.SetAclEntryAttributeRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry - 54, // 240: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 241: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 242: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 243: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData - 55, // 244: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_redirect:type_name -> lemming.dataplane.sai.AclActionData - 55, // 245: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 246: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData - 55, // 247: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData - 55, // 248: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_flood:type_name -> lemming.dataplane.sai.AclActionData - 55, // 249: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_counter:type_name -> lemming.dataplane.sai.AclActionData - 55, // 250: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData - 55, // 251: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData - 55, // 252: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData - 55, // 253: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData - 55, // 254: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData - 55, // 255: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData - 55, // 256: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 257: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 258: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 259: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 260: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 261: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 55, // 262: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData - 55, // 263: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData - 55, // 264: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 265: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData - 55, // 266: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 55, // 267: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 55, // 268: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData - 55, // 269: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData - 55, // 270: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData - 55, // 271: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData - 55, // 272: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 273: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 274: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData - 55, // 275: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData - 55, // 276: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 277: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData - 55, // 278: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData - 55, // 279: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData - 55, // 280: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 281: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 55, // 282: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData - 55, // 283: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData - 55, // 284: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData - 55, // 285: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData - 55, // 286: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData - 55, // 287: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData - 55, // 288: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData - 55, // 289: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData - 55, // 290: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData - 55, // 291: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData - 55, // 292: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData - 55, // 293: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 294: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 55, // 295: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData - 55, // 296: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData - 1, // 297: lemming.dataplane.sai.GetAclEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclEntryAttr - 56, // 298: lemming.dataplane.sai.GetAclEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclEntryAttribute - 2, // 299: lemming.dataplane.sai.GetAclCounterAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclCounterAttr - 57, // 300: lemming.dataplane.sai.GetAclCounterAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclCounterAttribute - 52, // 301: lemming.dataplane.sai.CreateAclRangeRequest.type:type_name -> lemming.dataplane.sai.AclRangeType - 58, // 302: lemming.dataplane.sai.CreateAclRangeRequest.limit:type_name -> lemming.dataplane.sai.Uint32Range - 3, // 303: lemming.dataplane.sai.GetAclRangeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclRangeAttr - 59, // 304: lemming.dataplane.sai.GetAclRangeAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclRangeAttribute - 49, // 305: lemming.dataplane.sai.CreateAclTableGroupRequest.acl_stage:type_name -> lemming.dataplane.sai.AclStage - 50, // 306: lemming.dataplane.sai.CreateAclTableGroupRequest.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType - 60, // 307: lemming.dataplane.sai.CreateAclTableGroupRequest.type:type_name -> lemming.dataplane.sai.AclTableGroupType - 4, // 308: lemming.dataplane.sai.GetAclTableGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableGroupAttr - 61, // 309: lemming.dataplane.sai.GetAclTableGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableGroupAttribute - 5, // 310: lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableGroupMemberAttr - 62, // 311: lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableGroupMemberAttribute - 54, // 312: lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData - 54, // 313: lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData - 6, // 314: lemming.dataplane.sai.Acl.CreateAclTable:input_type -> lemming.dataplane.sai.CreateAclTableRequest - 8, // 315: lemming.dataplane.sai.Acl.RemoveAclTable:input_type -> lemming.dataplane.sai.RemoveAclTableRequest - 10, // 316: lemming.dataplane.sai.Acl.GetAclTableAttribute:input_type -> lemming.dataplane.sai.GetAclTableAttributeRequest - 12, // 317: lemming.dataplane.sai.Acl.CreateAclEntry:input_type -> lemming.dataplane.sai.CreateAclEntryRequest - 14, // 318: lemming.dataplane.sai.Acl.RemoveAclEntry:input_type -> lemming.dataplane.sai.RemoveAclEntryRequest - 16, // 319: lemming.dataplane.sai.Acl.SetAclEntryAttribute:input_type -> lemming.dataplane.sai.SetAclEntryAttributeRequest - 18, // 320: lemming.dataplane.sai.Acl.GetAclEntryAttribute:input_type -> lemming.dataplane.sai.GetAclEntryAttributeRequest - 20, // 321: lemming.dataplane.sai.Acl.CreateAclCounter:input_type -> lemming.dataplane.sai.CreateAclCounterRequest - 22, // 322: lemming.dataplane.sai.Acl.RemoveAclCounter:input_type -> lemming.dataplane.sai.RemoveAclCounterRequest - 24, // 323: lemming.dataplane.sai.Acl.SetAclCounterAttribute:input_type -> lemming.dataplane.sai.SetAclCounterAttributeRequest - 26, // 324: lemming.dataplane.sai.Acl.GetAclCounterAttribute:input_type -> lemming.dataplane.sai.GetAclCounterAttributeRequest - 28, // 325: lemming.dataplane.sai.Acl.CreateAclRange:input_type -> lemming.dataplane.sai.CreateAclRangeRequest - 30, // 326: lemming.dataplane.sai.Acl.RemoveAclRange:input_type -> lemming.dataplane.sai.RemoveAclRangeRequest - 32, // 327: lemming.dataplane.sai.Acl.GetAclRangeAttribute:input_type -> lemming.dataplane.sai.GetAclRangeAttributeRequest - 34, // 328: lemming.dataplane.sai.Acl.CreateAclTableGroup:input_type -> lemming.dataplane.sai.CreateAclTableGroupRequest - 36, // 329: lemming.dataplane.sai.Acl.RemoveAclTableGroup:input_type -> lemming.dataplane.sai.RemoveAclTableGroupRequest - 38, // 330: lemming.dataplane.sai.Acl.GetAclTableGroupAttribute:input_type -> lemming.dataplane.sai.GetAclTableGroupAttributeRequest - 40, // 331: lemming.dataplane.sai.Acl.CreateAclTableGroupMember:input_type -> lemming.dataplane.sai.CreateAclTableGroupMemberRequest - 42, // 332: lemming.dataplane.sai.Acl.RemoveAclTableGroupMember:input_type -> lemming.dataplane.sai.RemoveAclTableGroupMemberRequest - 44, // 333: lemming.dataplane.sai.Acl.GetAclTableGroupMemberAttribute:input_type -> lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest - 7, // 334: lemming.dataplane.sai.Acl.CreateAclTable:output_type -> lemming.dataplane.sai.CreateAclTableResponse - 9, // 335: lemming.dataplane.sai.Acl.RemoveAclTable:output_type -> lemming.dataplane.sai.RemoveAclTableResponse - 11, // 336: lemming.dataplane.sai.Acl.GetAclTableAttribute:output_type -> lemming.dataplane.sai.GetAclTableAttributeResponse - 13, // 337: lemming.dataplane.sai.Acl.CreateAclEntry:output_type -> lemming.dataplane.sai.CreateAclEntryResponse - 15, // 338: lemming.dataplane.sai.Acl.RemoveAclEntry:output_type -> lemming.dataplane.sai.RemoveAclEntryResponse - 17, // 339: lemming.dataplane.sai.Acl.SetAclEntryAttribute:output_type -> lemming.dataplane.sai.SetAclEntryAttributeResponse - 19, // 340: lemming.dataplane.sai.Acl.GetAclEntryAttribute:output_type -> lemming.dataplane.sai.GetAclEntryAttributeResponse - 21, // 341: lemming.dataplane.sai.Acl.CreateAclCounter:output_type -> lemming.dataplane.sai.CreateAclCounterResponse - 23, // 342: lemming.dataplane.sai.Acl.RemoveAclCounter:output_type -> lemming.dataplane.sai.RemoveAclCounterResponse - 25, // 343: lemming.dataplane.sai.Acl.SetAclCounterAttribute:output_type -> lemming.dataplane.sai.SetAclCounterAttributeResponse - 27, // 344: lemming.dataplane.sai.Acl.GetAclCounterAttribute:output_type -> lemming.dataplane.sai.GetAclCounterAttributeResponse - 29, // 345: lemming.dataplane.sai.Acl.CreateAclRange:output_type -> lemming.dataplane.sai.CreateAclRangeResponse - 31, // 346: lemming.dataplane.sai.Acl.RemoveAclRange:output_type -> lemming.dataplane.sai.RemoveAclRangeResponse - 33, // 347: lemming.dataplane.sai.Acl.GetAclRangeAttribute:output_type -> lemming.dataplane.sai.GetAclRangeAttributeResponse - 35, // 348: lemming.dataplane.sai.Acl.CreateAclTableGroup:output_type -> lemming.dataplane.sai.CreateAclTableGroupResponse - 37, // 349: lemming.dataplane.sai.Acl.RemoveAclTableGroup:output_type -> lemming.dataplane.sai.RemoveAclTableGroupResponse - 39, // 350: lemming.dataplane.sai.Acl.GetAclTableGroupAttribute:output_type -> lemming.dataplane.sai.GetAclTableGroupAttributeResponse - 41, // 351: lemming.dataplane.sai.Acl.CreateAclTableGroupMember:output_type -> lemming.dataplane.sai.CreateAclTableGroupMemberResponse - 43, // 352: lemming.dataplane.sai.Acl.RemoveAclTableGroupMember:output_type -> lemming.dataplane.sai.RemoveAclTableGroupMemberResponse - 45, // 353: lemming.dataplane.sai.Acl.GetAclTableGroupMemberAttribute:output_type -> lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse - 334, // [334:354] is the sub-list for method output_type - 314, // [314:334] is the sub-list for method input_type - 314, // [314:314] is the sub-list for extension type_name - 314, // [314:314] is the sub-list for extension extendee - 0, // [0:314] is the sub-list for field type_name + 58, // 0: lemming.dataplane.sai.CreateAclTableRequest.acl_stage:type_name -> lemming.dataplane.sai.AclStage + 59, // 1: lemming.dataplane.sai.CreateAclTableRequest.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType + 60, // 2: lemming.dataplane.sai.CreateAclTableRequest.acl_action_type_list:type_name -> lemming.dataplane.sai.AclActionType + 55, // 3: lemming.dataplane.sai.CreateAclTableRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.CreateAclTableRequest.UserDefinedFieldGroupMinEntry + 61, // 4: lemming.dataplane.sai.CreateAclTableRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclRangeType + 62, // 5: lemming.dataplane.sai.CreateAclTableRequest.acl_table_match_type:type_name -> lemming.dataplane.sai.AclTableMatchType + 63, // 6: lemming.dataplane.sai.CreateAclTableRequest.field_valid_bits_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 7: lemming.dataplane.sai.CreateAclTableRequest.field_valid_bits_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 0, // 8: lemming.dataplane.sai.GetAclTableAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableAttr + 64, // 9: lemming.dataplane.sai.GetAclTableAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableAttribute + 63, // 10: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 11: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 12: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 13: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 14: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 15: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 16: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 17: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 18: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 19: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 20: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 21: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 22: lemming.dataplane.sai.CreateAclEntryRequest.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 23: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 24: lemming.dataplane.sai.CreateAclEntryRequest.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 25: lemming.dataplane.sai.CreateAclEntryRequest.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 26: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 27: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 28: lemming.dataplane.sai.CreateAclEntryRequest.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 29: lemming.dataplane.sai.CreateAclEntryRequest.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 30: lemming.dataplane.sai.CreateAclEntryRequest.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 31: lemming.dataplane.sai.CreateAclEntryRequest.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 32: lemming.dataplane.sai.CreateAclEntryRequest.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 33: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 34: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 35: lemming.dataplane.sai.CreateAclEntryRequest.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 36: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 37: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 38: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 39: lemming.dataplane.sai.CreateAclEntryRequest.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 40: lemming.dataplane.sai.CreateAclEntryRequest.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 41: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 42: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 43: lemming.dataplane.sai.CreateAclEntryRequest.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 44: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 45: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 46: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 47: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 48: lemming.dataplane.sai.CreateAclEntryRequest.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 49: lemming.dataplane.sai.CreateAclEntryRequest.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 50: lemming.dataplane.sai.CreateAclEntryRequest.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 51: lemming.dataplane.sai.CreateAclEntryRequest.field_tos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 52: lemming.dataplane.sai.CreateAclEntryRequest.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 53: lemming.dataplane.sai.CreateAclEntryRequest.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 54: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 55: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 56: lemming.dataplane.sai.CreateAclEntryRequest.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 57: lemming.dataplane.sai.CreateAclEntryRequest.field_tc:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 58: lemming.dataplane.sai.CreateAclEntryRequest.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 59: lemming.dataplane.sai.CreateAclEntryRequest.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 60: lemming.dataplane.sai.CreateAclEntryRequest.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 61: lemming.dataplane.sai.CreateAclEntryRequest.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 62: lemming.dataplane.sai.CreateAclEntryRequest.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 63: lemming.dataplane.sai.CreateAclEntryRequest.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 64: lemming.dataplane.sai.CreateAclEntryRequest.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 65: lemming.dataplane.sai.CreateAclEntryRequest.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 66: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 67: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 68: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 69: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 70: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 71: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 72: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 73: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 74: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 75: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 76: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 77: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 78: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 79: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 80: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 81: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 82: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 83: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 84: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 85: lemming.dataplane.sai.CreateAclEntryRequest.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 86: lemming.dataplane.sai.CreateAclEntryRequest.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 87: lemming.dataplane.sai.CreateAclEntryRequest.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 88: lemming.dataplane.sai.CreateAclEntryRequest.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 89: lemming.dataplane.sai.CreateAclEntryRequest.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 90: lemming.dataplane.sai.CreateAclEntryRequest.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 91: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 92: lemming.dataplane.sai.CreateAclEntryRequest.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 93: lemming.dataplane.sai.CreateAclEntryRequest.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 94: lemming.dataplane.sai.CreateAclEntryRequest.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 95: lemming.dataplane.sai.CreateAclEntryRequest.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 96: lemming.dataplane.sai.CreateAclEntryRequest.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData + 56, // 97: lemming.dataplane.sai.CreateAclEntryRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry + 63, // 98: lemming.dataplane.sai.CreateAclEntryRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 99: lemming.dataplane.sai.CreateAclEntryRequest.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 100: lemming.dataplane.sai.CreateAclEntryRequest.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 101: lemming.dataplane.sai.CreateAclEntryRequest.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 102: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 103: lemming.dataplane.sai.CreateAclEntryRequest.field_inner_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 104: lemming.dataplane.sai.CreateAclEntryRequest.field_vrf_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 105: lemming.dataplane.sai.CreateAclEntryRequest.field_ipmc_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 106: lemming.dataplane.sai.CreateAclEntryRequest.field_tunnel_terminated:type_name -> lemming.dataplane.sai.AclFieldData + 65, // 107: lemming.dataplane.sai.CreateAclEntryRequest.action_redirect:type_name -> lemming.dataplane.sai.AclActionData + 65, // 108: lemming.dataplane.sai.CreateAclEntryRequest.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 109: lemming.dataplane.sai.CreateAclEntryRequest.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData + 65, // 110: lemming.dataplane.sai.CreateAclEntryRequest.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData + 65, // 111: lemming.dataplane.sai.CreateAclEntryRequest.action_flood:type_name -> lemming.dataplane.sai.AclActionData + 65, // 112: lemming.dataplane.sai.CreateAclEntryRequest.action_counter:type_name -> lemming.dataplane.sai.AclActionData + 65, // 113: lemming.dataplane.sai.CreateAclEntryRequest.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData + 65, // 114: lemming.dataplane.sai.CreateAclEntryRequest.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData + 65, // 115: lemming.dataplane.sai.CreateAclEntryRequest.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData + 65, // 116: lemming.dataplane.sai.CreateAclEntryRequest.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData + 65, // 117: lemming.dataplane.sai.CreateAclEntryRequest.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData + 65, // 118: lemming.dataplane.sai.CreateAclEntryRequest.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData + 65, // 119: lemming.dataplane.sai.CreateAclEntryRequest.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 120: lemming.dataplane.sai.CreateAclEntryRequest.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 121: lemming.dataplane.sai.CreateAclEntryRequest.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 122: lemming.dataplane.sai.CreateAclEntryRequest.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 123: lemming.dataplane.sai.CreateAclEntryRequest.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 124: lemming.dataplane.sai.CreateAclEntryRequest.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 125: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData + 65, // 126: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData + 65, // 127: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 128: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 129: lemming.dataplane.sai.CreateAclEntryRequest.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 65, // 130: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 65, // 131: lemming.dataplane.sai.CreateAclEntryRequest.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData + 65, // 132: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData + 65, // 133: lemming.dataplane.sai.CreateAclEntryRequest.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData + 65, // 134: lemming.dataplane.sai.CreateAclEntryRequest.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData + 65, // 135: lemming.dataplane.sai.CreateAclEntryRequest.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 136: lemming.dataplane.sai.CreateAclEntryRequest.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 137: lemming.dataplane.sai.CreateAclEntryRequest.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData + 65, // 138: lemming.dataplane.sai.CreateAclEntryRequest.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData + 65, // 139: lemming.dataplane.sai.CreateAclEntryRequest.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 140: lemming.dataplane.sai.CreateAclEntryRequest.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData + 65, // 141: lemming.dataplane.sai.CreateAclEntryRequest.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData + 65, // 142: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData + 65, // 143: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 144: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 145: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData + 65, // 146: lemming.dataplane.sai.CreateAclEntryRequest.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData + 65, // 147: lemming.dataplane.sai.CreateAclEntryRequest.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData + 65, // 148: lemming.dataplane.sai.CreateAclEntryRequest.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData + 65, // 149: lemming.dataplane.sai.CreateAclEntryRequest.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData + 65, // 150: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData + 65, // 151: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData + 65, // 152: lemming.dataplane.sai.CreateAclEntryRequest.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData + 65, // 153: lemming.dataplane.sai.CreateAclEntryRequest.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData + 65, // 154: lemming.dataplane.sai.CreateAclEntryRequest.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData + 65, // 155: lemming.dataplane.sai.CreateAclEntryRequest.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData + 65, // 156: lemming.dataplane.sai.CreateAclEntryRequest.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 157: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 158: lemming.dataplane.sai.CreateAclEntryRequest.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData + 65, // 159: lemming.dataplane.sai.CreateAclEntryRequest.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData + 65, // 160: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ars_monitoring:type_name -> lemming.dataplane.sai.AclActionData + 65, // 161: lemming.dataplane.sai.CreateAclEntryRequest.action_set_ars_object:type_name -> lemming.dataplane.sai.AclActionData + 65, // 162: lemming.dataplane.sai.CreateAclEntryRequest.action_disable_ars_forwarding:type_name -> lemming.dataplane.sai.AclActionData + 65, // 163: lemming.dataplane.sai.CreateAclEntryRequest.action_chain_redirect:type_name -> lemming.dataplane.sai.AclActionData + 63, // 164: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 165: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 166: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 167: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 168: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 169: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 170: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 171: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 172: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 173: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 174: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 175: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 176: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 177: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 178: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 179: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 180: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 181: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 182: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 183: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 184: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 185: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 186: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 187: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 188: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 189: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 190: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 191: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 192: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 193: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 194: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 195: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 196: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 197: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 198: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 199: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 200: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 201: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 202: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 203: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 204: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 205: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 206: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 207: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 208: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 209: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 210: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 211: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tc:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 212: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 213: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 214: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 215: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 216: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 217: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 218: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 219: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 220: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 221: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 222: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 223: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 224: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 225: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 226: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 227: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 228: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 229: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 230: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 231: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 232: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 233: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 234: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 235: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 236: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 237: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 238: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 239: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 240: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 241: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 242: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 243: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 244: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 245: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 246: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 247: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 248: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 249: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 250: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData + 57, // 251: lemming.dataplane.sai.SetAclEntryAttributeRequest.user_defined_field_group_min:type_name -> lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry + 63, // 252: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 253: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 254: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 255: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 256: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 257: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_inner_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 258: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_vrf_id:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 259: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_ipmc_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 260: lemming.dataplane.sai.SetAclEntryAttributeRequest.field_tunnel_terminated:type_name -> lemming.dataplane.sai.AclFieldData + 65, // 261: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_redirect:type_name -> lemming.dataplane.sai.AclActionData + 65, // 262: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 263: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData + 65, // 264: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData + 65, // 265: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_flood:type_name -> lemming.dataplane.sai.AclActionData + 65, // 266: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_counter:type_name -> lemming.dataplane.sai.AclActionData + 65, // 267: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData + 65, // 268: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData + 65, // 269: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData + 65, // 270: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData + 65, // 271: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData + 65, // 272: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData + 65, // 273: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 274: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 275: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 276: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 277: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 278: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 65, // 279: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData + 65, // 280: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData + 65, // 281: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 282: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData + 65, // 283: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 65, // 284: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 65, // 285: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData + 65, // 286: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData + 65, // 287: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData + 65, // 288: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData + 65, // 289: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 290: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 291: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData + 65, // 292: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData + 65, // 293: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 294: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData + 65, // 295: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData + 65, // 296: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData + 65, // 297: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 298: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 65, // 299: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData + 65, // 300: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData + 65, // 301: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData + 65, // 302: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData + 65, // 303: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData + 65, // 304: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData + 65, // 305: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData + 65, // 306: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData + 65, // 307: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData + 65, // 308: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData + 65, // 309: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData + 65, // 310: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 311: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 65, // 312: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData + 65, // 313: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData + 65, // 314: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ars_monitoring:type_name -> lemming.dataplane.sai.AclActionData + 65, // 315: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_set_ars_object:type_name -> lemming.dataplane.sai.AclActionData + 65, // 316: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_disable_ars_forwarding:type_name -> lemming.dataplane.sai.AclActionData + 65, // 317: lemming.dataplane.sai.SetAclEntryAttributeRequest.action_chain_redirect:type_name -> lemming.dataplane.sai.AclActionData + 1, // 318: lemming.dataplane.sai.GetAclEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclEntryAttr + 66, // 319: lemming.dataplane.sai.GetAclEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclEntryAttribute + 2, // 320: lemming.dataplane.sai.GetAclCounterAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclCounterAttr + 67, // 321: lemming.dataplane.sai.GetAclCounterAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclCounterAttribute + 61, // 322: lemming.dataplane.sai.CreateAclRangeRequest.type:type_name -> lemming.dataplane.sai.AclRangeType + 68, // 323: lemming.dataplane.sai.CreateAclRangeRequest.limit:type_name -> lemming.dataplane.sai.Uint32Range + 3, // 324: lemming.dataplane.sai.GetAclRangeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclRangeAttr + 69, // 325: lemming.dataplane.sai.GetAclRangeAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclRangeAttribute + 58, // 326: lemming.dataplane.sai.CreateAclTableGroupRequest.acl_stage:type_name -> lemming.dataplane.sai.AclStage + 59, // 327: lemming.dataplane.sai.CreateAclTableGroupRequest.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType + 70, // 328: lemming.dataplane.sai.CreateAclTableGroupRequest.type:type_name -> lemming.dataplane.sai.AclTableGroupType + 4, // 329: lemming.dataplane.sai.GetAclTableGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableGroupAttr + 71, // 330: lemming.dataplane.sai.GetAclTableGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableGroupAttribute + 5, // 331: lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableGroupMemberAttr + 72, // 332: lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableGroupMemberAttribute + 73, // 333: lemming.dataplane.sai.CreateAclTableChainGroupRequest.type:type_name -> lemming.dataplane.sai.AclTableChainGroupType + 74, // 334: lemming.dataplane.sai.CreateAclTableChainGroupRequest.stage:type_name -> lemming.dataplane.sai.AclTableChainGroupStage + 6, // 335: lemming.dataplane.sai.GetAclTableChainGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.AclTableChainGroupAttr + 75, // 336: lemming.dataplane.sai.GetAclTableChainGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.AclTableChainGroupAttribute + 63, // 337: lemming.dataplane.sai.CreateAclEntryRequest.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData + 63, // 338: lemming.dataplane.sai.SetAclEntryAttributeRequest.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData + 7, // 339: lemming.dataplane.sai.Acl.CreateAclTable:input_type -> lemming.dataplane.sai.CreateAclTableRequest + 9, // 340: lemming.dataplane.sai.Acl.RemoveAclTable:input_type -> lemming.dataplane.sai.RemoveAclTableRequest + 11, // 341: lemming.dataplane.sai.Acl.GetAclTableAttribute:input_type -> lemming.dataplane.sai.GetAclTableAttributeRequest + 13, // 342: lemming.dataplane.sai.Acl.CreateAclEntry:input_type -> lemming.dataplane.sai.CreateAclEntryRequest + 15, // 343: lemming.dataplane.sai.Acl.RemoveAclEntry:input_type -> lemming.dataplane.sai.RemoveAclEntryRequest + 17, // 344: lemming.dataplane.sai.Acl.SetAclEntryAttribute:input_type -> lemming.dataplane.sai.SetAclEntryAttributeRequest + 19, // 345: lemming.dataplane.sai.Acl.GetAclEntryAttribute:input_type -> lemming.dataplane.sai.GetAclEntryAttributeRequest + 21, // 346: lemming.dataplane.sai.Acl.CreateAclCounter:input_type -> lemming.dataplane.sai.CreateAclCounterRequest + 23, // 347: lemming.dataplane.sai.Acl.RemoveAclCounter:input_type -> lemming.dataplane.sai.RemoveAclCounterRequest + 25, // 348: lemming.dataplane.sai.Acl.SetAclCounterAttribute:input_type -> lemming.dataplane.sai.SetAclCounterAttributeRequest + 27, // 349: lemming.dataplane.sai.Acl.GetAclCounterAttribute:input_type -> lemming.dataplane.sai.GetAclCounterAttributeRequest + 29, // 350: lemming.dataplane.sai.Acl.CreateAclRange:input_type -> lemming.dataplane.sai.CreateAclRangeRequest + 31, // 351: lemming.dataplane.sai.Acl.RemoveAclRange:input_type -> lemming.dataplane.sai.RemoveAclRangeRequest + 33, // 352: lemming.dataplane.sai.Acl.GetAclRangeAttribute:input_type -> lemming.dataplane.sai.GetAclRangeAttributeRequest + 35, // 353: lemming.dataplane.sai.Acl.CreateAclTableGroup:input_type -> lemming.dataplane.sai.CreateAclTableGroupRequest + 37, // 354: lemming.dataplane.sai.Acl.RemoveAclTableGroup:input_type -> lemming.dataplane.sai.RemoveAclTableGroupRequest + 39, // 355: lemming.dataplane.sai.Acl.GetAclTableGroupAttribute:input_type -> lemming.dataplane.sai.GetAclTableGroupAttributeRequest + 41, // 356: lemming.dataplane.sai.Acl.CreateAclTableGroupMember:input_type -> lemming.dataplane.sai.CreateAclTableGroupMemberRequest + 43, // 357: lemming.dataplane.sai.Acl.RemoveAclTableGroupMember:input_type -> lemming.dataplane.sai.RemoveAclTableGroupMemberRequest + 45, // 358: lemming.dataplane.sai.Acl.SetAclTableGroupMemberAttribute:input_type -> lemming.dataplane.sai.SetAclTableGroupMemberAttributeRequest + 47, // 359: lemming.dataplane.sai.Acl.GetAclTableGroupMemberAttribute:input_type -> lemming.dataplane.sai.GetAclTableGroupMemberAttributeRequest + 49, // 360: lemming.dataplane.sai.Acl.CreateAclTableChainGroup:input_type -> lemming.dataplane.sai.CreateAclTableChainGroupRequest + 51, // 361: lemming.dataplane.sai.Acl.RemoveAclTableChainGroup:input_type -> lemming.dataplane.sai.RemoveAclTableChainGroupRequest + 53, // 362: lemming.dataplane.sai.Acl.GetAclTableChainGroupAttribute:input_type -> lemming.dataplane.sai.GetAclTableChainGroupAttributeRequest + 8, // 363: lemming.dataplane.sai.Acl.CreateAclTable:output_type -> lemming.dataplane.sai.CreateAclTableResponse + 10, // 364: lemming.dataplane.sai.Acl.RemoveAclTable:output_type -> lemming.dataplane.sai.RemoveAclTableResponse + 12, // 365: lemming.dataplane.sai.Acl.GetAclTableAttribute:output_type -> lemming.dataplane.sai.GetAclTableAttributeResponse + 14, // 366: lemming.dataplane.sai.Acl.CreateAclEntry:output_type -> lemming.dataplane.sai.CreateAclEntryResponse + 16, // 367: lemming.dataplane.sai.Acl.RemoveAclEntry:output_type -> lemming.dataplane.sai.RemoveAclEntryResponse + 18, // 368: lemming.dataplane.sai.Acl.SetAclEntryAttribute:output_type -> lemming.dataplane.sai.SetAclEntryAttributeResponse + 20, // 369: lemming.dataplane.sai.Acl.GetAclEntryAttribute:output_type -> lemming.dataplane.sai.GetAclEntryAttributeResponse + 22, // 370: lemming.dataplane.sai.Acl.CreateAclCounter:output_type -> lemming.dataplane.sai.CreateAclCounterResponse + 24, // 371: lemming.dataplane.sai.Acl.RemoveAclCounter:output_type -> lemming.dataplane.sai.RemoveAclCounterResponse + 26, // 372: lemming.dataplane.sai.Acl.SetAclCounterAttribute:output_type -> lemming.dataplane.sai.SetAclCounterAttributeResponse + 28, // 373: lemming.dataplane.sai.Acl.GetAclCounterAttribute:output_type -> lemming.dataplane.sai.GetAclCounterAttributeResponse + 30, // 374: lemming.dataplane.sai.Acl.CreateAclRange:output_type -> lemming.dataplane.sai.CreateAclRangeResponse + 32, // 375: lemming.dataplane.sai.Acl.RemoveAclRange:output_type -> lemming.dataplane.sai.RemoveAclRangeResponse + 34, // 376: lemming.dataplane.sai.Acl.GetAclRangeAttribute:output_type -> lemming.dataplane.sai.GetAclRangeAttributeResponse + 36, // 377: lemming.dataplane.sai.Acl.CreateAclTableGroup:output_type -> lemming.dataplane.sai.CreateAclTableGroupResponse + 38, // 378: lemming.dataplane.sai.Acl.RemoveAclTableGroup:output_type -> lemming.dataplane.sai.RemoveAclTableGroupResponse + 40, // 379: lemming.dataplane.sai.Acl.GetAclTableGroupAttribute:output_type -> lemming.dataplane.sai.GetAclTableGroupAttributeResponse + 42, // 380: lemming.dataplane.sai.Acl.CreateAclTableGroupMember:output_type -> lemming.dataplane.sai.CreateAclTableGroupMemberResponse + 44, // 381: lemming.dataplane.sai.Acl.RemoveAclTableGroupMember:output_type -> lemming.dataplane.sai.RemoveAclTableGroupMemberResponse + 46, // 382: lemming.dataplane.sai.Acl.SetAclTableGroupMemberAttribute:output_type -> lemming.dataplane.sai.SetAclTableGroupMemberAttributeResponse + 48, // 383: lemming.dataplane.sai.Acl.GetAclTableGroupMemberAttribute:output_type -> lemming.dataplane.sai.GetAclTableGroupMemberAttributeResponse + 50, // 384: lemming.dataplane.sai.Acl.CreateAclTableChainGroup:output_type -> lemming.dataplane.sai.CreateAclTableChainGroupResponse + 52, // 385: lemming.dataplane.sai.Acl.RemoveAclTableChainGroup:output_type -> lemming.dataplane.sai.RemoveAclTableChainGroupResponse + 54, // 386: lemming.dataplane.sai.Acl.GetAclTableChainGroupAttribute:output_type -> lemming.dataplane.sai.GetAclTableChainGroupAttributeResponse + 363, // [363:387] is the sub-list for method output_type + 339, // [339:363] is the sub-list for method input_type + 339, // [339:339] is the sub-list for extension type_name + 339, // [339:339] is the sub-list for extension extendee + 0, // [0:339] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_acl_proto_init() } @@ -10412,13 +11509,15 @@ func file_dataplane_proto_sai_acl_proto_init() { file_dataplane_proto_sai_acl_proto_msgTypes[22].OneofWrappers = []any{} file_dataplane_proto_sai_acl_proto_msgTypes[28].OneofWrappers = []any{} file_dataplane_proto_sai_acl_proto_msgTypes[34].OneofWrappers = []any{} + file_dataplane_proto_sai_acl_proto_msgTypes[38].OneofWrappers = []any{} + file_dataplane_proto_sai_acl_proto_msgTypes[42].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dataplane_proto_sai_acl_proto_rawDesc, - NumEnums: 6, - NumMessages: 43, + NumEnums: 7, + NumMessages: 51, NumExtensions: 0, NumServices: 1, }, @@ -10464,7 +11563,11 @@ type AclClient interface { GetAclTableGroupAttribute(ctx context.Context, in *GetAclTableGroupAttributeRequest, opts ...grpc.CallOption) (*GetAclTableGroupAttributeResponse, error) CreateAclTableGroupMember(ctx context.Context, in *CreateAclTableGroupMemberRequest, opts ...grpc.CallOption) (*CreateAclTableGroupMemberResponse, error) RemoveAclTableGroupMember(ctx context.Context, in *RemoveAclTableGroupMemberRequest, opts ...grpc.CallOption) (*RemoveAclTableGroupMemberResponse, error) + SetAclTableGroupMemberAttribute(ctx context.Context, in *SetAclTableGroupMemberAttributeRequest, opts ...grpc.CallOption) (*SetAclTableGroupMemberAttributeResponse, error) GetAclTableGroupMemberAttribute(ctx context.Context, in *GetAclTableGroupMemberAttributeRequest, opts ...grpc.CallOption) (*GetAclTableGroupMemberAttributeResponse, error) + CreateAclTableChainGroup(ctx context.Context, in *CreateAclTableChainGroupRequest, opts ...grpc.CallOption) (*CreateAclTableChainGroupResponse, error) + RemoveAclTableChainGroup(ctx context.Context, in *RemoveAclTableChainGroupRequest, opts ...grpc.CallOption) (*RemoveAclTableChainGroupResponse, error) + GetAclTableChainGroupAttribute(ctx context.Context, in *GetAclTableChainGroupAttributeRequest, opts ...grpc.CallOption) (*GetAclTableChainGroupAttributeResponse, error) } type aclClient struct { @@ -10646,6 +11749,15 @@ func (c *aclClient) RemoveAclTableGroupMember(ctx context.Context, in *RemoveAcl return out, nil } +func (c *aclClient) SetAclTableGroupMemberAttribute(ctx context.Context, in *SetAclTableGroupMemberAttributeRequest, opts ...grpc.CallOption) (*SetAclTableGroupMemberAttributeResponse, error) { + out := new(SetAclTableGroupMemberAttributeResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Acl/SetAclTableGroupMemberAttribute", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *aclClient) GetAclTableGroupMemberAttribute(ctx context.Context, in *GetAclTableGroupMemberAttributeRequest, opts ...grpc.CallOption) (*GetAclTableGroupMemberAttributeResponse, error) { out := new(GetAclTableGroupMemberAttributeResponse) err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Acl/GetAclTableGroupMemberAttribute", in, out, opts...) @@ -10655,6 +11767,33 @@ func (c *aclClient) GetAclTableGroupMemberAttribute(ctx context.Context, in *Get return out, nil } +func (c *aclClient) CreateAclTableChainGroup(ctx context.Context, in *CreateAclTableChainGroupRequest, opts ...grpc.CallOption) (*CreateAclTableChainGroupResponse, error) { + out := new(CreateAclTableChainGroupResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Acl/CreateAclTableChainGroup", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aclClient) RemoveAclTableChainGroup(ctx context.Context, in *RemoveAclTableChainGroupRequest, opts ...grpc.CallOption) (*RemoveAclTableChainGroupResponse, error) { + out := new(RemoveAclTableChainGroupResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Acl/RemoveAclTableChainGroup", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aclClient) GetAclTableChainGroupAttribute(ctx context.Context, in *GetAclTableChainGroupAttributeRequest, opts ...grpc.CallOption) (*GetAclTableChainGroupAttributeResponse, error) { + out := new(GetAclTableChainGroupAttributeResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Acl/GetAclTableChainGroupAttribute", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // AclServer is the server API for Acl service. type AclServer interface { CreateAclTable(context.Context, *CreateAclTableRequest) (*CreateAclTableResponse, error) @@ -10676,7 +11815,11 @@ type AclServer interface { GetAclTableGroupAttribute(context.Context, *GetAclTableGroupAttributeRequest) (*GetAclTableGroupAttributeResponse, error) CreateAclTableGroupMember(context.Context, *CreateAclTableGroupMemberRequest) (*CreateAclTableGroupMemberResponse, error) RemoveAclTableGroupMember(context.Context, *RemoveAclTableGroupMemberRequest) (*RemoveAclTableGroupMemberResponse, error) + SetAclTableGroupMemberAttribute(context.Context, *SetAclTableGroupMemberAttributeRequest) (*SetAclTableGroupMemberAttributeResponse, error) GetAclTableGroupMemberAttribute(context.Context, *GetAclTableGroupMemberAttributeRequest) (*GetAclTableGroupMemberAttributeResponse, error) + CreateAclTableChainGroup(context.Context, *CreateAclTableChainGroupRequest) (*CreateAclTableChainGroupResponse, error) + RemoveAclTableChainGroup(context.Context, *RemoveAclTableChainGroupRequest) (*RemoveAclTableChainGroupResponse, error) + GetAclTableChainGroupAttribute(context.Context, *GetAclTableChainGroupAttributeRequest) (*GetAclTableChainGroupAttributeResponse, error) } // UnimplementedAclServer can be embedded to have forward compatible implementations. @@ -10740,9 +11883,21 @@ func (*UnimplementedAclServer) CreateAclTableGroupMember(context.Context, *Creat func (*UnimplementedAclServer) RemoveAclTableGroupMember(context.Context, *RemoveAclTableGroupMemberRequest) (*RemoveAclTableGroupMemberResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveAclTableGroupMember not implemented") } +func (*UnimplementedAclServer) SetAclTableGroupMemberAttribute(context.Context, *SetAclTableGroupMemberAttributeRequest) (*SetAclTableGroupMemberAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetAclTableGroupMemberAttribute not implemented") +} func (*UnimplementedAclServer) GetAclTableGroupMemberAttribute(context.Context, *GetAclTableGroupMemberAttributeRequest) (*GetAclTableGroupMemberAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAclTableGroupMemberAttribute not implemented") } +func (*UnimplementedAclServer) CreateAclTableChainGroup(context.Context, *CreateAclTableChainGroupRequest) (*CreateAclTableChainGroupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAclTableChainGroup not implemented") +} +func (*UnimplementedAclServer) RemoveAclTableChainGroup(context.Context, *RemoveAclTableChainGroupRequest) (*RemoveAclTableChainGroupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveAclTableChainGroup not implemented") +} +func (*UnimplementedAclServer) GetAclTableChainGroupAttribute(context.Context, *GetAclTableChainGroupAttributeRequest) (*GetAclTableChainGroupAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAclTableChainGroupAttribute not implemented") +} func RegisterAclServer(s *grpc.Server, srv AclServer) { s.RegisterService(&_Acl_serviceDesc, srv) @@ -11090,6 +12245,24 @@ func _Acl_RemoveAclTableGroupMember_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Acl_SetAclTableGroupMemberAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetAclTableGroupMemberAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AclServer).SetAclTableGroupMemberAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Acl/SetAclTableGroupMemberAttribute", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AclServer).SetAclTableGroupMemberAttribute(ctx, req.(*SetAclTableGroupMemberAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Acl_GetAclTableGroupMemberAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetAclTableGroupMemberAttributeRequest) if err := dec(in); err != nil { @@ -11108,6 +12281,60 @@ func _Acl_GetAclTableGroupMemberAttribute_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _Acl_CreateAclTableChainGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAclTableChainGroupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AclServer).CreateAclTableChainGroup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Acl/CreateAclTableChainGroup", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AclServer).CreateAclTableChainGroup(ctx, req.(*CreateAclTableChainGroupRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Acl_RemoveAclTableChainGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveAclTableChainGroupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AclServer).RemoveAclTableChainGroup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Acl/RemoveAclTableChainGroup", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AclServer).RemoveAclTableChainGroup(ctx, req.(*RemoveAclTableChainGroupRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Acl_GetAclTableChainGroupAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAclTableChainGroupAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AclServer).GetAclTableChainGroupAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Acl/GetAclTableChainGroupAttribute", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AclServer).GetAclTableChainGroupAttribute(ctx, req.(*GetAclTableChainGroupAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Acl_serviceDesc = grpc.ServiceDesc{ ServiceName: "lemming.dataplane.sai.Acl", HandlerType: (*AclServer)(nil), @@ -11188,10 +12415,26 @@ var _Acl_serviceDesc = grpc.ServiceDesc{ MethodName: "RemoveAclTableGroupMember", Handler: _Acl_RemoveAclTableGroupMember_Handler, }, + { + MethodName: "SetAclTableGroupMemberAttribute", + Handler: _Acl_SetAclTableGroupMemberAttribute_Handler, + }, { MethodName: "GetAclTableGroupMemberAttribute", Handler: _Acl_GetAclTableGroupMemberAttribute_Handler, }, + { + MethodName: "CreateAclTableChainGroup", + Handler: _Acl_CreateAclTableChainGroup_Handler, + }, + { + MethodName: "RemoveAclTableChainGroup", + Handler: _Acl_RemoveAclTableChainGroup_Handler, + }, + { + MethodName: "GetAclTableChainGroupAttribute", + Handler: _Acl_GetAclTableChainGroupAttribute_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "dataplane/proto/sai/acl.proto", diff --git a/dataplane/proto/sai/acl.proto b/dataplane/proto/sai/acl.proto index 971d3b79..6f57f0a7 100644 --- a/dataplane/proto/sai/acl.proto +++ b/dataplane/proto/sai/acl.proto @@ -7,946 +7,976 @@ 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_ENTRY_LIST = 97; - ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY = 98; - ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER = 99; + 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_ACTION_REDIRECT = 96; - ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP = 97; - ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST = 98; - ACL_ENTRY_ATTR_ACTION_PACKET_ACTION = 99; - ACL_ENTRY_ATTR_ACTION_FLOOD = 100; - ACL_ENTRY_ATTR_ACTION_COUNTER = 101; - ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS = 102; - ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS = 103; - ACL_ENTRY_ATTR_ACTION_SET_POLICER = 104; - ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL = 105; - ACL_ENTRY_ATTR_ACTION_SET_TC = 106; - ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR = 107; - ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID = 108; - ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI = 109; - ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID = 110; - ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI = 111; - ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID = 112; - ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI = 113; - ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC = 114; - ACL_ENTRY_ATTR_ACTION_SET_DST_MAC = 115; - ACL_ENTRY_ATTR_ACTION_SET_SRC_IP = 116; - ACL_ENTRY_ATTR_ACTION_SET_DST_IP = 117; - ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6 = 118; - ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6 = 119; - ACL_ENTRY_ATTR_ACTION_SET_DSCP = 120; - ACL_ENTRY_ATTR_ACTION_SET_ECN = 121; - ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT = 122; - ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT = 123; - ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE = 124; - ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE = 125; - ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA = 126; - ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST = 127; - ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID = 128; - ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN = 129; - ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP = 130; - ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION = 131; - ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE = 132; - ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE = 133; - ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT = 134; - ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS = 135; - ACL_ENTRY_ATTR_ACTION_NO_NAT = 136; - ACL_ENTRY_ATTR_ACTION_INT_INSERT = 137; - ACL_ENTRY_ATTR_ACTION_INT_DELETE = 138; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW = 139; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS = 140; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS = 141; - ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT = 142; - ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP = 143; - ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW = 144; - ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID = 145; - ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID = 146; - ACL_ENTRY_ATTR_ACTION_SET_VRF = 147; - ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS = 148; + 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_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_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; } 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]; + 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 AclActionData action_redirect = 97 [(attr_enum_value) = 96]; - optional AclActionData action_endpoint_ip = 98 [(attr_enum_value) = 97]; - optional AclActionData action_redirect_list = 99 [(attr_enum_value) = 98]; - optional AclActionData action_packet_action = 100 [(attr_enum_value) = 99]; - optional AclActionData action_flood = 101 [(attr_enum_value) = 100]; - optional AclActionData action_counter = 102 [(attr_enum_value) = 101]; - optional AclActionData action_mirror_ingress = 103 [(attr_enum_value) = 102]; - optional AclActionData action_mirror_egress = 104 [(attr_enum_value) = 103]; - optional AclActionData action_set_policer = 105 [(attr_enum_value) = 104]; - optional AclActionData action_decrement_ttl = 106 [(attr_enum_value) = 105]; - optional AclActionData action_set_tc = 107 [(attr_enum_value) = 106]; - optional AclActionData action_set_packet_color = 108 - [(attr_enum_value) = 107]; - optional AclActionData action_set_inner_vlan_id = 109 - [(attr_enum_value) = 108]; - optional AclActionData action_set_inner_vlan_pri = 110 - [(attr_enum_value) = 109]; - optional AclActionData action_set_outer_vlan_id = 111 - [(attr_enum_value) = 110]; - optional AclActionData action_set_outer_vlan_pri = 112 - [(attr_enum_value) = 111]; - optional AclActionData action_add_vlan_id = 113 [(attr_enum_value) = 112]; - optional AclActionData action_add_vlan_pri = 114 [(attr_enum_value) = 113]; - optional AclActionData action_set_src_mac = 115 [(attr_enum_value) = 114]; - optional AclActionData action_set_dst_mac = 116 [(attr_enum_value) = 115]; - optional AclActionData action_set_src_ip = 117 [(attr_enum_value) = 116]; - optional AclActionData action_set_dst_ip = 118 [(attr_enum_value) = 117]; - optional AclActionData action_set_src_ipv6 = 119 [(attr_enum_value) = 118]; - optional AclActionData action_set_dst_ipv6 = 120 [(attr_enum_value) = 119]; - optional AclActionData action_set_dscp = 121 [(attr_enum_value) = 120]; - optional AclActionData action_set_ecn = 122 [(attr_enum_value) = 121]; - optional AclActionData action_set_l4_src_port = 123 [(attr_enum_value) = 122]; - optional AclActionData action_set_l4_dst_port = 124 [(attr_enum_value) = 123]; - optional AclActionData action_ingress_samplepacket_enable = 125 - [(attr_enum_value) = 124]; - optional AclActionData action_egress_samplepacket_enable = 126 - [(attr_enum_value) = 125]; - optional AclActionData action_set_acl_meta_data = 127 - [(attr_enum_value) = 126]; - optional AclActionData action_egress_block_port_list = 128 - [(attr_enum_value) = 127]; - optional AclActionData action_set_user_trap_id = 129 - [(attr_enum_value) = 128]; - optional AclActionData action_set_do_not_learn = 130 - [(attr_enum_value) = 129]; - optional AclActionData action_acl_dtel_flow_op = 131 - [(attr_enum_value) = 130]; - optional AclActionData action_dtel_int_session = 132 - [(attr_enum_value) = 131]; - optional AclActionData action_dtel_drop_report_enable = 133 - [(attr_enum_value) = 132]; - optional AclActionData action_dtel_tail_drop_report_enable = 134 - [(attr_enum_value) = 133]; - optional AclActionData action_dtel_flow_sample_percent = 135 - [(attr_enum_value) = 134]; - optional AclActionData action_dtel_report_all_packets = 136 - [(attr_enum_value) = 135]; - optional AclActionData action_no_nat = 137 [(attr_enum_value) = 136]; - optional AclActionData action_int_insert = 138 [(attr_enum_value) = 137]; - optional AclActionData action_int_delete = 139 [(attr_enum_value) = 138]; - optional AclActionData action_int_report_flow = 140 [(attr_enum_value) = 139]; - optional AclActionData action_int_report_drops = 141 - [(attr_enum_value) = 140]; - optional AclActionData action_int_report_tail_drops = 142 - [(attr_enum_value) = 141]; - optional AclActionData action_tam_int_object = 143 [(attr_enum_value) = 142]; - optional AclActionData action_set_isolation_group = 144 - [(attr_enum_value) = 143]; - optional AclActionData action_macsec_flow = 145 [(attr_enum_value) = 144]; - optional AclActionData action_set_lag_hash_id = 146 [(attr_enum_value) = 145]; - optional AclActionData action_set_ecmp_hash_id = 147 - [(attr_enum_value) = 146]; - optional AclActionData action_set_vrf = 148 [(attr_enum_value) = 147]; - optional AclActionData action_set_forwarding_class = 149 - [(attr_enum_value) = 148]; + 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 AclActionData action_redirect = 96 [(attr_enum_value) = 96]; - optional AclActionData action_endpoint_ip = 97 [(attr_enum_value) = 97]; - optional AclActionData action_redirect_list = 98 [(attr_enum_value) = 98]; - optional AclActionData action_packet_action = 99 [(attr_enum_value) = 99]; - optional AclActionData action_flood = 100 [(attr_enum_value) = 100]; - optional AclActionData action_counter = 101 [(attr_enum_value) = 101]; - optional AclActionData action_mirror_ingress = 102 [(attr_enum_value) = 102]; - optional AclActionData action_mirror_egress = 103 [(attr_enum_value) = 103]; - optional AclActionData action_set_policer = 104 [(attr_enum_value) = 104]; - optional AclActionData action_decrement_ttl = 105 [(attr_enum_value) = 105]; - optional AclActionData action_set_tc = 106 [(attr_enum_value) = 106]; - optional AclActionData action_set_packet_color = 107 - [(attr_enum_value) = 107]; - optional AclActionData action_set_inner_vlan_id = 108 - [(attr_enum_value) = 108]; - optional AclActionData action_set_inner_vlan_pri = 109 - [(attr_enum_value) = 109]; - optional AclActionData action_set_outer_vlan_id = 110 - [(attr_enum_value) = 110]; - optional AclActionData action_set_outer_vlan_pri = 111 - [(attr_enum_value) = 111]; - optional AclActionData action_add_vlan_id = 112 [(attr_enum_value) = 112]; - optional AclActionData action_add_vlan_pri = 113 [(attr_enum_value) = 113]; - optional AclActionData action_set_src_mac = 114 [(attr_enum_value) = 114]; - optional AclActionData action_set_dst_mac = 115 [(attr_enum_value) = 115]; - optional AclActionData action_set_src_ip = 116 [(attr_enum_value) = 116]; - optional AclActionData action_set_dst_ip = 117 [(attr_enum_value) = 117]; - optional AclActionData action_set_src_ipv6 = 118 [(attr_enum_value) = 118]; - optional AclActionData action_set_dst_ipv6 = 119 [(attr_enum_value) = 119]; - optional AclActionData action_set_dscp = 120 [(attr_enum_value) = 120]; - optional AclActionData action_set_ecn = 121 [(attr_enum_value) = 121]; - optional AclActionData action_set_l4_src_port = 122 [(attr_enum_value) = 122]; - optional AclActionData action_set_l4_dst_port = 123 [(attr_enum_value) = 123]; - optional AclActionData action_ingress_samplepacket_enable = 124 - [(attr_enum_value) = 124]; - optional AclActionData action_egress_samplepacket_enable = 125 - [(attr_enum_value) = 125]; - optional AclActionData action_set_acl_meta_data = 126 - [(attr_enum_value) = 126]; - optional AclActionData action_egress_block_port_list = 127 - [(attr_enum_value) = 127]; - optional AclActionData action_set_user_trap_id = 128 - [(attr_enum_value) = 128]; - optional AclActionData action_set_do_not_learn = 129 - [(attr_enum_value) = 129]; - optional AclActionData action_acl_dtel_flow_op = 130 - [(attr_enum_value) = 130]; - optional AclActionData action_dtel_int_session = 131 - [(attr_enum_value) = 131]; - optional AclActionData action_dtel_drop_report_enable = 132 - [(attr_enum_value) = 132]; - optional AclActionData action_dtel_tail_drop_report_enable = 133 - [(attr_enum_value) = 133]; - optional AclActionData action_dtel_flow_sample_percent = 134 - [(attr_enum_value) = 134]; - optional AclActionData action_dtel_report_all_packets = 135 - [(attr_enum_value) = 135]; - optional AclActionData action_no_nat = 136 [(attr_enum_value) = 136]; - optional AclActionData action_int_insert = 137 [(attr_enum_value) = 137]; - optional AclActionData action_int_delete = 138 [(attr_enum_value) = 138]; - optional AclActionData action_int_report_flow = 139 [(attr_enum_value) = 139]; - optional AclActionData action_int_report_drops = 140 - [(attr_enum_value) = 140]; - optional AclActionData action_int_report_tail_drops = 141 - [(attr_enum_value) = 141]; - optional AclActionData action_tam_int_object = 142 [(attr_enum_value) = 142]; - optional AclActionData action_set_isolation_group = 143 - [(attr_enum_value) = 143]; - optional AclActionData action_macsec_flow = 144 [(attr_enum_value) = 144]; - optional AclActionData action_set_lag_hash_id = 145 [(attr_enum_value) = 145]; - optional AclActionData action_set_ecmp_hash_id = 146 - [(attr_enum_value) = 146]; - optional AclActionData action_set_vrf = 147 [(attr_enum_value) = 147]; - optional AclActionData action_set_forwarding_class = 148 - [(attr_enum_value) = 148]; -} - -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]; + 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 SetAclTableGroupMemberAttributeRequest { + uint64 oid = 1; + optional uint64 acl_table_chain_group_id = 2[(attr_enum_value) = 4]; } -message RemoveAclTableGroupMemberResponse {} +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]; +} + +message CreateAclTableChainGroupResponse { + uint64 oid = 1; +} + +message RemoveAclTableChainGroupRequest { + uint64 oid = 1; } +message RemoveAclTableChainGroupResponse { +} + +message GetAclTableChainGroupAttributeRequest { + uint64 oid = 1; + repeated AclTableChainGroupAttr attr_type = 2; +} + +message GetAclTableChainGroupAttributeResponse { + 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 GetAclTableGroupMemberAttribute(GetAclTableGroupMemberAttributeRequest) - returns (GetAclTableGroupMemberAttributeResponse) {} + 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.pb.go b/dataplane/proto/sai/ars.pb.go new file mode 100755 index 00000000..7d7a9a7b --- /dev/null +++ b/dataplane/proto/sai/ars.pb.go @@ -0,0 +1,113 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/ars.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_ars_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_ars_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x61, 0x72, 0x73, 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, 0x05, 0x0a, 0x03, 0x41, 0x72, 0x73, 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_ars_proto_goTypes = []any{} +var file_dataplane_proto_sai_ars_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_ars_proto_init() } +func file_dataplane_proto_sai_ars_proto_init() { + if File_dataplane_proto_sai_ars_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: file_dataplane_proto_sai_ars_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_ars_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_ars_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_ars_proto = out.File + file_dataplane_proto_sai_ars_proto_rawDesc = nil + file_dataplane_proto_sai_ars_proto_goTypes = nil + file_dataplane_proto_sai_ars_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// ArsClient is the client API for Ars service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ArsClient interface { +} + +type arsClient struct { + cc grpc.ClientConnInterface +} + +func NewArsClient(cc grpc.ClientConnInterface) ArsClient { + return &arsClient{cc} +} + +// ArsServer is the server API for Ars service. +type ArsServer interface { +} + +// UnimplementedArsServer can be embedded to have forward compatible implementations. +type UnimplementedArsServer struct { +} + +func RegisterArsServer(s *grpc.Server, srv ArsServer) { + s.RegisterService(&_Ars_serviceDesc, srv) +} + +var _Ars_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.Ars", + HandlerType: (*ArsServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/ars.proto", +} diff --git a/dataplane/proto/sai/ars.proto b/dataplane/proto/sai/ars.proto new file mode 100644 index 00000000..17937d6d --- /dev/null +++ b/dataplane/proto/sai/ars.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service Ars { +} diff --git a/dataplane/proto/sai/ars_profile.pb.go b/dataplane/proto/sai/ars_profile.pb.go new file mode 100755 index 00000000..fc41f490 --- /dev/null +++ b/dataplane/proto/sai/ars_profile.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/ars_profile.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_ars_profile_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_ars_profile_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 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, 0x0c, 0x0a, 0x0a, 0x41, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 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_ars_profile_proto_goTypes = []any{} +var file_dataplane_proto_sai_ars_profile_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_ars_profile_proto_init() } +func file_dataplane_proto_sai_ars_profile_proto_init() { + if File_dataplane_proto_sai_ars_profile_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: file_dataplane_proto_sai_ars_profile_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_ars_profile_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_ars_profile_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_ars_profile_proto = out.File + file_dataplane_proto_sai_ars_profile_proto_rawDesc = nil + file_dataplane_proto_sai_ars_profile_proto_goTypes = nil + file_dataplane_proto_sai_ars_profile_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// ArsProfileClient is the client API for ArsProfile service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ArsProfileClient interface { +} + +type arsProfileClient struct { + cc grpc.ClientConnInterface +} + +func NewArsProfileClient(cc grpc.ClientConnInterface) ArsProfileClient { + return &arsProfileClient{cc} +} + +// ArsProfileServer is the server API for ArsProfile service. +type ArsProfileServer interface { +} + +// UnimplementedArsProfileServer can be embedded to have forward compatible implementations. +type UnimplementedArsProfileServer struct { +} + +func RegisterArsProfileServer(s *grpc.Server, srv ArsProfileServer) { + s.RegisterService(&_ArsProfile_serviceDesc, srv) +} + +var _ArsProfile_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.ArsProfile", + HandlerType: (*ArsProfileServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/ars_profile.proto", +} diff --git a/dataplane/proto/sai/ars_profile.proto b/dataplane/proto/sai/ars_profile.proto new file mode 100644 index 00000000..ba6a363f --- /dev/null +++ b/dataplane/proto/sai/ars_profile.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service ArsProfile { +} diff --git a/dataplane/proto/sai/bfd.pb.go b/dataplane/proto/sai/bfd.pb.go index 7dcab16d..979f2275 100644 --- a/dataplane/proto/sai/bfd.pb.go +++ b/dataplane/proto/sai/bfd.pb.go @@ -68,6 +68,7 @@ const ( BfdSessionAttr_BFD_SESSION_ATTR_LOCAL_DIAG BfdSessionAttr = 38 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 ) // Enum value maps for BfdSessionAttr. @@ -114,6 +115,7 @@ var ( 38: "BFD_SESSION_ATTR_LOCAL_DIAG", 39: "BFD_SESSION_ATTR_REMOTE_DIAG", 40: "BFD_SESSION_ATTR_REMOTE_MULTIPLIER", + 41: "BFD_SESSION_ATTR_SRV6_SIDLIST_ID", } BfdSessionAttr_value = map[string]int32{ "BFD_SESSION_ATTR_UNSPECIFIED": 0, @@ -157,6 +159,7 @@ var ( "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, } ) @@ -222,6 +225,7 @@ type CreateBfdSessionRequest struct { MinRx *uint32 `protobuf:"varint,31,opt,name=min_rx,json=minRx,proto3,oneof" json:"min_rx,omitempty"` 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -487,6 +491,13 @@ func (x *CreateBfdSessionRequest) GetOffloadType() BfdSessionOffloadType { return BfdSessionOffloadType_BFD_SESSION_OFFLOAD_TYPE_UNSPECIFIED } +func (x *CreateBfdSessionRequest) GetSrv6SidlistId() uint64 { + if x != nil && x.Srv6SidlistId != nil { + return *x.Srv6SidlistId + } + return 0 +} + type CreateBfdSessionResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1027,7 +1038,7 @@ var file_dataplane_proto_sai_bfd_proto_rawDesc = []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, 0x86, 0x11, 0x0a, 0x17, 0x43, 0x72, 0x65, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x11, 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, @@ -1131,269 +1142,276 @@ var file_dataplane_proto_sai_bfd_proto_rawDesc = []byte{ 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, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, 0x48, 0x1f, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, - 0x65, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, + 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, 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, + 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, - 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, 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, 0x8e, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x49, 0x45, 0x52, 0x10, 0x28, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, + 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, } var ( diff --git a/dataplane/proto/sai/bfd.proto b/dataplane/proto/sai/bfd.proto index 1afa3169..c2577d07 100644 --- a/dataplane/proto/sai/bfd.proto +++ b/dataplane/proto/sai/bfd.proto @@ -7,148 +7,148 @@ 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_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; } 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]; + 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]; } 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]; } -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 681ef7b9..8f30c362 100644 --- a/dataplane/proto/sai/bmtor.proto +++ b/dataplane/proto/sai/bmtor.proto @@ -7,182 +7,169 @@ 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.proto b/dataplane/proto/sai/bridge.proto index 709e451a..a868290c 100644 --- a/dataplane/proto/sai/bridge.proto +++ b/dataplane/proto/sai/bridge.proto @@ -7,182 +7,171 @@ 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; } 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; } 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]; } 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]; +} + +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]; } 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]; +} + +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.proto b/dataplane/proto/sai/buffer.proto index 3c19042a..d4d20bbd 100644 --- a/dataplane/proto/sai/buffer.proto +++ b/dataplane/proto/sai/buffer.proto @@ -7,203 +7,196 @@ 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; } 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; } 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]; } 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]; } -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]; } 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]; } -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 deb48bd3..e689f61b 100644 --- a/dataplane/proto/sai/common.pb.go +++ b/dataplane/proto/sai/common.pb.go @@ -83,6 +83,10 @@ const ( AclActionType_ACL_ACTION_TYPE_SET_ECMP_HASH_ID AclActionType = 49 AclActionType_ACL_ACTION_TYPE_SET_VRF AclActionType = 50 AclActionType_ACL_ACTION_TYPE_SET_FORWARDING_CLASS AclActionType = 53 + AclActionType_ACL_ACTION_TYPE_SET_ARS_MONITORING AclActionType = 54 + AclActionType_ACL_ACTION_TYPE_SET_ARS_OBJECT AclActionType = 55 + AclActionType_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING AclActionType = 56 + AclActionType_ACL_ACTION_TYPE_CHAIN_REDIRECT AclActionType = 57 ) // Enum value maps for AclActionType. @@ -142,6 +146,10 @@ var ( 49: "ACL_ACTION_TYPE_SET_ECMP_HASH_ID", 50: "ACL_ACTION_TYPE_SET_VRF", 53: "ACL_ACTION_TYPE_SET_FORWARDING_CLASS", + 54: "ACL_ACTION_TYPE_SET_ARS_MONITORING", + 55: "ACL_ACTION_TYPE_SET_ARS_OBJECT", + 56: "ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING", + 57: "ACL_ACTION_TYPE_CHAIN_REDIRECT", } AclActionType_value = map[string]int32{ "ACL_ACTION_TYPE_UNSPECIFIED": 0, @@ -198,6 +206,10 @@ var ( "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, } ) @@ -542,6 +554,7 @@ const ( AclStage_ACL_STAGE_INGRESS_MACSEC AclStage = 3 AclStage_ACL_STAGE_EGRESS_MACSEC AclStage = 4 AclStage_ACL_STAGE_PRE_INGRESS AclStage = 5 + AclStage_ACL_STAGE_POST_INGRESS AclStage = 6 ) // Enum value maps for AclStage. @@ -553,6 +566,7 @@ var ( 3: "ACL_STAGE_INGRESS_MACSEC", 4: "ACL_STAGE_EGRESS_MACSEC", 5: "ACL_STAGE_PRE_INGRESS", + 6: "ACL_STAGE_POST_INGRESS", } AclStage_value = map[string]int32{ "ACL_STAGE_UNSPECIFIED": 0, @@ -561,6 +575,7 @@ var ( "ACL_STAGE_INGRESS_MACSEC": 3, "ACL_STAGE_EGRESS_MACSEC": 4, "ACL_STAGE_PRE_INGRESS": 5, + "ACL_STAGE_POST_INGRESS": 6, } ) @@ -591,6 +606,110 @@ func (AclStage) EnumDescriptor() ([]byte, []int) { return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{6} } +type AclTableChainGroupStage int32 + +const ( + AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED AclTableChainGroupStage = 0 + AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_0 AclTableChainGroupStage = 1 + AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_1 AclTableChainGroupStage = 2 + AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_2 AclTableChainGroupStage = 3 + AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_3 AclTableChainGroupStage = 4 +) + +// Enum value maps for AclTableChainGroupStage. +var ( + AclTableChainGroupStage_name = map[int32]string{ + 0: "ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED", + 1: "ACL_TABLE_CHAIN_GROUP_STAGE_0", + 2: "ACL_TABLE_CHAIN_GROUP_STAGE_1", + 3: "ACL_TABLE_CHAIN_GROUP_STAGE_2", + 4: "ACL_TABLE_CHAIN_GROUP_STAGE_3", + } + AclTableChainGroupStage_value = map[string]int32{ + "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, + } +) + +func (x AclTableChainGroupStage) Enum() *AclTableChainGroupStage { + p := new(AclTableChainGroupStage) + *p = x + return p +} + +func (x AclTableChainGroupStage) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AclTableChainGroupStage) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[7].Descriptor() +} + +func (AclTableChainGroupStage) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[7] +} + +func (x AclTableChainGroupStage) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AclTableChainGroupStage.Descriptor instead. +func (AclTableChainGroupStage) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{7} +} + +type AclTableChainGroupType int32 + +const ( + AclTableChainGroupType_ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED AclTableChainGroupType = 0 + AclTableChainGroupType_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL AclTableChainGroupType = 1 + AclTableChainGroupType_ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL AclTableChainGroupType = 2 +) + +// Enum value maps for AclTableChainGroupType. +var ( + AclTableChainGroupType_name = map[int32]string{ + 0: "ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED", + 1: "ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL", + 2: "ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL", + } + AclTableChainGroupType_value = map[string]int32{ + "ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED": 0, + "ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL": 1, + "ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL": 2, + } +) + +func (x AclTableChainGroupType) Enum() *AclTableChainGroupType { + p := new(AclTableChainGroupType) + *p = x + return p +} + +func (x AclTableChainGroupType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AclTableChainGroupType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[8].Descriptor() +} + +func (AclTableChainGroupType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[8] +} + +func (x AclTableChainGroupType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AclTableChainGroupType.Descriptor instead. +func (AclTableChainGroupType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{8} +} + type AclTableGroupType int32 const ( @@ -624,11 +743,11 @@ func (x AclTableGroupType) String() string { } func (AclTableGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[7].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[9].Descriptor() } func (AclTableGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[7] + return &file_dataplane_proto_sai_common_proto_enumTypes[9] } func (x AclTableGroupType) Number() protoreflect.EnumNumber { @@ -637,31 +756,159 @@ func (x AclTableGroupType) Number() protoreflect.EnumNumber { // Deprecated: Use AclTableGroupType.Descriptor instead. func (AclTableGroupType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{7} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{9} +} + +type AclTableMatchType int32 + +const ( + AclTableMatchType_ACL_TABLE_MATCH_TYPE_UNSPECIFIED AclTableMatchType = 0 + AclTableMatchType_ACL_TABLE_MATCH_TYPE_TERNARY AclTableMatchType = 1 + AclTableMatchType_ACL_TABLE_MATCH_TYPE_EXACT AclTableMatchType = 2 +) + +// Enum value maps for AclTableMatchType. +var ( + AclTableMatchType_name = map[int32]string{ + 0: "ACL_TABLE_MATCH_TYPE_UNSPECIFIED", + 1: "ACL_TABLE_MATCH_TYPE_TERNARY", + 2: "ACL_TABLE_MATCH_TYPE_EXACT", + } + AclTableMatchType_value = map[string]int32{ + "ACL_TABLE_MATCH_TYPE_UNSPECIFIED": 0, + "ACL_TABLE_MATCH_TYPE_TERNARY": 1, + "ACL_TABLE_MATCH_TYPE_EXACT": 2, + } +) + +func (x AclTableMatchType) Enum() *AclTableMatchType { + p := new(AclTableMatchType) + *p = x + return p +} + +func (x AclTableMatchType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AclTableMatchType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[10].Descriptor() +} + +func (AclTableMatchType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[10] +} + +func (x AclTableMatchType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AclTableMatchType.Descriptor instead. +func (AclTableMatchType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{10} +} + +type AclTableSupportedMatchType int32 + +const ( + AclTableSupportedMatchType_ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED AclTableSupportedMatchType = 0 + AclTableSupportedMatchType_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY AclTableSupportedMatchType = 1 + AclTableSupportedMatchType_ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT AclTableSupportedMatchType = 2 +) + +// Enum value maps for AclTableSupportedMatchType. +var ( + AclTableSupportedMatchType_name = map[int32]string{ + 0: "ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED", + 1: "ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY", + 2: "ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT", + } + AclTableSupportedMatchType_value = map[string]int32{ + "ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED": 0, + "ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY": 1, + "ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT": 2, + } +) + +func (x AclTableSupportedMatchType) Enum() *AclTableSupportedMatchType { + p := new(AclTableSupportedMatchType) + *p = x + return p +} + +func (x AclTableSupportedMatchType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AclTableSupportedMatchType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[11].Descriptor() +} + +func (AclTableSupportedMatchType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[11] +} + +func (x AclTableSupportedMatchType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AclTableSupportedMatchType.Descriptor instead. +func (AclTableSupportedMatchType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{11} } type ApiExtensions int32 const ( ApiExtensions_API_EXTENSIONS_UNSPECIFIED ApiExtensions = 0 - ApiExtensions_API_EXTENSIONS_RANGE_START ApiExtensions = 49 - ApiExtensions_API_BMTOR ApiExtensions = 49 - ApiExtensions_API_EXTENSIONS_RANGE_END ApiExtensions = 50 + 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 ) // Enum value maps for ApiExtensions. var ( ApiExtensions_name = map[int32]string{ 0: "API_EXTENSIONS_UNSPECIFIED", - 49: "API_EXTENSIONS_RANGE_START", - // Duplicate value: 49: "API_BMTOR", - 50: "API_EXTENSIONS_RANGE_END", + 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", } ApiExtensions_value = map[string]int32{ "API_EXTENSIONS_UNSPECIFIED": 0, - "API_EXTENSIONS_RANGE_START": 49, - "API_BMTOR": 49, - "API_EXTENSIONS_RANGE_END": 50, + "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, } ) @@ -676,11 +923,11 @@ func (x ApiExtensions) String() string { } func (ApiExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[8].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[12].Descriptor() } func (ApiExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[8] + return &file_dataplane_proto_sai_common_proto_enumTypes[12] } func (x ApiExtensions) Number() protoreflect.EnumNumber { @@ -689,7 +936,7 @@ func (x ApiExtensions) Number() protoreflect.EnumNumber { // Deprecated: Use ApiExtensions.Descriptor instead. func (ApiExtensions) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{8} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{12} } type Api int32 @@ -744,62 +991,74 @@ const ( Api_API_MY_MAC Api = 46 Api_API_IPSEC Api = 47 Api_API_GENERIC_PROGRAMMABLE Api = 48 - Api_API_MAX Api = 49 + 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 ) // 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_MAX", + 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", } Api_value = map[string]int32{ "API_UNSPECIFIED": 0, @@ -851,7 +1110,13 @@ var ( "API_MY_MAC": 46, "API_IPSEC": 47, "API_GENERIC_PROGRAMMABLE": 48, - "API_MAX": 49, + "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, } ) @@ -866,11 +1131,11 @@ func (x Api) String() string { } func (Api) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[9].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[13].Descriptor() } func (Api) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[9] + return &file_dataplane_proto_sai_common_proto_enumTypes[13] } func (x Api) Number() protoreflect.EnumNumber { @@ -879,7 +1144,7 @@ func (x Api) Number() protoreflect.EnumNumber { // Deprecated: Use Api.Descriptor instead. func (Api) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{9} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{13} } type BfdEncapsulationType int32 @@ -889,6 +1154,7 @@ const ( BfdEncapsulationType_BFD_ENCAPSULATION_TYPE_IP_IN_IP BfdEncapsulationType = 1 BfdEncapsulationType_BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL BfdEncapsulationType = 2 BfdEncapsulationType_BFD_ENCAPSULATION_TYPE_NONE BfdEncapsulationType = 3 + BfdEncapsulationType_BFD_ENCAPSULATION_TYPE_SRV6 BfdEncapsulationType = 4 ) // Enum value maps for BfdEncapsulationType. @@ -898,12 +1164,14 @@ var ( 1: "BFD_ENCAPSULATION_TYPE_IP_IN_IP", 2: "BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL", 3: "BFD_ENCAPSULATION_TYPE_NONE", + 4: "BFD_ENCAPSULATION_TYPE_SRV6", } BfdEncapsulationType_value = map[string]int32{ "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, } ) @@ -918,11 +1186,11 @@ func (x BfdEncapsulationType) String() string { } func (BfdEncapsulationType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[10].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[14].Descriptor() } func (BfdEncapsulationType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[10] + return &file_dataplane_proto_sai_common_proto_enumTypes[14] } func (x BfdEncapsulationType) Number() protoreflect.EnumNumber { @@ -931,7 +1199,7 @@ func (x BfdEncapsulationType) Number() protoreflect.EnumNumber { // Deprecated: Use BfdEncapsulationType.Descriptor instead. func (BfdEncapsulationType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{10} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{14} } type BfdSessionOffloadType int32 @@ -970,11 +1238,11 @@ func (x BfdSessionOffloadType) String() string { } func (BfdSessionOffloadType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[11].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[15].Descriptor() } func (BfdSessionOffloadType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[11] + return &file_dataplane_proto_sai_common_proto_enumTypes[15] } func (x BfdSessionOffloadType) Number() protoreflect.EnumNumber { @@ -983,7 +1251,7 @@ func (x BfdSessionOffloadType) Number() protoreflect.EnumNumber { // Deprecated: Use BfdSessionOffloadType.Descriptor instead. func (BfdSessionOffloadType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{11} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{15} } type BfdSessionStat int32 @@ -1022,11 +1290,11 @@ func (x BfdSessionStat) String() string { } func (BfdSessionStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[12].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[16].Descriptor() } func (BfdSessionStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[12] + return &file_dataplane_proto_sai_common_proto_enumTypes[16] } func (x BfdSessionStat) Number() protoreflect.EnumNumber { @@ -1035,7 +1303,7 @@ func (x BfdSessionStat) Number() protoreflect.EnumNumber { // Deprecated: Use BfdSessionStat.Descriptor instead. func (BfdSessionStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{12} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{16} } type BfdSessionState int32 @@ -1077,11 +1345,11 @@ func (x BfdSessionState) String() string { } func (BfdSessionState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[13].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[17].Descriptor() } func (BfdSessionState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[13] + return &file_dataplane_proto_sai_common_proto_enumTypes[17] } func (x BfdSessionState) Number() protoreflect.EnumNumber { @@ -1090,7 +1358,7 @@ func (x BfdSessionState) Number() protoreflect.EnumNumber { // Deprecated: Use BfdSessionState.Descriptor instead. func (BfdSessionState) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{13} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{17} } type BfdSessionType int32 @@ -1132,11 +1400,11 @@ func (x BfdSessionType) String() string { } func (BfdSessionType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[14].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[18].Descriptor() } func (BfdSessionType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[14] + return &file_dataplane_proto_sai_common_proto_enumTypes[18] } func (x BfdSessionType) Number() protoreflect.EnumNumber { @@ -1145,7 +1413,7 @@ func (x BfdSessionType) Number() protoreflect.EnumNumber { // Deprecated: Use BfdSessionType.Descriptor instead. func (BfdSessionType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{14} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{18} } type BridgeFloodControlType int32 @@ -1187,11 +1455,11 @@ func (x BridgeFloodControlType) String() string { } func (BridgeFloodControlType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[15].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[19].Descriptor() } func (BridgeFloodControlType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[15] + return &file_dataplane_proto_sai_common_proto_enumTypes[19] } func (x BridgeFloodControlType) Number() protoreflect.EnumNumber { @@ -1200,7 +1468,7 @@ func (x BridgeFloodControlType) Number() protoreflect.EnumNumber { // Deprecated: Use BridgeFloodControlType.Descriptor instead. func (BridgeFloodControlType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{15} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{19} } type BridgePortFdbLearningMode int32 @@ -1248,11 +1516,11 @@ func (x BridgePortFdbLearningMode) String() string { } func (BridgePortFdbLearningMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[16].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[20].Descriptor() } func (BridgePortFdbLearningMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[16] + return &file_dataplane_proto_sai_common_proto_enumTypes[20] } func (x BridgePortFdbLearningMode) Number() protoreflect.EnumNumber { @@ -1261,7 +1529,7 @@ func (x BridgePortFdbLearningMode) Number() protoreflect.EnumNumber { // Deprecated: Use BridgePortFdbLearningMode.Descriptor instead. func (BridgePortFdbLearningMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{16} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{20} } type BridgePortStat int32 @@ -1303,11 +1571,11 @@ func (x BridgePortStat) String() string { } func (BridgePortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[17].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[21].Descriptor() } func (BridgePortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[17] + return &file_dataplane_proto_sai_common_proto_enumTypes[21] } func (x BridgePortStat) Number() protoreflect.EnumNumber { @@ -1316,7 +1584,7 @@ func (x BridgePortStat) Number() protoreflect.EnumNumber { // Deprecated: Use BridgePortStat.Descriptor instead. func (BridgePortStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{17} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{21} } type BridgePortTaggingMode int32 @@ -1352,11 +1620,11 @@ func (x BridgePortTaggingMode) String() string { } func (BridgePortTaggingMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[18].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[22].Descriptor() } func (BridgePortTaggingMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[18] + return &file_dataplane_proto_sai_common_proto_enumTypes[22] } func (x BridgePortTaggingMode) Number() protoreflect.EnumNumber { @@ -1365,7 +1633,7 @@ func (x BridgePortTaggingMode) Number() protoreflect.EnumNumber { // Deprecated: Use BridgePortTaggingMode.Descriptor instead. func (BridgePortTaggingMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{18} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{22} } type BridgePortType int32 @@ -1410,11 +1678,11 @@ func (x BridgePortType) String() string { } func (BridgePortType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[19].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[23].Descriptor() } func (BridgePortType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[19] + return &file_dataplane_proto_sai_common_proto_enumTypes[23] } func (x BridgePortType) Number() protoreflect.EnumNumber { @@ -1423,7 +1691,7 @@ func (x BridgePortType) Number() protoreflect.EnumNumber { // Deprecated: Use BridgePortType.Descriptor instead. func (BridgePortType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{19} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{23} } type BridgeStat int32 @@ -1465,11 +1733,11 @@ func (x BridgeStat) String() string { } func (BridgeStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[20].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[24].Descriptor() } func (BridgeStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[20] + return &file_dataplane_proto_sai_common_proto_enumTypes[24] } func (x BridgeStat) Number() protoreflect.EnumNumber { @@ -1478,7 +1746,7 @@ func (x BridgeStat) Number() protoreflect.EnumNumber { // Deprecated: Use BridgeStat.Descriptor instead. func (BridgeStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{20} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{24} } type BridgeType int32 @@ -1514,11 +1782,11 @@ func (x BridgeType) String() string { } func (BridgeType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[21].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[25].Descriptor() } func (BridgeType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[21] + return &file_dataplane_proto_sai_common_proto_enumTypes[25] } func (x BridgeType) Number() protoreflect.EnumNumber { @@ -1527,7 +1795,7 @@ func (x BridgeType) Number() protoreflect.EnumNumber { // Deprecated: Use BridgeType.Descriptor instead. func (BridgeType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{21} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{25} } type BufferPoolStat int32 @@ -1623,11 +1891,11 @@ func (x BufferPoolStat) String() string { } func (BufferPoolStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[22].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[26].Descriptor() } func (BufferPoolStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[22] + return &file_dataplane_proto_sai_common_proto_enumTypes[26] } func (x BufferPoolStat) Number() protoreflect.EnumNumber { @@ -1636,7 +1904,7 @@ func (x BufferPoolStat) Number() protoreflect.EnumNumber { // Deprecated: Use BufferPoolStat.Descriptor instead. func (BufferPoolStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{22} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{26} } type BufferPoolThresholdMode int32 @@ -1672,11 +1940,11 @@ func (x BufferPoolThresholdMode) String() string { } func (BufferPoolThresholdMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[23].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[27].Descriptor() } func (BufferPoolThresholdMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[23] + return &file_dataplane_proto_sai_common_proto_enumTypes[27] } func (x BufferPoolThresholdMode) Number() protoreflect.EnumNumber { @@ -1685,7 +1953,7 @@ func (x BufferPoolThresholdMode) Number() protoreflect.EnumNumber { // Deprecated: Use BufferPoolThresholdMode.Descriptor instead. func (BufferPoolThresholdMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{23} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{27} } type BufferPoolType int32 @@ -1724,11 +1992,11 @@ func (x BufferPoolType) String() string { } func (BufferPoolType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[24].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[28].Descriptor() } func (BufferPoolType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[24] + return &file_dataplane_proto_sai_common_proto_enumTypes[28] } func (x BufferPoolType) Number() protoreflect.EnumNumber { @@ -1737,7 +2005,7 @@ func (x BufferPoolType) Number() protoreflect.EnumNumber { // Deprecated: Use BufferPoolType.Descriptor instead. func (BufferPoolType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{24} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{28} } type BufferProfileThresholdMode int32 @@ -1773,11 +2041,11 @@ func (x BufferProfileThresholdMode) String() string { } func (BufferProfileThresholdMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[25].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[29].Descriptor() } func (BufferProfileThresholdMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[25] + return &file_dataplane_proto_sai_common_proto_enumTypes[29] } func (x BufferProfileThresholdMode) Number() protoreflect.EnumNumber { @@ -1786,7 +2054,7 @@ func (x BufferProfileThresholdMode) Number() protoreflect.EnumNumber { // Deprecated: Use BufferProfileThresholdMode.Descriptor instead. func (BufferProfileThresholdMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{25} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{29} } type BulkOpErrorMode int32 @@ -1822,11 +2090,11 @@ func (x BulkOpErrorMode) String() string { } func (BulkOpErrorMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[26].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[30].Descriptor() } func (BulkOpErrorMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[26] + return &file_dataplane_proto_sai_common_proto_enumTypes[30] } func (x BulkOpErrorMode) Number() protoreflect.EnumNumber { @@ -1835,7 +2103,7 @@ func (x BulkOpErrorMode) Number() protoreflect.EnumNumber { // Deprecated: Use BulkOpErrorMode.Descriptor instead. func (BulkOpErrorMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{26} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{30} } type CommonApi int32 @@ -1892,11 +2160,11 @@ func (x CommonApi) String() string { } func (CommonApi) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[27].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[31].Descriptor() } func (CommonApi) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[27] + return &file_dataplane_proto_sai_common_proto_enumTypes[31] } func (x CommonApi) Number() protoreflect.EnumNumber { @@ -1905,7 +2173,7 @@ func (x CommonApi) Number() protoreflect.EnumNumber { // Deprecated: Use CommonApi.Descriptor instead. func (CommonApi) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{27} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{31} } type CounterStat int32 @@ -1944,11 +2212,11 @@ func (x CounterStat) String() string { } func (CounterStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[28].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[32].Descriptor() } func (CounterStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[28] + return &file_dataplane_proto_sai_common_proto_enumTypes[32] } func (x CounterStat) Number() protoreflect.EnumNumber { @@ -1957,7 +2225,7 @@ func (x CounterStat) Number() protoreflect.EnumNumber { // Deprecated: Use CounterStat.Descriptor instead. func (CounterStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{28} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{32} } type CounterType int32 @@ -1990,11 +2258,11 @@ func (x CounterType) String() string { } func (CounterType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[29].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[33].Descriptor() } func (CounterType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[29] + return &file_dataplane_proto_sai_common_proto_enumTypes[33] } func (x CounterType) Number() protoreflect.EnumNumber { @@ -2003,20 +2271,173 @@ func (x CounterType) Number() protoreflect.EnumNumber { // Deprecated: Use CounterType.Descriptor instead. func (CounterType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{29} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{33} } -type DebugCounterBindMethod int32 +type DashDirection int32 const ( - DebugCounterBindMethod_DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED DebugCounterBindMethod = 0 - DebugCounterBindMethod_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC DebugCounterBindMethod = 1 + DashDirection_DASH_DIRECTION_UNSPECIFIED DashDirection = 0 + DashDirection_DASH_DIRECTION_INVALID DashDirection = 1 + DashDirection_DASH_DIRECTION_OUTBOUND DashDirection = 2 + DashDirection_DASH_DIRECTION_INBOUND DashDirection = 3 ) -// Enum value maps for DebugCounterBindMethod. +// Enum value maps for DashDirection. var ( - DebugCounterBindMethod_name = map[int32]string{ - 0: "DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED", + DashDirection_name = map[int32]string{ + 0: "DASH_DIRECTION_UNSPECIFIED", + 1: "DASH_DIRECTION_INVALID", + 2: "DASH_DIRECTION_OUTBOUND", + 3: "DASH_DIRECTION_INBOUND", + } + DashDirection_value = map[string]int32{ + "DASH_DIRECTION_UNSPECIFIED": 0, + "DASH_DIRECTION_INVALID": 1, + "DASH_DIRECTION_OUTBOUND": 2, + "DASH_DIRECTION_INBOUND": 3, + } +) + +func (x DashDirection) Enum() *DashDirection { + p := new(DashDirection) + *p = x + return p +} + +func (x DashDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashDirection) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[34].Descriptor() +} + +func (DashDirection) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[34] +} + +func (x DashDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashDirection.Descriptor instead. +func (DashDirection) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{34} +} + +type DashEncapsulation int32 + +const ( + DashEncapsulation_DASH_ENCAPSULATION_UNSPECIFIED DashEncapsulation = 0 + DashEncapsulation_DASH_ENCAPSULATION_INVALID DashEncapsulation = 1 + DashEncapsulation_DASH_ENCAPSULATION_VXLAN DashEncapsulation = 2 + DashEncapsulation_DASH_ENCAPSULATION_NVGRE DashEncapsulation = 3 +) + +// Enum value maps for DashEncapsulation. +var ( + DashEncapsulation_name = map[int32]string{ + 0: "DASH_ENCAPSULATION_UNSPECIFIED", + 1: "DASH_ENCAPSULATION_INVALID", + 2: "DASH_ENCAPSULATION_VXLAN", + 3: "DASH_ENCAPSULATION_NVGRE", + } + DashEncapsulation_value = map[string]int32{ + "DASH_ENCAPSULATION_UNSPECIFIED": 0, + "DASH_ENCAPSULATION_INVALID": 1, + "DASH_ENCAPSULATION_VXLAN": 2, + "DASH_ENCAPSULATION_NVGRE": 3, + } +) + +func (x DashEncapsulation) Enum() *DashEncapsulation { + p := new(DashEncapsulation) + *p = x + return p +} + +func (x DashEncapsulation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashEncapsulation) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[35].Descriptor() +} + +func (DashEncapsulation) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[35] +} + +func (x DashEncapsulation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashEncapsulation.Descriptor instead. +func (DashEncapsulation) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{35} +} + +type DashTunnelDscpMode int32 + +const ( + DashTunnelDscpMode_DASH_TUNNEL_DSCP_MODE_UNSPECIFIED DashTunnelDscpMode = 0 + DashTunnelDscpMode_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL DashTunnelDscpMode = 1 + DashTunnelDscpMode_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL DashTunnelDscpMode = 2 +) + +// Enum value maps for DashTunnelDscpMode. +var ( + DashTunnelDscpMode_name = map[int32]string{ + 0: "DASH_TUNNEL_DSCP_MODE_UNSPECIFIED", + 1: "DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL", + 2: "DASH_TUNNEL_DSCP_MODE_PIPE_MODEL", + } + DashTunnelDscpMode_value = map[string]int32{ + "DASH_TUNNEL_DSCP_MODE_UNSPECIFIED": 0, + "DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL": 1, + "DASH_TUNNEL_DSCP_MODE_PIPE_MODEL": 2, + } +) + +func (x DashTunnelDscpMode) Enum() *DashTunnelDscpMode { + p := new(DashTunnelDscpMode) + *p = x + return p +} + +func (x DashTunnelDscpMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashTunnelDscpMode) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[36].Descriptor() +} + +func (DashTunnelDscpMode) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[36] +} + +func (x DashTunnelDscpMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashTunnelDscpMode.Descriptor instead. +func (DashTunnelDscpMode) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{36} +} + +type DebugCounterBindMethod int32 + +const ( + DebugCounterBindMethod_DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED DebugCounterBindMethod = 0 + DebugCounterBindMethod_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC DebugCounterBindMethod = 1 +) + +// Enum value maps for DebugCounterBindMethod. +var ( + DebugCounterBindMethod_name = map[int32]string{ + 0: "DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED", 1: "DEBUG_COUNTER_BIND_METHOD_AUTOMATIC", } DebugCounterBindMethod_value = map[string]int32{ @@ -2036,11 +2457,11 @@ func (x DebugCounterBindMethod) String() string { } func (DebugCounterBindMethod) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[30].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[37].Descriptor() } func (DebugCounterBindMethod) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[30] + return &file_dataplane_proto_sai_common_proto_enumTypes[37] } func (x DebugCounterBindMethod) Number() protoreflect.EnumNumber { @@ -2049,7 +2470,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{30} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{37} } type DebugCounterType int32 @@ -2091,11 +2512,11 @@ func (x DebugCounterType) String() string { } func (DebugCounterType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[31].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[38].Descriptor() } func (DebugCounterType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[31] + return &file_dataplane_proto_sai_common_proto_enumTypes[38] } func (x DebugCounterType) Number() protoreflect.EnumNumber { @@ -2104,7 +2525,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{31} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{38} } type DtelEventType int32 @@ -2155,11 +2576,11 @@ func (x DtelEventType) String() string { } func (DtelEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[32].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[39].Descriptor() } func (DtelEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[32] + return &file_dataplane_proto_sai_common_proto_enumTypes[39] } func (x DtelEventType) Number() protoreflect.EnumNumber { @@ -2168,7 +2589,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{32} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{39} } type EcnMarkMode int32 @@ -2222,11 +2643,11 @@ func (x EcnMarkMode) String() string { } func (EcnMarkMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[33].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[40].Descriptor() } func (EcnMarkMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[33] + return &file_dataplane_proto_sai_common_proto_enumTypes[40] } func (x EcnMarkMode) Number() protoreflect.EnumNumber { @@ -2235,7 +2656,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{33} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{40} } type ErspanEncapsulationType int32 @@ -2268,11 +2689,11 @@ func (x ErspanEncapsulationType) String() string { } func (ErspanEncapsulationType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[34].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[41].Descriptor() } func (ErspanEncapsulationType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[34] + return &file_dataplane_proto_sai_common_proto_enumTypes[41] } func (x ErspanEncapsulationType) Number() protoreflect.EnumNumber { @@ -2281,7 +2702,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{34} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{41} } type FdbEntryType int32 @@ -2317,11 +2738,11 @@ func (x FdbEntryType) String() string { } func (FdbEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[35].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[42].Descriptor() } func (FdbEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[35] + return &file_dataplane_proto_sai_common_proto_enumTypes[42] } func (x FdbEntryType) Number() protoreflect.EnumNumber { @@ -2330,7 +2751,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{35} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{42} } type FdbEvent int32 @@ -2372,11 +2793,11 @@ func (x FdbEvent) String() string { } func (FdbEvent) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[36].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[43].Descriptor() } func (FdbEvent) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[36] + return &file_dataplane_proto_sai_common_proto_enumTypes[43] } func (x FdbEvent) Number() protoreflect.EnumNumber { @@ -2385,7 +2806,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{36} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{43} } type FdbFlushEntryType int32 @@ -2424,11 +2845,11 @@ func (x FdbFlushEntryType) String() string { } func (FdbFlushEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[37].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[44].Descriptor() } func (FdbFlushEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[37] + return &file_dataplane_proto_sai_common_proto_enumTypes[44] } func (x FdbFlushEntryType) Number() protoreflect.EnumNumber { @@ -2437,7 +2858,7 @@ 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{37} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{44} } type HashAlgorithm int32 @@ -2488,11 +2909,11 @@ func (x HashAlgorithm) String() string { } func (HashAlgorithm) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[38].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[45].Descriptor() } func (HashAlgorithm) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[38] + return &file_dataplane_proto_sai_common_proto_enumTypes[45] } func (x HashAlgorithm) Number() protoreflect.EnumNumber { @@ -2501,7 +2922,53 @@ 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{38} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{45} +} + +type HealthDataType int32 + +const ( + HealthDataType_HEALTH_DATA_TYPE_UNSPECIFIED HealthDataType = 0 + HealthDataType_HEALTH_DATA_TYPE_GENERAL HealthDataType = 1 +) + +// Enum value maps for HealthDataType. +var ( + HealthDataType_name = map[int32]string{ + 0: "HEALTH_DATA_TYPE_UNSPECIFIED", + 1: "HEALTH_DATA_TYPE_GENERAL", + } + HealthDataType_value = map[string]int32{ + "HEALTH_DATA_TYPE_UNSPECIFIED": 0, + "HEALTH_DATA_TYPE_GENERAL": 1, + } +) + +func (x HealthDataType) Enum() *HealthDataType { + p := new(HealthDataType) + *p = x + return p +} + +func (x HealthDataType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HealthDataType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[46].Descriptor() +} + +func (HealthDataType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[46] +} + +func (x HealthDataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HealthDataType.Descriptor instead. +func (HealthDataType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{46} } type HostifTableEntryChannelType int32 @@ -2549,11 +3016,11 @@ func (x HostifTableEntryChannelType) String() string { } func (HostifTableEntryChannelType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[39].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[47].Descriptor() } func (HostifTableEntryChannelType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[39] + return &file_dataplane_proto_sai_common_proto_enumTypes[47] } func (x HostifTableEntryChannelType) Number() protoreflect.EnumNumber { @@ -2562,7 +3029,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{39} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{47} } type HostifTableEntryType int32 @@ -2607,11 +3074,11 @@ func (x HostifTableEntryType) String() string { } func (HostifTableEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[40].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[48].Descriptor() } func (HostifTableEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[40] + return &file_dataplane_proto_sai_common_proto_enumTypes[48] } func (x HostifTableEntryType) Number() protoreflect.EnumNumber { @@ -2620,7 +3087,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{40} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{48} } type HostifTrapType int32 @@ -2685,6 +3152,8 @@ const ( HostifTrapType_HOSTIF_TRAP_TYPE_P4RT HostifTrapType = 16396 HostifTrapType_HOSTIF_TRAP_TYPE_NTPCLIENT HostifTrapType = 16397 HostifTrapType_HOSTIF_TRAP_TYPE_NTPSERVER HostifTrapType = 16398 + HostifTrapType_HOSTIF_TRAP_TYPE_HTTPCLIENT HostifTrapType = 16399 + HostifTrapType_HOSTIF_TRAP_TYPE_HTTPSERVER HostifTrapType = 16400 HostifTrapType_HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE HostifTrapType = 20481 HostifTrapType_HOSTIF_TRAP_TYPE_L3_MTU_ERROR HostifTrapType = 24577 HostifTrapType_HOSTIF_TRAP_TYPE_TTL_ERROR HostifTrapType = 24578 @@ -2761,6 +3230,8 @@ var ( 16396: "HOSTIF_TRAP_TYPE_P4RT", 16397: "HOSTIF_TRAP_TYPE_NTPCLIENT", 16398: "HOSTIF_TRAP_TYPE_NTPSERVER", + 16399: "HOSTIF_TRAP_TYPE_HTTPCLIENT", + 16400: "HOSTIF_TRAP_TYPE_HTTPSERVER", 20481: "HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE", 24577: "HOSTIF_TRAP_TYPE_L3_MTU_ERROR", 24578: "HOSTIF_TRAP_TYPE_TTL_ERROR", @@ -2834,6 +3305,8 @@ var ( "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, @@ -2860,11 +3333,11 @@ func (x HostifTrapType) String() string { } func (HostifTrapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[41].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[49].Descriptor() } func (HostifTrapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[41] + return &file_dataplane_proto_sai_common_proto_enumTypes[49] } func (x HostifTrapType) Number() protoreflect.EnumNumber { @@ -2873,7 +3346,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{41} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{49} } type HostifTxType int32 @@ -2912,11 +3385,11 @@ func (x HostifTxType) String() string { } func (HostifTxType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[42].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[50].Descriptor() } func (HostifTxType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[42] + return &file_dataplane_proto_sai_common_proto_enumTypes[50] } func (x HostifTxType) Number() protoreflect.EnumNumber { @@ -2925,7 +3398,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{42} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{50} } type HostifType int32 @@ -2964,11 +3437,11 @@ func (x HostifType) String() string { } func (HostifType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[43].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[51].Descriptor() } func (HostifType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[43] + return &file_dataplane_proto_sai_common_proto_enumTypes[51] } func (x HostifType) Number() protoreflect.EnumNumber { @@ -2977,7 +3450,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{43} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{51} } type HostifUserDefinedTrapType int32 @@ -2991,6 +3464,7 @@ const ( HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_ACL HostifUserDefinedTrapType = 3 HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_FDB HostifUserDefinedTrapType = 4 HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY HostifUserDefinedTrapType = 5 + HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_TAM HostifUserDefinedTrapType = 6 HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE HostifUserDefinedTrapType = 4097 HostifUserDefinedTrapType_HOSTIF_USER_DEFINED_TRAP_TYPE_END HostifUserDefinedTrapType = 4098 ) @@ -3006,6 +3480,7 @@ var ( 3: "HOSTIF_USER_DEFINED_TRAP_TYPE_ACL", 4: "HOSTIF_USER_DEFINED_TRAP_TYPE_FDB", 5: "HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY", + 6: "HOSTIF_USER_DEFINED_TRAP_TYPE_TAM", 4097: "HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE", 4098: "HOSTIF_USER_DEFINED_TRAP_TYPE_END", } @@ -3018,6 +3493,7 @@ var ( "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, } @@ -3034,11 +3510,11 @@ func (x HostifUserDefinedTrapType) String() string { } func (HostifUserDefinedTrapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[44].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[52].Descriptor() } func (HostifUserDefinedTrapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[44] + return &file_dataplane_proto_sai_common_proto_enumTypes[52] } func (x HostifUserDefinedTrapType) Number() protoreflect.EnumNumber { @@ -3047,7 +3523,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{44} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{52} } type HostifVlanTag int32 @@ -3086,11 +3562,11 @@ func (x HostifVlanTag) String() string { } func (HostifVlanTag) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[45].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[53].Descriptor() } func (HostifVlanTag) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[45] + return &file_dataplane_proto_sai_common_proto_enumTypes[53] } func (x HostifVlanTag) Number() protoreflect.EnumNumber { @@ -3099,7 +3575,7 @@ 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{45} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{53} } type InDropReason int32 @@ -3306,11 +3782,11 @@ func (x InDropReason) String() string { } func (InDropReason) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[46].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[54].Descriptor() } func (InDropReason) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[46] + return &file_dataplane_proto_sai_common_proto_enumTypes[54] } func (x InDropReason) Number() protoreflect.EnumNumber { @@ -3319,7 +3795,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{46} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{54} } type IngressPriorityGroupStat int32 @@ -3379,11 +3855,11 @@ func (x IngressPriorityGroupStat) String() string { } func (IngressPriorityGroupStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[47].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[55].Descriptor() } func (IngressPriorityGroupStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[47] + return &file_dataplane_proto_sai_common_proto_enumTypes[55] } func (x IngressPriorityGroupStat) Number() protoreflect.EnumNumber { @@ -3392,7 +3868,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{47} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{55} } type InsegEntryPopQosMode int32 @@ -3428,11 +3904,11 @@ func (x InsegEntryPopQosMode) String() string { } func (InsegEntryPopQosMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[48].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[56].Descriptor() } func (InsegEntryPopQosMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[48] + return &file_dataplane_proto_sai_common_proto_enumTypes[56] } func (x InsegEntryPopQosMode) Number() protoreflect.EnumNumber { @@ -3441,7 +3917,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{48} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{56} } type InsegEntryPopTtlMode int32 @@ -3477,11 +3953,11 @@ func (x InsegEntryPopTtlMode) String() string { } func (InsegEntryPopTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[49].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[57].Descriptor() } func (InsegEntryPopTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[49] + return &file_dataplane_proto_sai_common_proto_enumTypes[57] } func (x InsegEntryPopTtlMode) Number() protoreflect.EnumNumber { @@ -3490,7 +3966,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{49} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{57} } type InsegEntryPscType int32 @@ -3526,11 +4002,11 @@ func (x InsegEntryPscType) String() string { } func (InsegEntryPscType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[50].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[58].Descriptor() } func (InsegEntryPscType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[50] + return &file_dataplane_proto_sai_common_proto_enumTypes[58] } func (x InsegEntryPscType) Number() protoreflect.EnumNumber { @@ -3539,7 +4015,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{50} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{58} } type IpAddrFamily int32 @@ -3575,11 +4051,11 @@ func (x IpAddrFamily) String() string { } func (IpAddrFamily) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[51].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[59].Descriptor() } func (IpAddrFamily) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[51] + return &file_dataplane_proto_sai_common_proto_enumTypes[59] } func (x IpAddrFamily) Number() protoreflect.EnumNumber { @@ -3588,7 +4064,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{51} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{59} } type IpmcEntryType int32 @@ -3624,11 +4100,11 @@ func (x IpmcEntryType) String() string { } func (IpmcEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[52].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[60].Descriptor() } func (IpmcEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[52] + return &file_dataplane_proto_sai_common_proto_enumTypes[60] } func (x IpmcEntryType) Number() protoreflect.EnumNumber { @@ -3637,7 +4113,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{52} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{60} } type IpsecCipher int32 @@ -3679,11 +4155,11 @@ func (x IpsecCipher) String() string { } func (IpsecCipher) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[53].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[61].Descriptor() } func (IpsecCipher) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[53] + return &file_dataplane_proto_sai_common_proto_enumTypes[61] } func (x IpsecCipher) Number() protoreflect.EnumNumber { @@ -3692,7 +4168,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{53} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{61} } type IpsecDirection int32 @@ -3728,11 +4204,11 @@ func (x IpsecDirection) String() string { } func (IpsecDirection) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[54].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[62].Descriptor() } func (IpsecDirection) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[54] + return &file_dataplane_proto_sai_common_proto_enumTypes[62] } func (x IpsecDirection) Number() protoreflect.EnumNumber { @@ -3741,7 +4217,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{54} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{62} } type IpsecPortStat int32 @@ -3789,11 +4265,11 @@ func (x IpsecPortStat) String() string { } func (IpsecPortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[55].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[63].Descriptor() } func (IpsecPortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[55] + return &file_dataplane_proto_sai_common_proto_enumTypes[63] } func (x IpsecPortStat) Number() protoreflect.EnumNumber { @@ -3802,7 +4278,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{55} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{63} } type IpsecSaOctetCountStatus int32 @@ -3841,11 +4317,11 @@ func (x IpsecSaOctetCountStatus) String() string { } func (IpsecSaOctetCountStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[56].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[64].Descriptor() } func (IpsecSaOctetCountStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[56] + return &file_dataplane_proto_sai_common_proto_enumTypes[64] } func (x IpsecSaOctetCountStatus) Number() protoreflect.EnumNumber { @@ -3854,7 +4330,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{56} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{64} } type IpsecSaStat int32 @@ -3914,11 +4390,11 @@ func (x IpsecSaStat) String() string { } func (IpsecSaStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[57].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[65].Descriptor() } func (IpsecSaStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[57] + return &file_dataplane_proto_sai_common_proto_enumTypes[65] } func (x IpsecSaStat) Number() protoreflect.EnumNumber { @@ -3927,7 +4403,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{57} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{65} } type IsolationGroupType int32 @@ -3963,11 +4439,11 @@ func (x IsolationGroupType) String() string { } func (IsolationGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[58].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[66].Descriptor() } func (IsolationGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[58] + return &file_dataplane_proto_sai_common_proto_enumTypes[66] } func (x IsolationGroupType) Number() protoreflect.EnumNumber { @@ -3976,7 +4452,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{58} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{66} } type L2McEntryType int32 @@ -4012,11 +4488,11 @@ func (x L2McEntryType) String() string { } func (L2McEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[59].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[67].Descriptor() } func (L2McEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[59] + return &file_dataplane_proto_sai_common_proto_enumTypes[67] } func (x L2McEntryType) Number() protoreflect.EnumNumber { @@ -4025,7 +4501,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{59} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{67} } type LogLevel int32 @@ -4073,11 +4549,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[60].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[68].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[60] + return &file_dataplane_proto_sai_common_proto_enumTypes[68] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -4086,7 +4562,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{60} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{68} } type MacsecCipherSuite int32 @@ -4128,11 +4604,11 @@ func (x MacsecCipherSuite) String() string { } func (MacsecCipherSuite) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[61].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[69].Descriptor() } func (MacsecCipherSuite) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[61] + return &file_dataplane_proto_sai_common_proto_enumTypes[69] } func (x MacsecCipherSuite) Number() protoreflect.EnumNumber { @@ -4141,7 +4617,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{61} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} } type MacsecDirection int32 @@ -4177,11 +4653,11 @@ func (x MacsecDirection) String() string { } func (MacsecDirection) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[62].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[70].Descriptor() } func (MacsecDirection) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[62] + return &file_dataplane_proto_sai_common_proto_enumTypes[70] } func (x MacsecDirection) Number() protoreflect.EnumNumber { @@ -4190,7 +4666,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{62} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} } type MacsecFlowStat int32 @@ -4277,11 +4753,11 @@ func (x MacsecFlowStat) String() string { } func (MacsecFlowStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[63].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[71].Descriptor() } func (MacsecFlowStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[63] + return &file_dataplane_proto_sai_common_proto_enumTypes[71] } func (x MacsecFlowStat) Number() protoreflect.EnumNumber { @@ -4290,7 +4766,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{63} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} } type MacsecMaxSecureAssociationsPerSc int32 @@ -4326,11 +4802,11 @@ func (x MacsecMaxSecureAssociationsPerSc) String() string { } func (MacsecMaxSecureAssociationsPerSc) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[64].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[72].Descriptor() } func (MacsecMaxSecureAssociationsPerSc) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[64] + return &file_dataplane_proto_sai_common_proto_enumTypes[72] } func (x MacsecMaxSecureAssociationsPerSc) Number() protoreflect.EnumNumber { @@ -4339,7 +4815,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{64} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} } type MacsecPortStat int32 @@ -4378,11 +4854,11 @@ func (x MacsecPortStat) String() string { } func (MacsecPortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[65].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[73].Descriptor() } func (MacsecPortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[65] + return &file_dataplane_proto_sai_common_proto_enumTypes[73] } func (x MacsecPortStat) Number() protoreflect.EnumNumber { @@ -4391,7 +4867,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{65} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} } type MacsecSaStat int32 @@ -4457,11 +4933,11 @@ func (x MacsecSaStat) String() string { } func (MacsecSaStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[66].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[74].Descriptor() } func (MacsecSaStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[66] + return &file_dataplane_proto_sai_common_proto_enumTypes[74] } func (x MacsecSaStat) Number() protoreflect.EnumNumber { @@ -4470,7 +4946,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{66} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} } type MacsecScStat int32 @@ -4503,11 +4979,11 @@ func (x MacsecScStat) String() string { } func (MacsecScStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[67].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[75].Descriptor() } func (MacsecScStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[67] + return &file_dataplane_proto_sai_common_proto_enumTypes[75] } func (x MacsecScStat) Number() protoreflect.EnumNumber { @@ -4516,7 +4992,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{67} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} } type MeterType int32 @@ -4555,11 +5031,11 @@ func (x MeterType) String() string { } func (MeterType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[68].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[76].Descriptor() } func (MeterType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[68] + return &file_dataplane_proto_sai_common_proto_enumTypes[76] } func (x MeterType) Number() protoreflect.EnumNumber { @@ -4568,7 +5044,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{68} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} } type MirrorSessionCongestionMode int32 @@ -4604,11 +5080,11 @@ func (x MirrorSessionCongestionMode) String() string { } func (MirrorSessionCongestionMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[69].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[77].Descriptor() } func (MirrorSessionCongestionMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[69] + return &file_dataplane_proto_sai_common_proto_enumTypes[77] } func (x MirrorSessionCongestionMode) Number() protoreflect.EnumNumber { @@ -4617,7 +5093,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{69} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} } type MirrorSessionType int32 @@ -4659,11 +5135,11 @@ func (x MirrorSessionType) String() string { } func (MirrorSessionType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[70].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[78].Descriptor() } func (MirrorSessionType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[70] + return &file_dataplane_proto_sai_common_proto_enumTypes[78] } func (x MirrorSessionType) Number() protoreflect.EnumNumber { @@ -4672,7 +5148,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{70} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} } type MySidEntryEndpointBehaviorFlavor int32 @@ -4726,11 +5202,11 @@ func (x MySidEntryEndpointBehaviorFlavor) String() string { } func (MySidEntryEndpointBehaviorFlavor) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[71].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[79].Descriptor() } func (MySidEntryEndpointBehaviorFlavor) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[71] + return &file_dataplane_proto_sai_common_proto_enumTypes[79] } func (x MySidEntryEndpointBehaviorFlavor) Number() protoreflect.EnumNumber { @@ -4739,7 +5215,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{71} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} } type MySidEntryEndpointBehavior int32 @@ -4817,11 +5293,11 @@ func (x MySidEntryEndpointBehavior) String() string { } func (MySidEntryEndpointBehavior) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[72].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[80].Descriptor() } func (MySidEntryEndpointBehavior) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[72] + return &file_dataplane_proto_sai_common_proto_enumTypes[80] } func (x MySidEntryEndpointBehavior) Number() protoreflect.EnumNumber { @@ -4830,7 +5306,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{72} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} } type NatEvent int32 @@ -4866,11 +5342,11 @@ func (x NatEvent) String() string { } func (NatEvent) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[73].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[81].Descriptor() } func (NatEvent) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[73] + return &file_dataplane_proto_sai_common_proto_enumTypes[81] } func (x NatEvent) Number() protoreflect.EnumNumber { @@ -4879,7 +5355,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{73} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} } type NatType int32 @@ -4924,11 +5400,11 @@ func (x NatType) String() string { } func (NatType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[74].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[82].Descriptor() } func (NatType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[74] + return &file_dataplane_proto_sai_common_proto_enumTypes[82] } func (x NatType) Number() protoreflect.EnumNumber { @@ -4937,7 +5413,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{74} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} } type NativeHashField int32 @@ -5069,11 +5545,11 @@ func (x NativeHashField) String() string { } func (NativeHashField) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[75].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[83].Descriptor() } func (NativeHashField) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[75] + return &file_dataplane_proto_sai_common_proto_enumTypes[83] } func (x NativeHashField) Number() protoreflect.EnumNumber { @@ -5082,7 +5558,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{75} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} } type NextHopGroupMapType int32 @@ -5115,11 +5591,11 @@ func (x NextHopGroupMapType) String() string { } func (NextHopGroupMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[76].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[84].Descriptor() } func (NextHopGroupMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[76] + return &file_dataplane_proto_sai_common_proto_enumTypes[84] } func (x NextHopGroupMapType) Number() protoreflect.EnumNumber { @@ -5128,7 +5604,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{76} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} } type NextHopGroupMemberConfiguredRole int32 @@ -5164,11 +5640,11 @@ func (x NextHopGroupMemberConfiguredRole) String() string { } func (NextHopGroupMemberConfiguredRole) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[77].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[85].Descriptor() } func (NextHopGroupMemberConfiguredRole) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[77] + return &file_dataplane_proto_sai_common_proto_enumTypes[85] } func (x NextHopGroupMemberConfiguredRole) Number() protoreflect.EnumNumber { @@ -5177,7 +5653,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{77} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} } type NextHopGroupMemberObservedRole int32 @@ -5213,11 +5689,11 @@ func (x NextHopGroupMemberObservedRole) String() string { } func (NextHopGroupMemberObservedRole) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[78].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[86].Descriptor() } func (NextHopGroupMemberObservedRole) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[78] + return &file_dataplane_proto_sai_common_proto_enumTypes[86] } func (x NextHopGroupMemberObservedRole) Number() protoreflect.EnumNumber { @@ -5226,7 +5702,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{78} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} } type NextHopGroupType int32 @@ -5277,11 +5753,11 @@ func (x NextHopGroupType) String() string { } func (NextHopGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[79].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[87].Descriptor() } func (NextHopGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[79] + return &file_dataplane_proto_sai_common_proto_enumTypes[87] } func (x NextHopGroupType) Number() protoreflect.EnumNumber { @@ -5290,7 +5766,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{79} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} } type NextHopType int32 @@ -5332,11 +5808,11 @@ func (x NextHopType) String() string { } func (NextHopType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[80].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[88].Descriptor() } func (NextHopType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[80] + return &file_dataplane_proto_sai_common_proto_enumTypes[88] } func (x NextHopType) Number() protoreflect.EnumNumber { @@ -5345,7 +5821,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{80} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} } type ObjectStage int32 @@ -5384,11 +5860,11 @@ func (x ObjectStage) String() string { } func (ObjectStage) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[81].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[89].Descriptor() } func (ObjectStage) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[81] + return &file_dataplane_proto_sai_common_proto_enumTypes[89] } func (x ObjectStage) Number() protoreflect.EnumNumber { @@ -5397,37 +5873,79 @@ 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{81} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} } type ObjectTypeExtensions int32 const ( ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_UNSPECIFIED ObjectTypeExtensions = 0 - ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_START ObjectTypeExtensions = 104 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY ObjectTypeExtensions = 104 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY ObjectTypeExtensions = 105 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY ObjectTypeExtensions = 106 - ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_END ObjectTypeExtensions = 107 + 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 ) // Enum value maps for ObjectTypeExtensions. var ( ObjectTypeExtensions_name = map[int32]string{ 0: "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED", - 104: "OBJECT_TYPE_EXTENSIONS_RANGE_START", - // Duplicate value: 104: "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY", - 105: "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY", - 106: "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY", - 107: "OBJECT_TYPE_EXTENSIONS_RANGE_END", + 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", } ObjectTypeExtensions_value = map[string]int32{ "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED": 0, - "OBJECT_TYPE_EXTENSIONS_RANGE_START": 104, - "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY": 104, - "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY": 105, - "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY": 106, - "OBJECT_TYPE_EXTENSIONS_RANGE_END": 107, + "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, } ) @@ -5442,11 +5960,11 @@ func (x ObjectTypeExtensions) String() string { } func (ObjectTypeExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[82].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[90].Descriptor() } func (ObjectTypeExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[82] + return &file_dataplane_proto_sai_common_proto_enumTypes[90] } func (x ObjectTypeExtensions) Number() protoreflect.EnumNumber { @@ -5455,7 +5973,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{82} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} } type ObjectType int32 @@ -5565,7 +6083,17 @@ const ( ObjectType_OBJECT_TYPE_IPSEC_PORT ObjectType = 101 ObjectType_OBJECT_TYPE_IPSEC_SA ObjectType = 102 ObjectType_OBJECT_TYPE_GENERIC_PROGRAMMABLE ObjectType = 103 - ObjectType_OBJECT_TYPE_MAX ObjectType = 104 + ObjectType_OBJECT_TYPE_ARS_PROFILE ObjectType = 104 + ObjectType_OBJECT_TYPE_ARS ObjectType = 105 + ObjectType_OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP ObjectType = 106 + ObjectType_OBJECT_TYPE_TWAMP_SESSION ObjectType = 107 + ObjectType_OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION ObjectType = 108 + 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 ) // Enum value maps for ObjectType. @@ -5675,7 +6203,17 @@ var ( 101: "OBJECT_TYPE_IPSEC_PORT", 102: "OBJECT_TYPE_IPSEC_SA", 103: "OBJECT_TYPE_GENERIC_PROGRAMMABLE", - 104: "OBJECT_TYPE_MAX", + 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", } ObjectType_value = map[string]int32{ "OBJECT_TYPE_UNSPECIFIED": 0, @@ -5782,7 +6320,17 @@ var ( "OBJECT_TYPE_IPSEC_PORT": 101, "OBJECT_TYPE_IPSEC_SA": 102, "OBJECT_TYPE_GENERIC_PROGRAMMABLE": 103, - "OBJECT_TYPE_MAX": 104, + "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, } ) @@ -5797,11 +6345,11 @@ func (x ObjectType) String() string { } func (ObjectType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[83].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[91].Descriptor() } func (ObjectType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[83] + return &file_dataplane_proto_sai_common_proto_enumTypes[91] } func (x ObjectType) Number() protoreflect.EnumNumber { @@ -5810,7 +6358,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{83} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} } type OutDropReason int32 @@ -5867,11 +6415,11 @@ func (x OutDropReason) String() string { } func (OutDropReason) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[84].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[92].Descriptor() } func (OutDropReason) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[84] + return &file_dataplane_proto_sai_common_proto_enumTypes[92] } func (x OutDropReason) Number() protoreflect.EnumNumber { @@ -5880,7 +6428,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{84} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} } type OutsegExpMode int32 @@ -5916,11 +6464,11 @@ func (x OutsegExpMode) String() string { } func (OutsegExpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[85].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[93].Descriptor() } func (OutsegExpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[85] + return &file_dataplane_proto_sai_common_proto_enumTypes[93] } func (x OutsegExpMode) Number() protoreflect.EnumNumber { @@ -5929,7 +6477,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{85} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} } type OutsegTtlMode int32 @@ -5965,11 +6513,11 @@ func (x OutsegTtlMode) String() string { } func (OutsegTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[86].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[94].Descriptor() } func (OutsegTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[86] + return &file_dataplane_proto_sai_common_proto_enumTypes[94] } func (x OutsegTtlMode) Number() protoreflect.EnumNumber { @@ -5978,7 +6526,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{86} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} } type OutsegType int32 @@ -6014,11 +6562,11 @@ func (x OutsegType) String() string { } func (OutsegType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[87].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[95].Descriptor() } func (OutsegType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[87] + return &file_dataplane_proto_sai_common_proto_enumTypes[95] } func (x OutsegType) Number() protoreflect.EnumNumber { @@ -6027,7 +6575,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{87} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} } type PacketAction int32 @@ -6084,11 +6632,11 @@ func (x PacketAction) String() string { } func (PacketAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[88].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[96].Descriptor() } func (PacketAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[88] + return &file_dataplane_proto_sai_common_proto_enumTypes[96] } func (x PacketAction) Number() protoreflect.EnumNumber { @@ -6097,7 +6645,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{88} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} } type PacketColor int32 @@ -6136,11 +6684,11 @@ func (x PacketColor) String() string { } func (PacketColor) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[89].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[97].Descriptor() } func (PacketColor) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[89] + return &file_dataplane_proto_sai_common_proto_enumTypes[97] } func (x PacketColor) Number() protoreflect.EnumNumber { @@ -6149,7 +6697,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{89} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} } type PacketVlan int32 @@ -6188,11 +6736,11 @@ func (x PacketVlan) String() string { } func (PacketVlan) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[90].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[98].Descriptor() } func (PacketVlan) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[90] + return &file_dataplane_proto_sai_common_proto_enumTypes[98] } func (x PacketVlan) Number() protoreflect.EnumNumber { @@ -6201,59 +6749,209 @@ 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{90} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} } -type PolicerColorSource int32 +type PoePortActiveChannelType int32 const ( - PolicerColorSource_POLICER_COLOR_SOURCE_UNSPECIFIED PolicerColorSource = 0 - PolicerColorSource_POLICER_COLOR_SOURCE_BLIND PolicerColorSource = 1 - PolicerColorSource_POLICER_COLOR_SOURCE_AWARE PolicerColorSource = 2 - PolicerColorSource_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE PolicerColorSource = 268435457 + PoePortActiveChannelType_POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED PoePortActiveChannelType = 0 + PoePortActiveChannelType_POE_PORT_ACTIVE_CHANNEL_TYPE_A PoePortActiveChannelType = 1 + PoePortActiveChannelType_POE_PORT_ACTIVE_CHANNEL_TYPE_B PoePortActiveChannelType = 2 + PoePortActiveChannelType_POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B PoePortActiveChannelType = 3 ) -// Enum value maps for PolicerColorSource. +// Enum value maps for PoePortActiveChannelType. var ( - PolicerColorSource_name = map[int32]string{ - 0: "POLICER_COLOR_SOURCE_UNSPECIFIED", - 1: "POLICER_COLOR_SOURCE_BLIND", - 2: "POLICER_COLOR_SOURCE_AWARE", - 268435457: "POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE", + PoePortActiveChannelType_name = map[int32]string{ + 0: "POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED", + 1: "POE_PORT_ACTIVE_CHANNEL_TYPE_A", + 2: "POE_PORT_ACTIVE_CHANNEL_TYPE_B", + 3: "POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B", } - PolicerColorSource_value = map[string]int32{ - "POLICER_COLOR_SOURCE_UNSPECIFIED": 0, - "POLICER_COLOR_SOURCE_BLIND": 1, - "POLICER_COLOR_SOURCE_AWARE": 2, - "POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE": 268435457, + PoePortActiveChannelType_value = map[string]int32{ + "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, } ) -func (x PolicerColorSource) Enum() *PolicerColorSource { - p := new(PolicerColorSource) +func (x PoePortActiveChannelType) Enum() *PoePortActiveChannelType { + p := new(PoePortActiveChannelType) *p = x return p } -func (x PolicerColorSource) String() string { +func (x PoePortActiveChannelType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PolicerColorSource) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[91].Descriptor() +func (PoePortActiveChannelType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[99].Descriptor() } -func (PolicerColorSource) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[91] +func (PoePortActiveChannelType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[99] } -func (x PolicerColorSource) Number() protoreflect.EnumNumber { +func (x PoePortActiveChannelType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PolicerColorSource.Descriptor instead. -func (PolicerColorSource) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} +// Deprecated: Use PoePortActiveChannelType.Descriptor instead. +func (PoePortActiveChannelType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} +} + +type PoePortClassMethodType int32 + +const ( + PoePortClassMethodType_POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED PoePortClassMethodType = 0 + PoePortClassMethodType_POE_PORT_CLASS_METHOD_TYPE_REGULAR PoePortClassMethodType = 1 + PoePortClassMethodType_POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS PoePortClassMethodType = 2 +) + +// Enum value maps for PoePortClassMethodType. +var ( + PoePortClassMethodType_name = map[int32]string{ + 0: "POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED", + 1: "POE_PORT_CLASS_METHOD_TYPE_REGULAR", + 2: "POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS", + } + PoePortClassMethodType_value = map[string]int32{ + "POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED": 0, + "POE_PORT_CLASS_METHOD_TYPE_REGULAR": 1, + "POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS": 2, + } +) + +func (x PoePortClassMethodType) Enum() *PoePortClassMethodType { + p := new(PoePortClassMethodType) + *p = x + return p +} + +func (x PoePortClassMethodType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PoePortClassMethodType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[100].Descriptor() +} + +func (PoePortClassMethodType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[100] +} + +func (x PoePortClassMethodType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PoePortClassMethodType.Descriptor instead. +func (PoePortClassMethodType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} +} + +type PoePortSignatureType int32 + +const ( + PoePortSignatureType_POE_PORT_SIGNATURE_TYPE_UNSPECIFIED PoePortSignatureType = 0 + PoePortSignatureType_POE_PORT_SIGNATURE_TYPE_SINGLE PoePortSignatureType = 1 + PoePortSignatureType_POE_PORT_SIGNATURE_TYPE_DUAL PoePortSignatureType = 2 +) + +// Enum value maps for PoePortSignatureType. +var ( + PoePortSignatureType_name = map[int32]string{ + 0: "POE_PORT_SIGNATURE_TYPE_UNSPECIFIED", + 1: "POE_PORT_SIGNATURE_TYPE_SINGLE", + 2: "POE_PORT_SIGNATURE_TYPE_DUAL", + } + PoePortSignatureType_value = map[string]int32{ + "POE_PORT_SIGNATURE_TYPE_UNSPECIFIED": 0, + "POE_PORT_SIGNATURE_TYPE_SINGLE": 1, + "POE_PORT_SIGNATURE_TYPE_DUAL": 2, + } +) + +func (x PoePortSignatureType) Enum() *PoePortSignatureType { + p := new(PoePortSignatureType) + *p = x + return p +} + +func (x PoePortSignatureType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PoePortSignatureType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[101].Descriptor() +} + +func (PoePortSignatureType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[101] +} + +func (x PoePortSignatureType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PoePortSignatureType.Descriptor instead. +func (PoePortSignatureType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} +} + +type PolicerColorSource int32 + +const ( + PolicerColorSource_POLICER_COLOR_SOURCE_UNSPECIFIED PolicerColorSource = 0 + PolicerColorSource_POLICER_COLOR_SOURCE_BLIND PolicerColorSource = 1 + PolicerColorSource_POLICER_COLOR_SOURCE_AWARE PolicerColorSource = 2 + PolicerColorSource_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE PolicerColorSource = 268435457 +) + +// Enum value maps for PolicerColorSource. +var ( + PolicerColorSource_name = map[int32]string{ + 0: "POLICER_COLOR_SOURCE_UNSPECIFIED", + 1: "POLICER_COLOR_SOURCE_BLIND", + 2: "POLICER_COLOR_SOURCE_AWARE", + 268435457: "POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE", + } + PolicerColorSource_value = map[string]int32{ + "POLICER_COLOR_SOURCE_UNSPECIFIED": 0, + "POLICER_COLOR_SOURCE_BLIND": 1, + "POLICER_COLOR_SOURCE_AWARE": 2, + "POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE": 268435457, + } +) + +func (x PolicerColorSource) Enum() *PolicerColorSource { + p := new(PolicerColorSource) + *p = x + return p +} + +func (x PolicerColorSource) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PolicerColorSource) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[102].Descriptor() +} + +func (PolicerColorSource) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[102] +} + +func (x PolicerColorSource) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PolicerColorSource.Descriptor instead. +func (PolicerColorSource) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} } type PolicerMode int32 @@ -6295,11 +6993,11 @@ func (x PolicerMode) String() string { } func (PolicerMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[92].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[103].Descriptor() } func (PolicerMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[92] + return &file_dataplane_proto_sai_common_proto_enumTypes[103] } func (x PolicerMode) Number() protoreflect.EnumNumber { @@ -6308,7 +7006,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{92} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} } type PolicerStat int32 @@ -6365,11 +7063,11 @@ func (x PolicerStat) String() string { } func (PolicerStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[93].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[104].Descriptor() } func (PolicerStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[93] + return &file_dataplane_proto_sai_common_proto_enumTypes[104] } func (x PolicerStat) Number() protoreflect.EnumNumber { @@ -6378,7 +7076,56 @@ 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{93} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} +} + +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 +) + +// 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", + } + PortAttrExtensions_value = map[string]int32{ + "PORT_ATTR_EXTENSIONS_UNSPECIFIED": 0, + "PORT_ATTR_EXTENSIONS_RANGE_START": 179, + "PORT_ATTR_EXTENSIONS_RANGE_END": 180, + } +) + +func (x PortAttrExtensions) Enum() *PortAttrExtensions { + p := new(PortAttrExtensions) + *p = x + return p +} + +func (x PortAttrExtensions) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortAttrExtensions) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[105].Descriptor() +} + +func (PortAttrExtensions) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[105] +} + +func (x PortAttrExtensions) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortAttrExtensions.Descriptor instead. +func (PortAttrExtensions) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} } type PortAutoNegConfigMode int32 @@ -6420,11 +7167,11 @@ func (x PortAutoNegConfigMode) String() string { } func (PortAutoNegConfigMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[94].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[106].Descriptor() } func (PortAutoNegConfigMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[94] + return &file_dataplane_proto_sai_common_proto_enumTypes[106] } func (x PortAutoNegConfigMode) Number() protoreflect.EnumNumber { @@ -6433,7 +7180,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{94} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} } type PortBreakoutModeType int32 @@ -6475,11 +7222,11 @@ func (x PortBreakoutModeType) String() string { } func (PortBreakoutModeType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[95].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[107].Descriptor() } func (PortBreakoutModeType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[95] + return &file_dataplane_proto_sai_common_proto_enumTypes[107] } func (x PortBreakoutModeType) Number() protoreflect.EnumNumber { @@ -6488,7 +7235,126 @@ 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{95} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} +} + +type PortCablePairState int32 + +const ( + PortCablePairState_PORT_CABLE_PAIR_STATE_UNSPECIFIED PortCablePairState = 0 + PortCablePairState_PORT_CABLE_PAIR_STATE_OK PortCablePairState = 1 + PortCablePairState_PORT_CABLE_PAIR_STATE_OPEN PortCablePairState = 2 + PortCablePairState_PORT_CABLE_PAIR_STATE_SHORT PortCablePairState = 3 + PortCablePairState_PORT_CABLE_PAIR_STATE_CROSSTALK PortCablePairState = 4 + PortCablePairState_PORT_CABLE_PAIR_STATE_UNKNOWN PortCablePairState = 5 +) + +// Enum value maps for PortCablePairState. +var ( + PortCablePairState_name = map[int32]string{ + 0: "PORT_CABLE_PAIR_STATE_UNSPECIFIED", + 1: "PORT_CABLE_PAIR_STATE_OK", + 2: "PORT_CABLE_PAIR_STATE_OPEN", + 3: "PORT_CABLE_PAIR_STATE_SHORT", + 4: "PORT_CABLE_PAIR_STATE_CROSSTALK", + 5: "PORT_CABLE_PAIR_STATE_UNKNOWN", + } + PortCablePairState_value = map[string]int32{ + "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, + } +) + +func (x PortCablePairState) Enum() *PortCablePairState { + p := new(PortCablePairState) + *p = x + return p +} + +func (x PortCablePairState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortCablePairState) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[108].Descriptor() +} + +func (PortCablePairState) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[108] +} + +func (x PortCablePairState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortCablePairState.Descriptor instead. +func (PortCablePairState) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} +} + +type PortCableType int32 + +const ( + PortCableType_PORT_CABLE_TYPE_UNSPECIFIED PortCableType = 0 + PortCableType_PORT_CABLE_TYPE_UNKNOWN PortCableType = 1 + PortCableType_PORT_CABLE_TYPE_CAT5 PortCableType = 2 + PortCableType_PORT_CABLE_TYPE_CAT5E PortCableType = 3 + PortCableType_PORT_CABLE_TYPE_CAT6 PortCableType = 4 + PortCableType_PORT_CABLE_TYPE_CAT6A PortCableType = 5 + PortCableType_PORT_CABLE_TYPE_CAT7 PortCableType = 6 +) + +// Enum value maps for PortCableType. +var ( + PortCableType_name = map[int32]string{ + 0: "PORT_CABLE_TYPE_UNSPECIFIED", + 1: "PORT_CABLE_TYPE_UNKNOWN", + 2: "PORT_CABLE_TYPE_CAT5", + 3: "PORT_CABLE_TYPE_CAT5E", + 4: "PORT_CABLE_TYPE_CAT6", + 5: "PORT_CABLE_TYPE_CAT6A", + 6: "PORT_CABLE_TYPE_CAT7", + } + PortCableType_value = map[string]int32{ + "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, + } +) + +func (x PortCableType) Enum() *PortCableType { + p := new(PortCableType) + *p = x + return p +} + +func (x PortCableType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortCableType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[109].Descriptor() +} + +func (PortCableType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[109] +} + +func (x PortCableType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortCableType.Descriptor instead. +func (PortCableType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} } type PortConnectorFailoverMode int32 @@ -6527,11 +7393,11 @@ func (x PortConnectorFailoverMode) String() string { } func (PortConnectorFailoverMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[96].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[110].Descriptor() } func (PortConnectorFailoverMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[96] + return &file_dataplane_proto_sai_common_proto_enumTypes[110] } func (x PortConnectorFailoverMode) Number() protoreflect.EnumNumber { @@ -6540,7 +7406,56 @@ 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{96} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} +} + +type PortDatapathEnable int32 + +const ( + PortDatapathEnable_PORT_DATAPATH_ENABLE_UNSPECIFIED PortDatapathEnable = 0 + PortDatapathEnable_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE PortDatapathEnable = 1 + PortDatapathEnable_PORT_DATAPATH_ENABLE_PCS_IEEE_MODE PortDatapathEnable = 2 +) + +// Enum value maps for PortDatapathEnable. +var ( + PortDatapathEnable_name = map[int32]string{ + 0: "PORT_DATAPATH_ENABLE_UNSPECIFIED", + 1: "PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE", + 2: "PORT_DATAPATH_ENABLE_PCS_IEEE_MODE", + } + PortDatapathEnable_value = map[string]int32{ + "PORT_DATAPATH_ENABLE_UNSPECIFIED": 0, + "PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE": 1, + "PORT_DATAPATH_ENABLE_PCS_IEEE_MODE": 2, + } +) + +func (x PortDatapathEnable) Enum() *PortDatapathEnable { + p := new(PortDatapathEnable) + *p = x + return p +} + +func (x PortDatapathEnable) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortDatapathEnable) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[111].Descriptor() +} + +func (PortDatapathEnable) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[111] +} + +func (x PortDatapathEnable) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortDatapathEnable.Descriptor instead. +func (PortDatapathEnable) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} } type PortDualMedia int32 @@ -6585,11 +7500,11 @@ func (x PortDualMedia) String() string { } func (PortDualMedia) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[97].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[112].Descriptor() } func (PortDualMedia) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[97] + return &file_dataplane_proto_sai_common_proto_enumTypes[112] } func (x PortDualMedia) Number() protoreflect.EnumNumber { @@ -6598,7 +7513,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{97} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} } type PortErrStatus int32 @@ -6655,11 +7570,11 @@ func (x PortErrStatus) String() string { } func (PortErrStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[98].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[113].Descriptor() } func (PortErrStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[98] + return &file_dataplane_proto_sai_common_proto_enumTypes[113] } func (x PortErrStatus) Number() protoreflect.EnumNumber { @@ -6668,7 +7583,7 @@ 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{98} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} } type PortFecModeExtended int32 @@ -6713,11 +7628,11 @@ func (x PortFecModeExtended) String() string { } func (PortFecModeExtended) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[99].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[114].Descriptor() } func (PortFecModeExtended) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[99] + return &file_dataplane_proto_sai_common_proto_enumTypes[114] } func (x PortFecModeExtended) Number() protoreflect.EnumNumber { @@ -6726,7 +7641,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{99} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} } type PortFecMode int32 @@ -6765,11 +7680,11 @@ func (x PortFecMode) String() string { } func (PortFecMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[100].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[115].Descriptor() } func (PortFecMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[100] + return &file_dataplane_proto_sai_common_proto_enumTypes[115] } func (x PortFecMode) Number() protoreflect.EnumNumber { @@ -6778,7 +7693,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{100} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} } type PortFlowControlMode int32 @@ -6820,11 +7735,11 @@ func (x PortFlowControlMode) String() string { } func (PortFlowControlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[101].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[116].Descriptor() } func (PortFlowControlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[101] + return &file_dataplane_proto_sai_common_proto_enumTypes[116] } func (x PortFlowControlMode) Number() protoreflect.EnumNumber { @@ -6833,7 +7748,56 @@ 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{101} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} +} + +type PortHostTxReadyStatus int32 + +const ( + PortHostTxReadyStatus_PORT_HOST_TX_READY_STATUS_UNSPECIFIED PortHostTxReadyStatus = 0 + PortHostTxReadyStatus_PORT_HOST_TX_READY_STATUS_NOT_READY PortHostTxReadyStatus = 1 + PortHostTxReadyStatus_PORT_HOST_TX_READY_STATUS_READY PortHostTxReadyStatus = 2 +) + +// Enum value maps for PortHostTxReadyStatus. +var ( + PortHostTxReadyStatus_name = map[int32]string{ + 0: "PORT_HOST_TX_READY_STATUS_UNSPECIFIED", + 1: "PORT_HOST_TX_READY_STATUS_NOT_READY", + 2: "PORT_HOST_TX_READY_STATUS_READY", + } + PortHostTxReadyStatus_value = map[string]int32{ + "PORT_HOST_TX_READY_STATUS_UNSPECIFIED": 0, + "PORT_HOST_TX_READY_STATUS_NOT_READY": 1, + "PORT_HOST_TX_READY_STATUS_READY": 2, + } +) + +func (x PortHostTxReadyStatus) Enum() *PortHostTxReadyStatus { + p := new(PortHostTxReadyStatus) + *p = x + return p +} + +func (x PortHostTxReadyStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortHostTxReadyStatus) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[117].Descriptor() +} + +func (PortHostTxReadyStatus) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[117] +} + +func (x PortHostTxReadyStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortHostTxReadyStatus.Descriptor instead. +func (PortHostTxReadyStatus) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} } type PortInterfaceType int32 @@ -6864,7 +7828,8 @@ const ( PortInterfaceType_PORT_INTERFACE_TYPE_KR8 PortInterfaceType = 22 PortInterfaceType_PORT_INTERFACE_TYPE_SR8 PortInterfaceType = 23 PortInterfaceType_PORT_INTERFACE_TYPE_LR8 PortInterfaceType = 24 - PortInterfaceType_PORT_INTERFACE_TYPE_MAX PortInterfaceType = 25 + PortInterfaceType_PORT_INTERFACE_TYPE_USXGMII PortInterfaceType = 25 + PortInterfaceType_PORT_INTERFACE_TYPE_MAX PortInterfaceType = 26 ) // Enum value maps for PortInterfaceType. @@ -6895,7 +7860,8 @@ var ( 22: "PORT_INTERFACE_TYPE_KR8", 23: "PORT_INTERFACE_TYPE_SR8", 24: "PORT_INTERFACE_TYPE_LR8", - 25: "PORT_INTERFACE_TYPE_MAX", + 25: "PORT_INTERFACE_TYPE_USXGMII", + 26: "PORT_INTERFACE_TYPE_MAX", } PortInterfaceType_value = map[string]int32{ "PORT_INTERFACE_TYPE_UNSPECIFIED": 0, @@ -6923,7 +7889,8 @@ var ( "PORT_INTERFACE_TYPE_KR8": 22, "PORT_INTERFACE_TYPE_SR8": 23, "PORT_INTERFACE_TYPE_LR8": 24, - "PORT_INTERFACE_TYPE_MAX": 25, + "PORT_INTERFACE_TYPE_USXGMII": 25, + "PORT_INTERFACE_TYPE_MAX": 26, } ) @@ -6938,11 +7905,11 @@ func (x PortInterfaceType) String() string { } func (PortInterfaceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[102].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[118].Descriptor() } func (PortInterfaceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[102] + return &file_dataplane_proto_sai_common_proto_enumTypes[118] } func (x PortInterfaceType) Number() protoreflect.EnumNumber { @@ -6951,7 +7918,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{102} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} } type PortInternalLoopbackMode int32 @@ -6990,11 +7957,11 @@ func (x PortInternalLoopbackMode) String() string { } func (PortInternalLoopbackMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[103].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[119].Descriptor() } func (PortInternalLoopbackMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[103] + return &file_dataplane_proto_sai_common_proto_enumTypes[119] } func (x PortInternalLoopbackMode) Number() protoreflect.EnumNumber { @@ -7003,7 +7970,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{103} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} } type PortLinkTrainingFailureStatus int32 @@ -7045,11 +8012,11 @@ func (x PortLinkTrainingFailureStatus) String() string { } func (PortLinkTrainingFailureStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[104].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[120].Descriptor() } func (PortLinkTrainingFailureStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[104] + return &file_dataplane_proto_sai_common_proto_enumTypes[120] } func (x PortLinkTrainingFailureStatus) Number() protoreflect.EnumNumber { @@ -7058,7 +8025,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{104} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} } type PortLinkTrainingRxStatus int32 @@ -7094,11 +8061,11 @@ func (x PortLinkTrainingRxStatus) String() string { } func (PortLinkTrainingRxStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[105].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[121].Descriptor() } func (PortLinkTrainingRxStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[105] + return &file_dataplane_proto_sai_common_proto_enumTypes[121] } func (x PortLinkTrainingRxStatus) Number() protoreflect.EnumNumber { @@ -7107,7 +8074,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{105} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} } type PortLoopbackMode int32 @@ -7118,6 +8085,7 @@ const ( PortLoopbackMode_PORT_LOOPBACK_MODE_PHY PortLoopbackMode = 2 PortLoopbackMode_PORT_LOOPBACK_MODE_MAC PortLoopbackMode = 3 PortLoopbackMode_PORT_LOOPBACK_MODE_PHY_REMOTE PortLoopbackMode = 4 + PortLoopbackMode_PORT_LOOPBACK_MODE_MAC_REMOTE PortLoopbackMode = 5 ) // Enum value maps for PortLoopbackMode. @@ -7128,6 +8096,7 @@ var ( 2: "PORT_LOOPBACK_MODE_PHY", 3: "PORT_LOOPBACK_MODE_MAC", 4: "PORT_LOOPBACK_MODE_PHY_REMOTE", + 5: "PORT_LOOPBACK_MODE_MAC_REMOTE", } PortLoopbackMode_value = map[string]int32{ "PORT_LOOPBACK_MODE_UNSPECIFIED": 0, @@ -7135,6 +8104,7 @@ var ( "PORT_LOOPBACK_MODE_PHY": 2, "PORT_LOOPBACK_MODE_MAC": 3, "PORT_LOOPBACK_MODE_PHY_REMOTE": 4, + "PORT_LOOPBACK_MODE_MAC_REMOTE": 5, } ) @@ -7149,11 +8119,11 @@ func (x PortLoopbackMode) String() string { } func (PortLoopbackMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[106].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[122].Descriptor() } func (PortLoopbackMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[106] + return &file_dataplane_proto_sai_common_proto_enumTypes[122] } func (x PortLoopbackMode) Number() protoreflect.EnumNumber { @@ -7162,7 +8132,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{106} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} } type PortMdixModeConfig int32 @@ -7201,11 +8171,11 @@ func (x PortMdixModeConfig) String() string { } func (PortMdixModeConfig) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[107].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[123].Descriptor() } func (PortMdixModeConfig) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[107] + return &file_dataplane_proto_sai_common_proto_enumTypes[123] } func (x PortMdixModeConfig) Number() protoreflect.EnumNumber { @@ -7214,7 +8184,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{107} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} } type PortMdixModeStatus int32 @@ -7250,11 +8220,11 @@ func (x PortMdixModeStatus) String() string { } func (PortMdixModeStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[108].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[124].Descriptor() } func (PortMdixModeStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[108] + return &file_dataplane_proto_sai_common_proto_enumTypes[124] } func (x PortMdixModeStatus) Number() protoreflect.EnumNumber { @@ -7263,7 +8233,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{108} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} } type PortMediaType int32 @@ -7308,11 +8278,11 @@ func (x PortMediaType) String() string { } func (PortMediaType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[109].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[125].Descriptor() } func (PortMediaType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[109] + return &file_dataplane_proto_sai_common_proto_enumTypes[125] } func (x PortMediaType) Number() protoreflect.EnumNumber { @@ -7321,7 +8291,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{109} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} } type PortModuleType int32 @@ -7360,11 +8330,11 @@ func (x PortModuleType) String() string { } func (PortModuleType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[110].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[126].Descriptor() } func (PortModuleType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[110] + return &file_dataplane_proto_sai_common_proto_enumTypes[126] } func (x PortModuleType) Number() protoreflect.EnumNumber { @@ -7373,7 +8343,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{110} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} } type PortOperStatus int32 @@ -7418,11 +8388,11 @@ func (x PortOperStatus) String() string { } func (PortOperStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[111].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[127].Descriptor() } func (PortOperStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[111] + return &file_dataplane_proto_sai_common_proto_enumTypes[127] } func (x PortOperStatus) Number() protoreflect.EnumNumber { @@ -7431,7 +8401,62 @@ 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{111} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} +} + +type PortPathTracingTimestampType int32 + +const ( + PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED PortPathTracingTimestampType = 0 + PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15 PortPathTracingTimestampType = 1 + PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19 PortPathTracingTimestampType = 2 + PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23 PortPathTracingTimestampType = 3 + PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27 PortPathTracingTimestampType = 4 +) + +// Enum value maps for PortPathTracingTimestampType. +var ( + PortPathTracingTimestampType_name = map[int32]string{ + 0: "PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED", + 1: "PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15", + 2: "PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19", + 3: "PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23", + 4: "PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27", + } + PortPathTracingTimestampType_value = map[string]int32{ + "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, + } +) + +func (x PortPathTracingTimestampType) Enum() *PortPathTracingTimestampType { + p := new(PortPathTracingTimestampType) + *p = x + return p +} + +func (x PortPathTracingTimestampType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortPathTracingTimestampType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[128].Descriptor() +} + +func (PortPathTracingTimestampType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[128] +} + +func (x PortPathTracingTimestampType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortPathTracingTimestampType.Descriptor instead. +func (PortPathTracingTimestampType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} } type PortPoolStat int32 @@ -7527,11 +8552,11 @@ func (x PortPoolStat) String() string { } func (PortPoolStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[112].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[129].Descriptor() } func (PortPoolStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[112] + return &file_dataplane_proto_sai_common_proto_enumTypes[129] } func (x PortPoolStat) Number() protoreflect.EnumNumber { @@ -7540,7 +8565,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{112} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} } type PortPrbsConfig int32 @@ -7582,11 +8607,11 @@ func (x PortPrbsConfig) String() string { } func (PortPrbsConfig) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[113].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[130].Descriptor() } func (PortPrbsConfig) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[113] + return &file_dataplane_proto_sai_common_proto_enumTypes[130] } func (x PortPrbsConfig) Number() protoreflect.EnumNumber { @@ -7595,7 +8620,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{113} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} } type PortPrbsRxStatus int32 @@ -7637,11 +8662,11 @@ func (x PortPrbsRxStatus) String() string { } func (PortPrbsRxStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[114].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[131].Descriptor() } func (PortPrbsRxStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[114] + return &file_dataplane_proto_sai_common_proto_enumTypes[131] } func (x PortPrbsRxStatus) Number() protoreflect.EnumNumber { @@ -7650,7 +8675,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{114} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} } type PortPriorityFlowControlMode int32 @@ -7686,11 +8711,11 @@ func (x PortPriorityFlowControlMode) String() string { } func (PortPriorityFlowControlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[115].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[132].Descriptor() } func (PortPriorityFlowControlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[115] + return &file_dataplane_proto_sai_common_proto_enumTypes[132] } func (x PortPriorityFlowControlMode) Number() protoreflect.EnumNumber { @@ -7699,7 +8724,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{115} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} } type PortPtpMode int32 @@ -7738,11 +8763,11 @@ func (x PortPtpMode) String() string { } func (PortPtpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[116].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[133].Descriptor() } func (PortPtpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[116] + return &file_dataplane_proto_sai_common_proto_enumTypes[133] } func (x PortPtpMode) Number() protoreflect.EnumNumber { @@ -7751,13 +8776,75 @@ 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{116} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} +} + +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 +) + +// 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", + } + 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, + } +) + +func (x PortStatExtensions) Enum() *PortStatExtensions { + p := new(PortStatExtensions) + *p = x + return p +} + +func (x PortStatExtensions) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortStatExtensions) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[134].Descriptor() +} + +func (PortStatExtensions) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[134] +} + +func (x PortStatExtensions) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortStatExtensions.Descriptor instead. +func (PortStatExtensions) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} } type PortStat int32 const ( PortStat_PORT_STAT_UNSPECIFIED PortStat = 0 + PortStat_PORT_STAT_START PortStat = 1 PortStat_PORT_STAT_IF_IN_OCTETS PortStat = 1 PortStat_PORT_STAT_IF_IN_UCAST_PKTS PortStat = 2 PortStat_PORT_STAT_IF_IN_NON_UCAST_PKTS PortStat = 3 @@ -7958,6 +9045,7 @@ const ( PortStat_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14 PortStat = 198 PortStat_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15 PortStat = 199 PortStat_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16 PortStat = 200 + PortStat_PORT_STAT_IF_IN_FEC_CORRECTED_BITS PortStat = 201 PortStat_PORT_STAT_IN_DROP_REASON_RANGE_BASE PortStat = 4097 PortStat_PORT_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS PortStat = 4097 PortStat_PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS PortStat = 4098 @@ -7978,13 +9066,15 @@ const ( 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_OUT_DROP_REASON_RANGE_END PortStat = 12288 + PortStat_PORT_STAT_END PortStat = 12289 ) // Enum value maps for PortStat. var ( PortStat_name = map[int32]string{ - 0: "PORT_STAT_UNSPECIFIED", - 1: "PORT_STAT_IF_IN_OCTETS", + 0: "PORT_STAT_UNSPECIFIED", + 1: "PORT_STAT_START", + // Duplicate value: 1: "PORT_STAT_IF_IN_OCTETS", 2: "PORT_STAT_IF_IN_UCAST_PKTS", 3: "PORT_STAT_IF_IN_NON_UCAST_PKTS", 4: "PORT_STAT_IF_IN_DISCARDS", @@ -8184,6 +9274,7 @@ var ( 198: "PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14", 199: "PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15", 200: "PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16", + 201: "PORT_STAT_IF_IN_FEC_CORRECTED_BITS", 4097: "PORT_STAT_IN_DROP_REASON_RANGE_BASE", // Duplicate value: 4097: "PORT_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS", 4098: "PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS", @@ -8204,9 +9295,11 @@ var ( 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", } PortStat_value = map[string]int32{ "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, @@ -8407,6 +9500,7 @@ var ( "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, @@ -8427,6 +9521,7 @@ var ( "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, } ) @@ -8441,11 +9536,11 @@ func (x PortStat) String() string { } func (PortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[117].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[135].Descriptor() } func (PortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[117] + return &file_dataplane_proto_sai_common_proto_enumTypes[135] } func (x PortStat) Number() protoreflect.EnumNumber { @@ -8454,7 +9549,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{117} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} } type PortType int32 @@ -8496,11 +9591,11 @@ func (x PortType) String() string { } func (PortType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[118].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[136].Descriptor() } func (PortType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[118] + return &file_dataplane_proto_sai_common_proto_enumTypes[136] } func (x PortType) Number() protoreflect.EnumNumber { @@ -8509,7 +9604,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{118} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} } type QosMapType int32 @@ -8587,11 +9682,11 @@ func (x QosMapType) String() string { } func (QosMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[119].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[137].Descriptor() } func (QosMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[119] + return &file_dataplane_proto_sai_common_proto_enumTypes[137] } func (x QosMapType) Number() protoreflect.EnumNumber { @@ -8600,7 +9695,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{119} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} } type QueuePfcContinuousDeadlockState int32 @@ -8639,11 +9734,11 @@ func (x QueuePfcContinuousDeadlockState) String() string { } func (QueuePfcContinuousDeadlockState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[120].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[138].Descriptor() } func (QueuePfcContinuousDeadlockState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[120] + return &file_dataplane_proto_sai_common_proto_enumTypes[138] } func (x QueuePfcContinuousDeadlockState) Number() protoreflect.EnumNumber { @@ -8652,7 +9747,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{120} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} } type QueuePfcDeadlockEventType int32 @@ -8688,11 +9783,11 @@ func (x QueuePfcDeadlockEventType) String() string { } func (QueuePfcDeadlockEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[121].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[139].Descriptor() } func (QueuePfcDeadlockEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[121] + return &file_dataplane_proto_sai_common_proto_enumTypes[139] } func (x QueuePfcDeadlockEventType) Number() protoreflect.EnumNumber { @@ -8701,7 +9796,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{121} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} } type QueueStat int32 @@ -8746,6 +9841,8 @@ const ( QueueStat_QUEUE_STAT_WRED_ECN_MARKED_BYTES QueueStat = 36 QueueStat_QUEUE_STAT_CURR_OCCUPANCY_LEVEL QueueStat = 37 QueueStat_QUEUE_STAT_WATERMARK_LEVEL QueueStat = 38 + QueueStat_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS QueueStat = 39 + QueueStat_QUEUE_STAT_DELAY_WATERMARK_NS QueueStat = 40 QueueStat_QUEUE_STAT_CUSTOM_RANGE_BASE QueueStat = 268435457 ) @@ -8791,6 +9888,8 @@ var ( 36: "QUEUE_STAT_WRED_ECN_MARKED_BYTES", 37: "QUEUE_STAT_CURR_OCCUPANCY_LEVEL", 38: "QUEUE_STAT_WATERMARK_LEVEL", + 39: "QUEUE_STAT_CREDIT_WD_DELETED_PACKETS", + 40: "QUEUE_STAT_DELAY_WATERMARK_NS", 268435457: "QUEUE_STAT_CUSTOM_RANGE_BASE", } QueueStat_value = map[string]int32{ @@ -8833,6 +9932,8 @@ var ( "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, } ) @@ -8848,11 +9949,11 @@ func (x QueueStat) String() string { } func (QueueStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[122].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[140].Descriptor() } func (QueueStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[122] + return &file_dataplane_proto_sai_common_proto_enumTypes[140] } func (x QueueStat) Number() protoreflect.EnumNumber { @@ -8861,7 +9962,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{122} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} } type QueueType int32 @@ -8912,11 +10013,11 @@ func (x QueueType) String() string { } func (QueueType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[123].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[141].Descriptor() } func (QueueType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[123] + return &file_dataplane_proto_sai_common_proto_enumTypes[141] } func (x QueueType) Number() protoreflect.EnumNumber { @@ -8925,7 +10026,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{123} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} } type RouterInterfaceStat int32 @@ -8979,11 +10080,11 @@ func (x RouterInterfaceStat) String() string { } func (RouterInterfaceStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[124].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[142].Descriptor() } func (RouterInterfaceStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[124] + return &file_dataplane_proto_sai_common_proto_enumTypes[142] } func (x RouterInterfaceStat) Number() protoreflect.EnumNumber { @@ -8992,7 +10093,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{124} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} } type RouterInterfaceType int32 @@ -9043,11 +10144,11 @@ func (x RouterInterfaceType) String() string { } func (RouterInterfaceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[125].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[143].Descriptor() } func (RouterInterfaceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[125] + return &file_dataplane_proto_sai_common_proto_enumTypes[143] } func (x RouterInterfaceType) Number() protoreflect.EnumNumber { @@ -9056,7 +10157,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{125} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} } type SamplepacketMode int32 @@ -9092,11 +10193,11 @@ func (x SamplepacketMode) String() string { } func (SamplepacketMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[126].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[144].Descriptor() } func (SamplepacketMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[126] + return &file_dataplane_proto_sai_common_proto_enumTypes[144] } func (x SamplepacketMode) Number() protoreflect.EnumNumber { @@ -9105,7 +10206,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{126} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} } type SamplepacketType int32 @@ -9141,11 +10242,11 @@ func (x SamplepacketType) String() string { } func (SamplepacketType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[127].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[145].Descriptor() } func (SamplepacketType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[127] + return &file_dataplane_proto_sai_common_proto_enumTypes[145] } func (x SamplepacketType) Number() protoreflect.EnumNumber { @@ -9154,7 +10255,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{127} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} } type SchedulingType int32 @@ -9193,11 +10294,11 @@ func (x SchedulingType) String() string { } func (SchedulingType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[128].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[146].Descriptor() } func (SchedulingType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[128] + return &file_dataplane_proto_sai_common_proto_enumTypes[146] } func (x SchedulingType) Number() protoreflect.EnumNumber { @@ -9206,7 +10307,56 @@ 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{128} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{146} +} + +type Srv6SidlistStat int32 + +const ( + Srv6SidlistStat_SRV6_SIDLIST_STAT_UNSPECIFIED Srv6SidlistStat = 0 + Srv6SidlistStat_SRV6_SIDLIST_STAT_OUT_PACKETS Srv6SidlistStat = 1 + Srv6SidlistStat_SRV6_SIDLIST_STAT_OUT_OCTETS Srv6SidlistStat = 2 +) + +// Enum value maps for Srv6SidlistStat. +var ( + Srv6SidlistStat_name = map[int32]string{ + 0: "SRV6_SIDLIST_STAT_UNSPECIFIED", + 1: "SRV6_SIDLIST_STAT_OUT_PACKETS", + 2: "SRV6_SIDLIST_STAT_OUT_OCTETS", + } + Srv6SidlistStat_value = map[string]int32{ + "SRV6_SIDLIST_STAT_UNSPECIFIED": 0, + "SRV6_SIDLIST_STAT_OUT_PACKETS": 1, + "SRV6_SIDLIST_STAT_OUT_OCTETS": 2, + } +) + +func (x Srv6SidlistStat) Enum() *Srv6SidlistStat { + p := new(Srv6SidlistStat) + *p = x + return p +} + +func (x Srv6SidlistStat) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Srv6SidlistStat) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[147].Descriptor() +} + +func (Srv6SidlistStat) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[147] +} + +func (x Srv6SidlistStat) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Srv6SidlistStat.Descriptor instead. +func (Srv6SidlistStat) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{147} } type Srv6SidlistType int32 @@ -9251,11 +10401,11 @@ func (x Srv6SidlistType) String() string { } func (Srv6SidlistType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[129].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[148].Descriptor() } func (Srv6SidlistType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[129] + return &file_dataplane_proto_sai_common_proto_enumTypes[148] } func (x Srv6SidlistType) Number() protoreflect.EnumNumber { @@ -9264,7 +10414,7 @@ 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{129} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{148} } type StatsMode int32 @@ -9309,11 +10459,11 @@ func (x StatsMode) String() string { } func (StatsMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[130].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[149].Descriptor() } func (StatsMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[130] + return &file_dataplane_proto_sai_common_proto_enumTypes[149] } func (x StatsMode) Number() protoreflect.EnumNumber { @@ -9322,7 +10472,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{130} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{149} } type StpPortState int32 @@ -9361,11 +10511,11 @@ func (x StpPortState) String() string { } func (StpPortState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[131].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[150].Descriptor() } func (StpPortState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[131] + return &file_dataplane_proto_sai_common_proto_enumTypes[150] } func (x StpPortState) Number() protoreflect.EnumNumber { @@ -9374,28 +10524,135 @@ 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{131} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{150} +} + +type SwitchAsicSdkHealthCategory int32 + +const ( + SwitchAsicSdkHealthCategory_SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED SwitchAsicSdkHealthCategory = 0 + SwitchAsicSdkHealthCategory_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW SwitchAsicSdkHealthCategory = 1 + SwitchAsicSdkHealthCategory_SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW SwitchAsicSdkHealthCategory = 2 + SwitchAsicSdkHealthCategory_SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW SwitchAsicSdkHealthCategory = 3 + SwitchAsicSdkHealthCategory_SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW SwitchAsicSdkHealthCategory = 4 +) + +// Enum value maps for SwitchAsicSdkHealthCategory. +var ( + SwitchAsicSdkHealthCategory_name = map[int32]string{ + 0: "SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED", + 1: "SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW", + 2: "SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW", + 3: "SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW", + 4: "SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW", + } + SwitchAsicSdkHealthCategory_value = map[string]int32{ + "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, + } +) + +func (x SwitchAsicSdkHealthCategory) Enum() *SwitchAsicSdkHealthCategory { + p := new(SwitchAsicSdkHealthCategory) + *p = x + return p +} + +func (x SwitchAsicSdkHealthCategory) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SwitchAsicSdkHealthCategory) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[151].Descriptor() +} + +func (SwitchAsicSdkHealthCategory) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[151] +} + +func (x SwitchAsicSdkHealthCategory) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SwitchAsicSdkHealthCategory.Descriptor instead. +func (SwitchAsicSdkHealthCategory) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{151} +} + +type SwitchAsicSdkHealthSeverity int32 + +const ( + SwitchAsicSdkHealthSeverity_SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED SwitchAsicSdkHealthSeverity = 0 + SwitchAsicSdkHealthSeverity_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL SwitchAsicSdkHealthSeverity = 1 + SwitchAsicSdkHealthSeverity_SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING SwitchAsicSdkHealthSeverity = 2 + SwitchAsicSdkHealthSeverity_SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE SwitchAsicSdkHealthSeverity = 3 +) + +// Enum value maps for SwitchAsicSdkHealthSeverity. +var ( + SwitchAsicSdkHealthSeverity_name = map[int32]string{ + 0: "SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED", + 1: "SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL", + 2: "SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING", + 3: "SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE", + } + SwitchAsicSdkHealthSeverity_value = map[string]int32{ + "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, + } +) + +func (x SwitchAsicSdkHealthSeverity) Enum() *SwitchAsicSdkHealthSeverity { + p := new(SwitchAsicSdkHealthSeverity) + *p = x + return p +} + +func (x SwitchAsicSdkHealthSeverity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SwitchAsicSdkHealthSeverity) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[152].Descriptor() +} + +func (SwitchAsicSdkHealthSeverity) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[152] +} + +func (x SwitchAsicSdkHealthSeverity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SwitchAsicSdkHealthSeverity.Descriptor instead. +func (SwitchAsicSdkHealthSeverity) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{152} } type SwitchAttrExtensions int32 const ( SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_UNSPECIFIED SwitchAttrExtensions = 0 - SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_START SwitchAttrExtensions = 212 - SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_END SwitchAttrExtensions = 213 + SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_START SwitchAttrExtensions = 233 + SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_END SwitchAttrExtensions = 234 ) // Enum value maps for SwitchAttrExtensions. var ( SwitchAttrExtensions_name = map[int32]string{ 0: "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED", - 212: "SWITCH_ATTR_EXTENSIONS_RANGE_START", - 213: "SWITCH_ATTR_EXTENSIONS_RANGE_END", + 233: "SWITCH_ATTR_EXTENSIONS_RANGE_START", + 234: "SWITCH_ATTR_EXTENSIONS_RANGE_END", } SwitchAttrExtensions_value = map[string]int32{ "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED": 0, - "SWITCH_ATTR_EXTENSIONS_RANGE_START": 212, - "SWITCH_ATTR_EXTENSIONS_RANGE_END": 213, + "SWITCH_ATTR_EXTENSIONS_RANGE_START": 233, + "SWITCH_ATTR_EXTENSIONS_RANGE_END": 234, } ) @@ -9410,11 +10667,11 @@ func (x SwitchAttrExtensions) String() string { } func (SwitchAttrExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[132].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[153].Descriptor() } func (SwitchAttrExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[132] + return &file_dataplane_proto_sai_common_proto_enumTypes[153] } func (x SwitchAttrExtensions) Number() protoreflect.EnumNumber { @@ -9423,7 +10680,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{132} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{153} } type SwitchFailoverConfigMode int32 @@ -9459,11 +10716,11 @@ func (x SwitchFailoverConfigMode) String() string { } func (SwitchFailoverConfigMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[133].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[154].Descriptor() } func (SwitchFailoverConfigMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[133] + return &file_dataplane_proto_sai_common_proto_enumTypes[154] } func (x SwitchFailoverConfigMode) Number() protoreflect.EnumNumber { @@ -9472,7 +10729,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{133} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{154} } type SwitchFirmwareLoadMethod int32 @@ -9511,11 +10768,11 @@ func (x SwitchFirmwareLoadMethod) String() string { } func (SwitchFirmwareLoadMethod) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[134].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[155].Descriptor() } func (SwitchFirmwareLoadMethod) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[134] + return &file_dataplane_proto_sai_common_proto_enumTypes[155] } func (x SwitchFirmwareLoadMethod) Number() protoreflect.EnumNumber { @@ -9524,7 +10781,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{134} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{155} } type SwitchFirmwareLoadType int32 @@ -9563,11 +10820,11 @@ func (x SwitchFirmwareLoadType) String() string { } func (SwitchFirmwareLoadType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[135].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[156].Descriptor() } func (SwitchFirmwareLoadType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[135] + return &file_dataplane_proto_sai_common_proto_enumTypes[156] } func (x SwitchFirmwareLoadType) Number() protoreflect.EnumNumber { @@ -9576,7 +10833,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{135} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{156} } type SwitchHardwareAccessBus int32 @@ -9615,11 +10872,11 @@ func (x SwitchHardwareAccessBus) String() string { } func (SwitchHardwareAccessBus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[136].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[157].Descriptor() } func (SwitchHardwareAccessBus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[136] + return &file_dataplane_proto_sai_common_proto_enumTypes[157] } func (x SwitchHardwareAccessBus) Number() protoreflect.EnumNumber { @@ -9628,7 +10885,56 @@ 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{136} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{157} +} + +type SwitchHostifOperStatusUpdateMode int32 + +const ( + SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED SwitchHostifOperStatusUpdateMode = 0 + SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION SwitchHostifOperStatusUpdateMode = 1 + SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER SwitchHostifOperStatusUpdateMode = 2 +) + +// Enum value maps for SwitchHostifOperStatusUpdateMode. +var ( + SwitchHostifOperStatusUpdateMode_name = map[int32]string{ + 0: "SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED", + 1: "SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION", + 2: "SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER", + } + SwitchHostifOperStatusUpdateMode_value = map[string]int32{ + "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, + } +) + +func (x SwitchHostifOperStatusUpdateMode) Enum() *SwitchHostifOperStatusUpdateMode { + p := new(SwitchHostifOperStatusUpdateMode) + *p = x + return p +} + +func (x SwitchHostifOperStatusUpdateMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SwitchHostifOperStatusUpdateMode) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[158].Descriptor() +} + +func (SwitchHostifOperStatusUpdateMode) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[158] +} + +func (x SwitchHostifOperStatusUpdateMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SwitchHostifOperStatusUpdateMode.Descriptor instead. +func (SwitchHostifOperStatusUpdateMode) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{158} } type SwitchMcastSnoopingCapability int32 @@ -9670,11 +10976,11 @@ func (x SwitchMcastSnoopingCapability) String() string { } func (SwitchMcastSnoopingCapability) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[137].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[159].Descriptor() } func (SwitchMcastSnoopingCapability) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[137] + return &file_dataplane_proto_sai_common_proto_enumTypes[159] } func (x SwitchMcastSnoopingCapability) Number() protoreflect.EnumNumber { @@ -9683,7 +10989,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{137} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{159} } type SwitchOperStatus int32 @@ -9725,11 +11031,11 @@ func (x SwitchOperStatus) String() string { } func (SwitchOperStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[138].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[160].Descriptor() } func (SwitchOperStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[138] + return &file_dataplane_proto_sai_common_proto_enumTypes[160] } func (x SwitchOperStatus) Number() protoreflect.EnumNumber { @@ -9738,7 +11044,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{138} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{160} } type SwitchRestartType int32 @@ -9777,11 +11083,11 @@ func (x SwitchRestartType) String() string { } func (SwitchRestartType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[139].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[161].Descriptor() } func (SwitchRestartType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[139] + return &file_dataplane_proto_sai_common_proto_enumTypes[161] } func (x SwitchRestartType) Number() protoreflect.EnumNumber { @@ -9790,7 +11096,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{139} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{161} } type SwitchStat int32 @@ -9822,6 +11128,7 @@ const ( SwitchStat_SWITCH_STAT_REACHABILITY_DROP SwitchStat = 12290 SwitchStat_SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL SwitchStat = 12291 SwitchStat_SWITCH_STAT_GLOBAL_DROP SwitchStat = 12292 + SwitchStat_SWITCH_STAT_PACKET_INTEGRITY_DROP SwitchStat = 12293 SwitchStat_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END SwitchStat = 16384 ) @@ -9854,6 +11161,7 @@ var ( 12290: "SWITCH_STAT_REACHABILITY_DROP", 12291: "SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL", 12292: "SWITCH_STAT_GLOBAL_DROP", + 12293: "SWITCH_STAT_PACKET_INTEGRITY_DROP", 16384: "SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END", } SwitchStat_value = map[string]int32{ @@ -9883,6 +11191,7 @@ var ( "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, } ) @@ -9898,11 +11207,11 @@ func (x SwitchStat) String() string { } func (SwitchStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[140].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[162].Descriptor() } func (SwitchStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[140] + return &file_dataplane_proto_sai_common_proto_enumTypes[162] } func (x SwitchStat) Number() protoreflect.EnumNumber { @@ -9911,7 +11220,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{140} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{162} } type SwitchSwitchingMode int32 @@ -9947,11 +11256,11 @@ func (x SwitchSwitchingMode) String() string { } func (SwitchSwitchingMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[141].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[163].Descriptor() } func (SwitchSwitchingMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[141] + return &file_dataplane_proto_sai_common_proto_enumTypes[163] } func (x SwitchSwitchingMode) Number() protoreflect.EnumNumber { @@ -9960,7 +11269,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{141} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{163} } type SwitchType int32 @@ -9971,6 +11280,7 @@ const ( SwitchType_SWITCH_TYPE_PHY SwitchType = 2 SwitchType_SWITCH_TYPE_VOQ SwitchType = 3 SwitchType_SWITCH_TYPE_FABRIC SwitchType = 4 + SwitchType_SWITCH_TYPE_POE SwitchType = 5 ) // Enum value maps for SwitchType. @@ -9981,6 +11291,7 @@ var ( 2: "SWITCH_TYPE_PHY", 3: "SWITCH_TYPE_VOQ", 4: "SWITCH_TYPE_FABRIC", + 5: "SWITCH_TYPE_POE", } SwitchType_value = map[string]int32{ "SWITCH_TYPE_UNSPECIFIED": 0, @@ -9988,6 +11299,7 @@ var ( "SWITCH_TYPE_PHY": 2, "SWITCH_TYPE_VOQ": 3, "SWITCH_TYPE_FABRIC": 4, + "SWITCH_TYPE_POE": 5, } ) @@ -10002,11 +11314,11 @@ func (x SwitchType) String() string { } func (SwitchType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[142].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[164].Descriptor() } func (SwitchType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[142] + return &file_dataplane_proto_sai_common_proto_enumTypes[164] } func (x SwitchType) Number() protoreflect.EnumNumber { @@ -10015,7 +11327,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{142} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{164} } type SystemPortType int32 @@ -10051,11 +11363,11 @@ func (x SystemPortType) String() string { } func (SystemPortType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[143].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[165].Descriptor() } func (SystemPortType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[143] + return &file_dataplane_proto_sai_common_proto_enumTypes[165] } func (x SystemPortType) Number() protoreflect.EnumNumber { @@ -10064,7 +11376,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{143} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{165} } type TableBitmapClassificationEntryAction int32 @@ -10100,11 +11412,11 @@ func (x TableBitmapClassificationEntryAction) String() string { } func (TableBitmapClassificationEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[144].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[166].Descriptor() } func (TableBitmapClassificationEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[144] + return &file_dataplane_proto_sai_common_proto_enumTypes[166] } func (x TableBitmapClassificationEntryAction) Number() protoreflect.EnumNumber { @@ -10113,7 +11425,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{144} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{166} } type TableBitmapClassificationEntryStat int32 @@ -10149,11 +11461,11 @@ func (x TableBitmapClassificationEntryStat) String() string { } func (TableBitmapClassificationEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[145].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[167].Descriptor() } func (TableBitmapClassificationEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[145] + return &file_dataplane_proto_sai_common_proto_enumTypes[167] } func (x TableBitmapClassificationEntryStat) Number() protoreflect.EnumNumber { @@ -10162,7 +11474,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{145} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{167} } type TableBitmapRouterEntryAction int32 @@ -10207,11 +11519,11 @@ func (x TableBitmapRouterEntryAction) String() string { } func (TableBitmapRouterEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[146].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[168].Descriptor() } func (TableBitmapRouterEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[146] + return &file_dataplane_proto_sai_common_proto_enumTypes[168] } func (x TableBitmapRouterEntryAction) Number() protoreflect.EnumNumber { @@ -10220,7 +11532,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{146} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{168} } type TableBitmapRouterEntryStat int32 @@ -10256,11 +11568,11 @@ func (x TableBitmapRouterEntryStat) String() string { } func (TableBitmapRouterEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[147].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[169].Descriptor() } func (TableBitmapRouterEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[147] + return &file_dataplane_proto_sai_common_proto_enumTypes[169] } func (x TableBitmapRouterEntryStat) Number() protoreflect.EnumNumber { @@ -10269,7 +11581,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{147} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{169} } type TableMetaTunnelEntryAction int32 @@ -10305,11 +11617,11 @@ func (x TableMetaTunnelEntryAction) String() string { } func (TableMetaTunnelEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[148].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[170].Descriptor() } func (TableMetaTunnelEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[148] + return &file_dataplane_proto_sai_common_proto_enumTypes[170] } func (x TableMetaTunnelEntryAction) Number() protoreflect.EnumNumber { @@ -10318,7 +11630,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{148} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{170} } type TableMetaTunnelEntryStat int32 @@ -10354,11 +11666,11 @@ func (x TableMetaTunnelEntryStat) String() string { } func (TableMetaTunnelEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[149].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[171].Descriptor() } func (TableMetaTunnelEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[149] + return &file_dataplane_proto_sai_common_proto_enumTypes[171] } func (x TableMetaTunnelEntryStat) Number() protoreflect.EnumNumber { @@ -10367,7 +11679,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{149} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{171} } type TamBindPointType int32 @@ -10418,11 +11730,11 @@ func (x TamBindPointType) String() string { } func (TamBindPointType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[150].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[172].Descriptor() } func (TamBindPointType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[150] + return &file_dataplane_proto_sai_common_proto_enumTypes[172] } func (x TamBindPointType) Number() protoreflect.EnumNumber { @@ -10431,7 +11743,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{150} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{172} } type TamEventThresholdUnit int32 @@ -10482,11 +11794,11 @@ func (x TamEventThresholdUnit) String() string { } func (TamEventThresholdUnit) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[151].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[173].Descriptor() } func (TamEventThresholdUnit) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[151] + return &file_dataplane_proto_sai_common_proto_enumTypes[173] } func (x TamEventThresholdUnit) Number() protoreflect.EnumNumber { @@ -10495,7 +11807,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{151} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{173} } type TamEventType int32 @@ -10555,11 +11867,11 @@ func (x TamEventType) String() string { } func (TamEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[152].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[174].Descriptor() } func (TamEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[152] + return &file_dataplane_proto_sai_common_proto_enumTypes[174] } func (x TamEventType) Number() protoreflect.EnumNumber { @@ -10568,7 +11880,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{152} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{174} } type TamIntPresenceType int32 @@ -10610,11 +11922,11 @@ func (x TamIntPresenceType) String() string { } func (TamIntPresenceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[153].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[175].Descriptor() } func (TamIntPresenceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[153] + return &file_dataplane_proto_sai_common_proto_enumTypes[175] } func (x TamIntPresenceType) Number() protoreflect.EnumNumber { @@ -10623,7 +11935,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{153} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{175} } type TamIntType int32 @@ -10637,6 +11949,7 @@ const ( TamIntType_TAM_INT_TYPE_P4_INT_2 TamIntType = 5 TamIntType_TAM_INT_TYPE_DIRECT_EXPORT TamIntType = 6 TamIntType_TAM_INT_TYPE_IFA1_TAILSTAMP TamIntType = 7 + TamIntType_TAM_INT_TYPE_PATH_TRACING TamIntType = 8 ) // Enum value maps for TamIntType. @@ -10650,6 +11963,7 @@ var ( 5: "TAM_INT_TYPE_P4_INT_2", 6: "TAM_INT_TYPE_DIRECT_EXPORT", 7: "TAM_INT_TYPE_IFA1_TAILSTAMP", + 8: "TAM_INT_TYPE_PATH_TRACING", } TamIntType_value = map[string]int32{ "TAM_INT_TYPE_UNSPECIFIED": 0, @@ -10660,6 +11974,7 @@ var ( "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, } ) @@ -10674,11 +11989,11 @@ func (x TamIntType) String() string { } func (TamIntType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[154].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[176].Descriptor() } func (TamIntType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[154] + return &file_dataplane_proto_sai_common_proto_enumTypes[176] } func (x TamIntType) Number() protoreflect.EnumNumber { @@ -10687,7 +12002,59 @@ 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{154} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{176} +} + +type TamReportIntervalUnit int32 + +const ( + TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED TamReportIntervalUnit = 0 + TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_NANOSEC TamReportIntervalUnit = 1 + TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_USEC TamReportIntervalUnit = 2 + TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_MSEC TamReportIntervalUnit = 3 +) + +// Enum value maps for TamReportIntervalUnit. +var ( + TamReportIntervalUnit_name = map[int32]string{ + 0: "TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED", + 1: "TAM_REPORT_INTERVAL_UNIT_NANOSEC", + 2: "TAM_REPORT_INTERVAL_UNIT_USEC", + 3: "TAM_REPORT_INTERVAL_UNIT_MSEC", + } + TamReportIntervalUnit_value = map[string]int32{ + "TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED": 0, + "TAM_REPORT_INTERVAL_UNIT_NANOSEC": 1, + "TAM_REPORT_INTERVAL_UNIT_USEC": 2, + "TAM_REPORT_INTERVAL_UNIT_MSEC": 3, + } +) + +func (x TamReportIntervalUnit) Enum() *TamReportIntervalUnit { + p := new(TamReportIntervalUnit) + *p = x + return p +} + +func (x TamReportIntervalUnit) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TamReportIntervalUnit) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[177].Descriptor() +} + +func (TamReportIntervalUnit) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[177] +} + +func (x TamReportIntervalUnit) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TamReportIntervalUnit.Descriptor instead. +func (TamReportIntervalUnit) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{177} } type TamReportMode int32 @@ -10723,11 +12090,11 @@ func (x TamReportMode) String() string { } func (TamReportMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[155].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[178].Descriptor() } func (TamReportMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[155] + return &file_dataplane_proto_sai_common_proto_enumTypes[178] } func (x TamReportMode) Number() protoreflect.EnumNumber { @@ -10736,46 +12103,52 @@ 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{155} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{178} } type TamReportType int32 const ( - TamReportType_TAM_REPORT_TYPE_UNSPECIFIED TamReportType = 0 - TamReportType_TAM_REPORT_TYPE_SFLOW TamReportType = 1 - TamReportType_TAM_REPORT_TYPE_IPFIX TamReportType = 2 - TamReportType_TAM_REPORT_TYPE_PROTO TamReportType = 3 - TamReportType_TAM_REPORT_TYPE_THRIFT TamReportType = 4 - TamReportType_TAM_REPORT_TYPE_JSON TamReportType = 5 - TamReportType_TAM_REPORT_TYPE_P4_EXTN TamReportType = 6 - TamReportType_TAM_REPORT_TYPE_HISTOGRAM TamReportType = 7 - TamReportType_TAM_REPORT_TYPE_VENDOR_EXTN TamReportType = 8 + TamReportType_TAM_REPORT_TYPE_UNSPECIFIED TamReportType = 0 + TamReportType_TAM_REPORT_TYPE_SFLOW TamReportType = 1 + TamReportType_TAM_REPORT_TYPE_IPFIX TamReportType = 2 + TamReportType_TAM_REPORT_TYPE_PROTO TamReportType = 3 + TamReportType_TAM_REPORT_TYPE_THRIFT TamReportType = 4 + TamReportType_TAM_REPORT_TYPE_JSON TamReportType = 5 + TamReportType_TAM_REPORT_TYPE_P4_EXTN TamReportType = 6 + TamReportType_TAM_REPORT_TYPE_HISTOGRAM TamReportType = 7 + TamReportType_TAM_REPORT_TYPE_VENDOR_EXTN TamReportType = 8 + TamReportType_TAM_REPORT_TYPE_GENETLINK TamReportType = 9 + TamReportType_TAM_REPORT_TYPE_CUSTOM_RANGE_BASE TamReportType = 268435457 ) // Enum value maps for TamReportType. var ( TamReportType_name = map[int32]string{ - 0: "TAM_REPORT_TYPE_UNSPECIFIED", - 1: "TAM_REPORT_TYPE_SFLOW", - 2: "TAM_REPORT_TYPE_IPFIX", - 3: "TAM_REPORT_TYPE_PROTO", - 4: "TAM_REPORT_TYPE_THRIFT", - 5: "TAM_REPORT_TYPE_JSON", - 6: "TAM_REPORT_TYPE_P4_EXTN", - 7: "TAM_REPORT_TYPE_HISTOGRAM", - 8: "TAM_REPORT_TYPE_VENDOR_EXTN", + 0: "TAM_REPORT_TYPE_UNSPECIFIED", + 1: "TAM_REPORT_TYPE_SFLOW", + 2: "TAM_REPORT_TYPE_IPFIX", + 3: "TAM_REPORT_TYPE_PROTO", + 4: "TAM_REPORT_TYPE_THRIFT", + 5: "TAM_REPORT_TYPE_JSON", + 6: "TAM_REPORT_TYPE_P4_EXTN", + 7: "TAM_REPORT_TYPE_HISTOGRAM", + 8: "TAM_REPORT_TYPE_VENDOR_EXTN", + 9: "TAM_REPORT_TYPE_GENETLINK", + 268435457: "TAM_REPORT_TYPE_CUSTOM_RANGE_BASE", } TamReportType_value = map[string]int32{ - "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_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, } ) @@ -10790,11 +12163,11 @@ func (x TamReportType) String() string { } func (TamReportType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[156].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[179].Descriptor() } func (TamReportType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[156] + return &file_dataplane_proto_sai_common_proto_enumTypes[179] } func (x TamReportType) Number() protoreflect.EnumNumber { @@ -10803,7 +12176,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{156} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{179} } type TamReportingUnit int32 @@ -10845,11 +12218,11 @@ func (x TamReportingUnit) String() string { } func (TamReportingUnit) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[157].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[180].Descriptor() } func (TamReportingUnit) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[157] + return &file_dataplane_proto_sai_common_proto_enumTypes[180] } func (x TamReportingUnit) Number() protoreflect.EnumNumber { @@ -10858,7 +12231,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{157} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{180} } type TamTelMathFuncType int32 @@ -10906,11 +12279,11 @@ func (x TamTelMathFuncType) String() string { } func (TamTelMathFuncType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[158].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[181].Descriptor() } func (TamTelMathFuncType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[158] + return &file_dataplane_proto_sai_common_proto_enumTypes[181] } func (x TamTelMathFuncType) Number() protoreflect.EnumNumber { @@ -10919,18 +12292,19 @@ 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{158} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{181} } type TamTelemetryType int32 const ( - TamTelemetryType_TAM_TELEMETRY_TYPE_UNSPECIFIED TamTelemetryType = 0 - TamTelemetryType_TAM_TELEMETRY_TYPE_NE TamTelemetryType = 1 - TamTelemetryType_TAM_TELEMETRY_TYPE_SWITCH TamTelemetryType = 2 - TamTelemetryType_TAM_TELEMETRY_TYPE_FABRIC TamTelemetryType = 3 - TamTelemetryType_TAM_TELEMETRY_TYPE_FLOW TamTelemetryType = 4 - TamTelemetryType_TAM_TELEMETRY_TYPE_INT TamTelemetryType = 5 + TamTelemetryType_TAM_TELEMETRY_TYPE_UNSPECIFIED TamTelemetryType = 0 + TamTelemetryType_TAM_TELEMETRY_TYPE_NE TamTelemetryType = 1 + TamTelemetryType_TAM_TELEMETRY_TYPE_SWITCH TamTelemetryType = 2 + TamTelemetryType_TAM_TELEMETRY_TYPE_FABRIC TamTelemetryType = 3 + TamTelemetryType_TAM_TELEMETRY_TYPE_FLOW TamTelemetryType = 4 + TamTelemetryType_TAM_TELEMETRY_TYPE_INT TamTelemetryType = 5 + TamTelemetryType_TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION TamTelemetryType = 6 ) // Enum value maps for TamTelemetryType. @@ -10942,14 +12316,16 @@ var ( 3: "TAM_TELEMETRY_TYPE_FABRIC", 4: "TAM_TELEMETRY_TYPE_FLOW", 5: "TAM_TELEMETRY_TYPE_INT", + 6: "TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION", } TamTelemetryType_value = map[string]int32{ - "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_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, } ) @@ -10964,11 +12340,11 @@ func (x TamTelemetryType) String() string { } func (TamTelemetryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[159].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[182].Descriptor() } func (TamTelemetryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[159] + return &file_dataplane_proto_sai_common_proto_enumTypes[182] } func (x TamTelemetryType) Number() protoreflect.EnumNumber { @@ -10977,7 +12353,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{159} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{182} } type TamTransportAuthType int32 @@ -11016,11 +12392,11 @@ func (x TamTransportAuthType) String() string { } func (TamTransportAuthType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[160].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[183].Descriptor() } func (TamTransportAuthType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[160] + return &file_dataplane_proto_sai_common_proto_enumTypes[183] } func (x TamTransportAuthType) Number() protoreflect.EnumNumber { @@ -11029,7 +12405,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{160} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{183} } type TamTransportType int32 @@ -11074,11 +12450,11 @@ func (x TamTransportType) String() string { } func (TamTransportType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[161].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[184].Descriptor() } func (TamTransportType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[161] + return &file_dataplane_proto_sai_common_proto_enumTypes[184] } func (x TamTransportType) Number() protoreflect.EnumNumber { @@ -11087,7 +12463,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{161} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{184} } type TlvType int32 @@ -11129,11 +12505,11 @@ func (x TlvType) String() string { } func (TlvType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[162].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[185].Descriptor() } func (TlvType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[162] + return &file_dataplane_proto_sai_common_proto_enumTypes[185] } func (x TlvType) Number() protoreflect.EnumNumber { @@ -11142,7 +12518,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{162} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{185} } type TunnelDecapEcnMode int32 @@ -11181,11 +12557,11 @@ func (x TunnelDecapEcnMode) String() string { } func (TunnelDecapEcnMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[163].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[186].Descriptor() } func (TunnelDecapEcnMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[163] + return &file_dataplane_proto_sai_common_proto_enumTypes[186] } func (x TunnelDecapEcnMode) Number() protoreflect.EnumNumber { @@ -11194,7 +12570,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{163} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{186} } type TunnelDscpMode int32 @@ -11230,11 +12606,11 @@ func (x TunnelDscpMode) String() string { } func (TunnelDscpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[164].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[187].Descriptor() } func (TunnelDscpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[164] + return &file_dataplane_proto_sai_common_proto_enumTypes[187] } func (x TunnelDscpMode) Number() protoreflect.EnumNumber { @@ -11243,7 +12619,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{164} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{187} } type TunnelEncapEcnMode int32 @@ -11279,11 +12655,11 @@ func (x TunnelEncapEcnMode) String() string { } func (TunnelEncapEcnMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[165].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[188].Descriptor() } func (TunnelEncapEcnMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[165] + return &file_dataplane_proto_sai_common_proto_enumTypes[188] } func (x TunnelEncapEcnMode) Number() protoreflect.EnumNumber { @@ -11292,26 +12668,28 @@ 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{165} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{188} } type TunnelMapType int32 const ( - TunnelMapType_TUNNEL_MAP_TYPE_UNSPECIFIED TunnelMapType = 0 - TunnelMapType_TUNNEL_MAP_TYPE_OECN_TO_UECN TunnelMapType = 1 - TunnelMapType_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN TunnelMapType = 2 - TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID TunnelMapType = 3 - TunnelMapType_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI TunnelMapType = 4 - TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF TunnelMapType = 5 - TunnelMapType_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI TunnelMapType = 6 - TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID TunnelMapType = 7 - TunnelMapType_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI TunnelMapType = 8 - TunnelMapType_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID TunnelMapType = 9 - TunnelMapType_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID TunnelMapType = 10 - TunnelMapType_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF TunnelMapType = 11 - TunnelMapType_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID TunnelMapType = 12 - TunnelMapType_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE TunnelMapType = 268435457 + TunnelMapType_TUNNEL_MAP_TYPE_UNSPECIFIED TunnelMapType = 0 + TunnelMapType_TUNNEL_MAP_TYPE_OECN_TO_UECN TunnelMapType = 1 + TunnelMapType_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN TunnelMapType = 2 + TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID TunnelMapType = 3 + TunnelMapType_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI TunnelMapType = 4 + TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF TunnelMapType = 5 + TunnelMapType_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI TunnelMapType = 6 + TunnelMapType_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID TunnelMapType = 7 + TunnelMapType_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI TunnelMapType = 8 + TunnelMapType_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID TunnelMapType = 9 + TunnelMapType_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID TunnelMapType = 10 + TunnelMapType_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF TunnelMapType = 11 + TunnelMapType_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID TunnelMapType = 12 + TunnelMapType_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID TunnelMapType = 13 + TunnelMapType_TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID TunnelMapType = 14 + TunnelMapType_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE TunnelMapType = 268435457 ) // Enum value maps for TunnelMapType. @@ -11330,23 +12708,27 @@ var ( 10: "TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID", 11: "TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF", 12: "TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID", + 13: "TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID", + 14: "TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID", 268435457: "TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE", } TunnelMapType_value = map[string]int32{ - "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_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, } ) @@ -11361,11 +12743,11 @@ func (x TunnelMapType) String() string { } func (TunnelMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[166].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[189].Descriptor() } func (TunnelMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[166] + return &file_dataplane_proto_sai_common_proto_enumTypes[189] } func (x TunnelMapType) Number() protoreflect.EnumNumber { @@ -11374,7 +12756,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{166} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{189} } type TunnelPeerMode int32 @@ -11410,11 +12792,11 @@ func (x TunnelPeerMode) String() string { } func (TunnelPeerMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[167].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[190].Descriptor() } func (TunnelPeerMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[167] + return &file_dataplane_proto_sai_common_proto_enumTypes[190] } func (x TunnelPeerMode) Number() protoreflect.EnumNumber { @@ -11423,7 +12805,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{167} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{190} } type TunnelStat int32 @@ -11465,11 +12847,11 @@ func (x TunnelStat) String() string { } func (TunnelStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[168].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[191].Descriptor() } func (TunnelStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[168] + return &file_dataplane_proto_sai_common_proto_enumTypes[191] } func (x TunnelStat) Number() protoreflect.EnumNumber { @@ -11478,7 +12860,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{168} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{191} } type TunnelTermTableEntryType int32 @@ -11520,11 +12902,11 @@ func (x TunnelTermTableEntryType) String() string { } func (TunnelTermTableEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[169].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[192].Descriptor() } func (TunnelTermTableEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[169] + return &file_dataplane_proto_sai_common_proto_enumTypes[192] } func (x TunnelTermTableEntryType) Number() protoreflect.EnumNumber { @@ -11533,7 +12915,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{169} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{192} } type TunnelTtlMode int32 @@ -11569,11 +12951,11 @@ func (x TunnelTtlMode) String() string { } func (TunnelTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[170].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[193].Descriptor() } func (TunnelTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[170] + return &file_dataplane_proto_sai_common_proto_enumTypes[193] } func (x TunnelTtlMode) Number() protoreflect.EnumNumber { @@ -11582,7 +12964,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{170} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{193} } type TunnelType int32 @@ -11639,11 +13021,11 @@ func (x TunnelType) String() string { } func (TunnelType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[171].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[194].Descriptor() } func (TunnelType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[171] + return &file_dataplane_proto_sai_common_proto_enumTypes[194] } func (x TunnelType) Number() protoreflect.EnumNumber { @@ -11652,7 +13034,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{171} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{194} } type TunnelVxlanUdpSportMode int32 @@ -11688,11 +13070,11 @@ func (x TunnelVxlanUdpSportMode) String() string { } func (TunnelVxlanUdpSportMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[172].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[195].Descriptor() } func (TunnelVxlanUdpSportMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[172] + return &file_dataplane_proto_sai_common_proto_enumTypes[195] } func (x TunnelVxlanUdpSportMode) Number() protoreflect.EnumNumber { @@ -11701,7 +13083,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{172} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{195} } type UdfBase int32 @@ -11740,11 +13122,11 @@ func (x UdfBase) String() string { } func (UdfBase) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[173].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[196].Descriptor() } func (UdfBase) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[173] + return &file_dataplane_proto_sai_common_proto_enumTypes[196] } func (x UdfBase) Number() protoreflect.EnumNumber { @@ -11753,7 +13135,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{173} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{196} } type UdfGroupType int32 @@ -11795,11 +13177,11 @@ func (x UdfGroupType) String() string { } func (UdfGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[174].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[197].Descriptor() } func (UdfGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[174] + return &file_dataplane_proto_sai_common_proto_enumTypes[197] } func (x UdfGroupType) Number() protoreflect.EnumNumber { @@ -11808,7 +13190,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{174} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{197} } type VlanFloodControlType int32 @@ -11850,11 +13232,11 @@ func (x VlanFloodControlType) String() string { } func (VlanFloodControlType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[175].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[198].Descriptor() } func (VlanFloodControlType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[175] + return &file_dataplane_proto_sai_common_proto_enumTypes[198] } func (x VlanFloodControlType) Number() protoreflect.EnumNumber { @@ -11863,7 +13245,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{175} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{198} } type VlanMcastLookupKeyType int32 @@ -11905,11 +13287,11 @@ func (x VlanMcastLookupKeyType) String() string { } func (VlanMcastLookupKeyType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[176].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[199].Descriptor() } func (VlanMcastLookupKeyType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[176] + return &file_dataplane_proto_sai_common_proto_enumTypes[199] } func (x VlanMcastLookupKeyType) Number() protoreflect.EnumNumber { @@ -11918,7 +13300,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{176} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{199} } type VlanStat int32 @@ -11990,11 +13372,11 @@ func (x VlanStat) String() string { } func (VlanStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[177].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[200].Descriptor() } func (VlanStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[177] + return &file_dataplane_proto_sai_common_proto_enumTypes[200] } func (x VlanStat) Number() protoreflect.EnumNumber { @@ -12003,7 +13385,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{177} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{200} } type VlanTaggingMode int32 @@ -12042,11 +13424,11 @@ func (x VlanTaggingMode) String() string { } func (VlanTaggingMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[178].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[201].Descriptor() } func (VlanTaggingMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[178] + return &file_dataplane_proto_sai_common_proto_enumTypes[201] } func (x VlanTaggingMode) Number() protoreflect.EnumNumber { @@ -12055,7 +13437,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{178} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{201} } type AclActionData struct { @@ -15079,59 +16461,68 @@ type AclEntryAttribute struct { FieldIpv6NextHeader *AclFieldData `protobuf:"bytes,93,opt,name=field_ipv6_next_header,json=fieldIpv6NextHeader,proto3,oneof" json:"field_ipv6_next_header,omitempty"` FieldGreKey *AclFieldData `protobuf:"bytes,94,opt,name=field_gre_key,json=fieldGreKey,proto3,oneof" json:"field_gre_key,omitempty"` FieldTamIntType *AclFieldData `protobuf:"bytes,95,opt,name=field_tam_int_type,json=fieldTamIntType,proto3,oneof" json:"field_tam_int_type,omitempty"` - ActionRedirect *AclActionData `protobuf:"bytes,96,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` - ActionEndpointIp *AclActionData `protobuf:"bytes,97,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` - ActionRedirectList *AclActionData `protobuf:"bytes,98,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` - ActionPacketAction *AclActionData `protobuf:"bytes,99,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` - ActionFlood *AclActionData `protobuf:"bytes,100,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` - ActionCounter *AclActionData `protobuf:"bytes,101,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` - ActionMirrorIngress *AclActionData `protobuf:"bytes,102,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` - ActionMirrorEgress *AclActionData `protobuf:"bytes,103,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` - ActionSetPolicer *AclActionData `protobuf:"bytes,104,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` - ActionDecrementTtl *AclActionData `protobuf:"bytes,105,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` - ActionSetTc *AclActionData `protobuf:"bytes,106,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` - ActionSetPacketColor *AclActionData `protobuf:"bytes,107,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` - ActionSetInnerVlanId *AclActionData `protobuf:"bytes,108,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` - ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,109,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` - ActionSetOuterVlanId *AclActionData `protobuf:"bytes,110,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` - ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,111,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` - ActionAddVlanId *AclActionData `protobuf:"bytes,112,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` - ActionAddVlanPri *AclActionData `protobuf:"bytes,113,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` - ActionSetSrcMac *AclActionData `protobuf:"bytes,114,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` - ActionSetDstMac *AclActionData `protobuf:"bytes,115,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` - ActionSetSrcIp *AclActionData `protobuf:"bytes,116,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` - ActionSetDstIp *AclActionData `protobuf:"bytes,117,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` - ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,118,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` - ActionSetDstIpv6 *AclActionData `protobuf:"bytes,119,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` - ActionSetDscp *AclActionData `protobuf:"bytes,120,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` - ActionSetEcn *AclActionData `protobuf:"bytes,121,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` - ActionSetL4SrcPort *AclActionData `protobuf:"bytes,122,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` - ActionSetL4DstPort *AclActionData `protobuf:"bytes,123,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` - ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,124,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` - ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,125,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` - ActionSetAclMetaData *AclActionData `protobuf:"bytes,126,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` - ActionEgressBlockPortList *AclActionData `protobuf:"bytes,127,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` - ActionSetUserTrapId *AclActionData `protobuf:"bytes,128,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` - ActionSetDoNotLearn *AclActionData `protobuf:"bytes,129,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` - ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,130,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` - ActionDtelIntSession *AclActionData `protobuf:"bytes,131,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` - ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,132,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` - ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,133,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` - ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,134,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` - ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,135,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` - ActionNoNat *AclActionData `protobuf:"bytes,136,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` - ActionIntInsert *AclActionData `protobuf:"bytes,137,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` - ActionIntDelete *AclActionData `protobuf:"bytes,138,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` - ActionIntReportFlow *AclActionData `protobuf:"bytes,139,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` - ActionIntReportDrops *AclActionData `protobuf:"bytes,140,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` - ActionIntReportTailDrops *AclActionData `protobuf:"bytes,141,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` - ActionTamIntObject *AclActionData `protobuf:"bytes,142,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` - ActionSetIsolationGroup *AclActionData `protobuf:"bytes,143,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` - ActionMacsecFlow *AclActionData `protobuf:"bytes,144,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` - ActionSetLagHashId *AclActionData `protobuf:"bytes,145,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` - ActionSetEcmpHashId *AclActionData `protobuf:"bytes,146,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` - ActionSetVrf *AclActionData `protobuf:"bytes,147,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` - ActionSetForwardingClass *AclActionData `protobuf:"bytes,148,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + FieldInnerSrcMac *AclFieldData `protobuf:"bytes,96,opt,name=field_inner_src_mac,json=fieldInnerSrcMac,proto3,oneof" json:"field_inner_src_mac,omitempty"` + FieldInnerDstMac *AclFieldData `protobuf:"bytes,97,opt,name=field_inner_dst_mac,json=fieldInnerDstMac,proto3,oneof" json:"field_inner_dst_mac,omitempty"` + FieldVrfId *AclFieldData `protobuf:"bytes,98,opt,name=field_vrf_id,json=fieldVrfId,proto3,oneof" json:"field_vrf_id,omitempty"` + FieldIpmcNpuMetaDstHit *AclFieldData `protobuf:"bytes,99,opt,name=field_ipmc_npu_meta_dst_hit,json=fieldIpmcNpuMetaDstHit,proto3,oneof" json:"field_ipmc_npu_meta_dst_hit,omitempty"` + FieldTunnelTerminated *AclFieldData `protobuf:"bytes,100,opt,name=field_tunnel_terminated,json=fieldTunnelTerminated,proto3,oneof" json:"field_tunnel_terminated,omitempty"` + ActionRedirect *AclActionData `protobuf:"bytes,101,opt,name=action_redirect,json=actionRedirect,proto3,oneof" json:"action_redirect,omitempty"` + ActionEndpointIp *AclActionData `protobuf:"bytes,102,opt,name=action_endpoint_ip,json=actionEndpointIp,proto3,oneof" json:"action_endpoint_ip,omitempty"` + ActionRedirectList *AclActionData `protobuf:"bytes,103,opt,name=action_redirect_list,json=actionRedirectList,proto3,oneof" json:"action_redirect_list,omitempty"` + ActionPacketAction *AclActionData `protobuf:"bytes,104,opt,name=action_packet_action,json=actionPacketAction,proto3,oneof" json:"action_packet_action,omitempty"` + ActionFlood *AclActionData `protobuf:"bytes,105,opt,name=action_flood,json=actionFlood,proto3,oneof" json:"action_flood,omitempty"` + ActionCounter *AclActionData `protobuf:"bytes,106,opt,name=action_counter,json=actionCounter,proto3,oneof" json:"action_counter,omitempty"` + ActionMirrorIngress *AclActionData `protobuf:"bytes,107,opt,name=action_mirror_ingress,json=actionMirrorIngress,proto3,oneof" json:"action_mirror_ingress,omitempty"` + ActionMirrorEgress *AclActionData `protobuf:"bytes,108,opt,name=action_mirror_egress,json=actionMirrorEgress,proto3,oneof" json:"action_mirror_egress,omitempty"` + ActionSetPolicer *AclActionData `protobuf:"bytes,109,opt,name=action_set_policer,json=actionSetPolicer,proto3,oneof" json:"action_set_policer,omitempty"` + ActionDecrementTtl *AclActionData `protobuf:"bytes,110,opt,name=action_decrement_ttl,json=actionDecrementTtl,proto3,oneof" json:"action_decrement_ttl,omitempty"` + ActionSetTc *AclActionData `protobuf:"bytes,111,opt,name=action_set_tc,json=actionSetTc,proto3,oneof" json:"action_set_tc,omitempty"` + ActionSetPacketColor *AclActionData `protobuf:"bytes,112,opt,name=action_set_packet_color,json=actionSetPacketColor,proto3,oneof" json:"action_set_packet_color,omitempty"` + ActionSetInnerVlanId *AclActionData `protobuf:"bytes,113,opt,name=action_set_inner_vlan_id,json=actionSetInnerVlanId,proto3,oneof" json:"action_set_inner_vlan_id,omitempty"` + ActionSetInnerVlanPri *AclActionData `protobuf:"bytes,114,opt,name=action_set_inner_vlan_pri,json=actionSetInnerVlanPri,proto3,oneof" json:"action_set_inner_vlan_pri,omitempty"` + ActionSetOuterVlanId *AclActionData `protobuf:"bytes,115,opt,name=action_set_outer_vlan_id,json=actionSetOuterVlanId,proto3,oneof" json:"action_set_outer_vlan_id,omitempty"` + ActionSetOuterVlanPri *AclActionData `protobuf:"bytes,116,opt,name=action_set_outer_vlan_pri,json=actionSetOuterVlanPri,proto3,oneof" json:"action_set_outer_vlan_pri,omitempty"` + ActionAddVlanId *AclActionData `protobuf:"bytes,117,opt,name=action_add_vlan_id,json=actionAddVlanId,proto3,oneof" json:"action_add_vlan_id,omitempty"` + ActionAddVlanPri *AclActionData `protobuf:"bytes,118,opt,name=action_add_vlan_pri,json=actionAddVlanPri,proto3,oneof" json:"action_add_vlan_pri,omitempty"` + ActionSetSrcMac *AclActionData `protobuf:"bytes,119,opt,name=action_set_src_mac,json=actionSetSrcMac,proto3,oneof" json:"action_set_src_mac,omitempty"` + ActionSetDstMac *AclActionData `protobuf:"bytes,120,opt,name=action_set_dst_mac,json=actionSetDstMac,proto3,oneof" json:"action_set_dst_mac,omitempty"` + ActionSetSrcIp *AclActionData `protobuf:"bytes,121,opt,name=action_set_src_ip,json=actionSetSrcIp,proto3,oneof" json:"action_set_src_ip,omitempty"` + ActionSetDstIp *AclActionData `protobuf:"bytes,122,opt,name=action_set_dst_ip,json=actionSetDstIp,proto3,oneof" json:"action_set_dst_ip,omitempty"` + ActionSetSrcIpv6 *AclActionData `protobuf:"bytes,123,opt,name=action_set_src_ipv6,json=actionSetSrcIpv6,proto3,oneof" json:"action_set_src_ipv6,omitempty"` + ActionSetDstIpv6 *AclActionData `protobuf:"bytes,124,opt,name=action_set_dst_ipv6,json=actionSetDstIpv6,proto3,oneof" json:"action_set_dst_ipv6,omitempty"` + ActionSetDscp *AclActionData `protobuf:"bytes,125,opt,name=action_set_dscp,json=actionSetDscp,proto3,oneof" json:"action_set_dscp,omitempty"` + ActionSetEcn *AclActionData `protobuf:"bytes,126,opt,name=action_set_ecn,json=actionSetEcn,proto3,oneof" json:"action_set_ecn,omitempty"` + ActionSetL4SrcPort *AclActionData `protobuf:"bytes,127,opt,name=action_set_l4_src_port,json=actionSetL4SrcPort,proto3,oneof" json:"action_set_l4_src_port,omitempty"` + ActionSetL4DstPort *AclActionData `protobuf:"bytes,128,opt,name=action_set_l4_dst_port,json=actionSetL4DstPort,proto3,oneof" json:"action_set_l4_dst_port,omitempty"` + ActionIngressSamplepacketEnable *AclActionData `protobuf:"bytes,129,opt,name=action_ingress_samplepacket_enable,json=actionIngressSamplepacketEnable,proto3,oneof" json:"action_ingress_samplepacket_enable,omitempty"` + ActionEgressSamplepacketEnable *AclActionData `protobuf:"bytes,130,opt,name=action_egress_samplepacket_enable,json=actionEgressSamplepacketEnable,proto3,oneof" json:"action_egress_samplepacket_enable,omitempty"` + ActionSetAclMetaData *AclActionData `protobuf:"bytes,131,opt,name=action_set_acl_meta_data,json=actionSetAclMetaData,proto3,oneof" json:"action_set_acl_meta_data,omitempty"` + ActionEgressBlockPortList *AclActionData `protobuf:"bytes,132,opt,name=action_egress_block_port_list,json=actionEgressBlockPortList,proto3,oneof" json:"action_egress_block_port_list,omitempty"` + ActionSetUserTrapId *AclActionData `protobuf:"bytes,133,opt,name=action_set_user_trap_id,json=actionSetUserTrapId,proto3,oneof" json:"action_set_user_trap_id,omitempty"` + ActionSetDoNotLearn *AclActionData `protobuf:"bytes,134,opt,name=action_set_do_not_learn,json=actionSetDoNotLearn,proto3,oneof" json:"action_set_do_not_learn,omitempty"` + ActionAclDtelFlowOp *AclActionData `protobuf:"bytes,135,opt,name=action_acl_dtel_flow_op,json=actionAclDtelFlowOp,proto3,oneof" json:"action_acl_dtel_flow_op,omitempty"` + ActionDtelIntSession *AclActionData `protobuf:"bytes,136,opt,name=action_dtel_int_session,json=actionDtelIntSession,proto3,oneof" json:"action_dtel_int_session,omitempty"` + ActionDtelDropReportEnable *AclActionData `protobuf:"bytes,137,opt,name=action_dtel_drop_report_enable,json=actionDtelDropReportEnable,proto3,oneof" json:"action_dtel_drop_report_enable,omitempty"` + ActionDtelTailDropReportEnable *AclActionData `protobuf:"bytes,138,opt,name=action_dtel_tail_drop_report_enable,json=actionDtelTailDropReportEnable,proto3,oneof" json:"action_dtel_tail_drop_report_enable,omitempty"` + ActionDtelFlowSamplePercent *AclActionData `protobuf:"bytes,139,opt,name=action_dtel_flow_sample_percent,json=actionDtelFlowSamplePercent,proto3,oneof" json:"action_dtel_flow_sample_percent,omitempty"` + ActionDtelReportAllPackets *AclActionData `protobuf:"bytes,140,opt,name=action_dtel_report_all_packets,json=actionDtelReportAllPackets,proto3,oneof" json:"action_dtel_report_all_packets,omitempty"` + ActionNoNat *AclActionData `protobuf:"bytes,141,opt,name=action_no_nat,json=actionNoNat,proto3,oneof" json:"action_no_nat,omitempty"` + ActionIntInsert *AclActionData `protobuf:"bytes,142,opt,name=action_int_insert,json=actionIntInsert,proto3,oneof" json:"action_int_insert,omitempty"` + ActionIntDelete *AclActionData `protobuf:"bytes,143,opt,name=action_int_delete,json=actionIntDelete,proto3,oneof" json:"action_int_delete,omitempty"` + ActionIntReportFlow *AclActionData `protobuf:"bytes,144,opt,name=action_int_report_flow,json=actionIntReportFlow,proto3,oneof" json:"action_int_report_flow,omitempty"` + ActionIntReportDrops *AclActionData `protobuf:"bytes,145,opt,name=action_int_report_drops,json=actionIntReportDrops,proto3,oneof" json:"action_int_report_drops,omitempty"` + ActionIntReportTailDrops *AclActionData `protobuf:"bytes,146,opt,name=action_int_report_tail_drops,json=actionIntReportTailDrops,proto3,oneof" json:"action_int_report_tail_drops,omitempty"` + ActionTamIntObject *AclActionData `protobuf:"bytes,147,opt,name=action_tam_int_object,json=actionTamIntObject,proto3,oneof" json:"action_tam_int_object,omitempty"` + ActionSetIsolationGroup *AclActionData `protobuf:"bytes,148,opt,name=action_set_isolation_group,json=actionSetIsolationGroup,proto3,oneof" json:"action_set_isolation_group,omitempty"` + ActionMacsecFlow *AclActionData `protobuf:"bytes,149,opt,name=action_macsec_flow,json=actionMacsecFlow,proto3,oneof" json:"action_macsec_flow,omitempty"` + ActionSetLagHashId *AclActionData `protobuf:"bytes,150,opt,name=action_set_lag_hash_id,json=actionSetLagHashId,proto3,oneof" json:"action_set_lag_hash_id,omitempty"` + ActionSetEcmpHashId *AclActionData `protobuf:"bytes,151,opt,name=action_set_ecmp_hash_id,json=actionSetEcmpHashId,proto3,oneof" json:"action_set_ecmp_hash_id,omitempty"` + ActionSetVrf *AclActionData `protobuf:"bytes,152,opt,name=action_set_vrf,json=actionSetVrf,proto3,oneof" json:"action_set_vrf,omitempty"` + ActionSetForwardingClass *AclActionData `protobuf:"bytes,153,opt,name=action_set_forwarding_class,json=actionSetForwardingClass,proto3,oneof" json:"action_set_forwarding_class,omitempty"` + ActionSetArsMonitoring *AclActionData `protobuf:"bytes,154,opt,name=action_set_ars_monitoring,json=actionSetArsMonitoring,proto3,oneof" json:"action_set_ars_monitoring,omitempty"` + ActionSetArsObject *AclActionData `protobuf:"bytes,155,opt,name=action_set_ars_object,json=actionSetArsObject,proto3,oneof" json:"action_set_ars_object,omitempty"` + ActionDisableArsForwarding *AclActionData `protobuf:"bytes,156,opt,name=action_disable_ars_forwarding,json=actionDisableArsForwarding,proto3,oneof" json:"action_disable_ars_forwarding,omitempty"` + ActionChainRedirect *AclActionData `protobuf:"bytes,157,opt,name=action_chain_redirect,json=actionChainRedirect,proto3,oneof" json:"action_chain_redirect,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -15831,6 +17222,41 @@ func (x *AclEntryAttribute) GetFieldTamIntType() *AclFieldData { return nil } +func (x *AclEntryAttribute) GetFieldInnerSrcMac() *AclFieldData { + if x != nil { + return x.FieldInnerSrcMac + } + return nil +} + +func (x *AclEntryAttribute) GetFieldInnerDstMac() *AclFieldData { + if x != nil { + return x.FieldInnerDstMac + } + return nil +} + +func (x *AclEntryAttribute) GetFieldVrfId() *AclFieldData { + if x != nil { + return x.FieldVrfId + } + return nil +} + +func (x *AclEntryAttribute) GetFieldIpmcNpuMetaDstHit() *AclFieldData { + if x != nil { + return x.FieldIpmcNpuMetaDstHit + } + return nil +} + +func (x *AclEntryAttribute) GetFieldTunnelTerminated() *AclFieldData { + if x != nil { + return x.FieldTunnelTerminated + } + return nil +} + func (x *AclEntryAttribute) GetActionRedirect() *AclActionData { if x != nil { return x.ActionRedirect @@ -16202,6 +17628,34 @@ func (x *AclEntryAttribute) GetActionSetForwardingClass() *AclActionData { return nil } +func (x *AclEntryAttribute) GetActionSetArsMonitoring() *AclActionData { + if x != nil { + return x.ActionSetArsMonitoring + } + return nil +} + +func (x *AclEntryAttribute) GetActionSetArsObject() *AclActionData { + if x != nil { + return x.ActionSetArsObject + } + return nil +} + +func (x *AclEntryAttribute) GetActionDisableArsForwarding() *AclActionData { + if x != nil { + return x.ActionDisableArsForwarding + } + return nil +} + +func (x *AclEntryAttribute) GetActionChainRedirect() *AclActionData { + if x != nil { + return x.ActionChainRedirect + } + return nil +} + type AclRangeAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *AclRangeType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.AclRangeType,oneof" json:"type,omitempty"` @@ -16352,9 +17806,17 @@ type AclTableAttribute struct { FieldIpv6NextHeader *bool `protobuf:"varint,94,opt,name=field_ipv6_next_header,json=fieldIpv6NextHeader,proto3,oneof" json:"field_ipv6_next_header,omitempty"` FieldGreKey *bool `protobuf:"varint,95,opt,name=field_gre_key,json=fieldGreKey,proto3,oneof" json:"field_gre_key,omitempty"` FieldTamIntType *bool `protobuf:"varint,96,opt,name=field_tam_int_type,json=fieldTamIntType,proto3,oneof" json:"field_tam_int_type,omitempty"` - EntryList []uint64 `protobuf:"varint,97,rep,packed,name=entry_list,json=entryList,proto3" json:"entry_list,omitempty"` - AvailableAclEntry *uint32 `protobuf:"varint,98,opt,name=available_acl_entry,json=availableAclEntry,proto3,oneof" json:"available_acl_entry,omitempty"` - AvailableAclCounter *uint32 `protobuf:"varint,99,opt,name=available_acl_counter,json=availableAclCounter,proto3,oneof" json:"available_acl_counter,omitempty"` + FieldInnerSrcMac *bool `protobuf:"varint,97,opt,name=field_inner_src_mac,json=fieldInnerSrcMac,proto3,oneof" json:"field_inner_src_mac,omitempty"` + FieldInnerDstMac *bool `protobuf:"varint,98,opt,name=field_inner_dst_mac,json=fieldInnerDstMac,proto3,oneof" json:"field_inner_dst_mac,omitempty"` + FieldVrfId *bool `protobuf:"varint,99,opt,name=field_vrf_id,json=fieldVrfId,proto3,oneof" json:"field_vrf_id,omitempty"` + FieldIpmcNpuMetaDstHit *bool `protobuf:"varint,100,opt,name=field_ipmc_npu_meta_dst_hit,json=fieldIpmcNpuMetaDstHit,proto3,oneof" json:"field_ipmc_npu_meta_dst_hit,omitempty"` + FieldTunnelTerminated *bool `protobuf:"varint,101,opt,name=field_tunnel_terminated,json=fieldTunnelTerminated,proto3,oneof" json:"field_tunnel_terminated,omitempty"` + EntryList []uint64 `protobuf:"varint,102,rep,packed,name=entry_list,json=entryList,proto3" json:"entry_list,omitempty"` + AvailableAclEntry *uint32 `protobuf:"varint,103,opt,name=available_acl_entry,json=availableAclEntry,proto3,oneof" json:"available_acl_entry,omitempty"` + AvailableAclCounter *uint32 `protobuf:"varint,104,opt,name=available_acl_counter,json=availableAclCounter,proto3,oneof" json:"available_acl_counter,omitempty"` + AclTableMatchType *AclTableMatchType `protobuf:"varint,105,opt,name=acl_table_match_type,json=aclTableMatchType,proto3,enum=lemming.dataplane.sai.AclTableMatchType,oneof" json:"acl_table_match_type,omitempty"` + FieldValidBitsSrcIpv6 *AclFieldData `protobuf:"bytes,106,opt,name=field_valid_bits_src_ipv6,json=fieldValidBitsSrcIpv6,proto3,oneof" json:"field_valid_bits_src_ipv6,omitempty"` + FieldValidBitsDstIpv6 *AclFieldData `protobuf:"bytes,107,opt,name=field_valid_bits_dst_ipv6,json=fieldValidBitsDstIpv6,proto3,oneof" json:"field_valid_bits_dst_ipv6,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -17061,6 +18523,41 @@ func (x *AclTableAttribute) GetFieldTamIntType() bool { return false } +func (x *AclTableAttribute) GetFieldInnerSrcMac() bool { + if x != nil && x.FieldInnerSrcMac != nil { + return *x.FieldInnerSrcMac + } + return false +} + +func (x *AclTableAttribute) GetFieldInnerDstMac() bool { + if x != nil && x.FieldInnerDstMac != nil { + return *x.FieldInnerDstMac + } + return false +} + +func (x *AclTableAttribute) GetFieldVrfId() bool { + if x != nil && x.FieldVrfId != nil { + return *x.FieldVrfId + } + return false +} + +func (x *AclTableAttribute) GetFieldIpmcNpuMetaDstHit() bool { + if x != nil && x.FieldIpmcNpuMetaDstHit != nil { + return *x.FieldIpmcNpuMetaDstHit + } + return false +} + +func (x *AclTableAttribute) GetFieldTunnelTerminated() bool { + if x != nil && x.FieldTunnelTerminated != nil { + return *x.FieldTunnelTerminated + } + return false +} + func (x *AclTableAttribute) GetEntryList() []uint64 { if x != nil { return x.EntryList @@ -17082,19 +18579,93 @@ func (x *AclTableAttribute) GetAvailableAclCounter() uint32 { return 0 } +func (x *AclTableAttribute) GetAclTableMatchType() AclTableMatchType { + if x != nil && x.AclTableMatchType != nil { + return *x.AclTableMatchType + } + return AclTableMatchType_ACL_TABLE_MATCH_TYPE_UNSPECIFIED +} + +func (x *AclTableAttribute) GetFieldValidBitsSrcIpv6() *AclFieldData { + if x != nil { + return x.FieldValidBitsSrcIpv6 + } + return nil +} + +func (x *AclTableAttribute) GetFieldValidBitsDstIpv6() *AclFieldData { + if x != nil { + return x.FieldValidBitsDstIpv6 + } + return nil +} + +type AclTableChainGroupAttribute struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type *AclTableChainGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.AclTableChainGroupType,oneof" json:"type,omitempty"` + Stage *AclTableChainGroupStage `protobuf:"varint,2,opt,name=stage,proto3,enum=lemming.dataplane.sai.AclTableChainGroupStage,oneof" json:"stage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AclTableChainGroupAttribute) Reset() { + *x = AclTableChainGroupAttribute{} + mi := &file_dataplane_proto_sai_common_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AclTableChainGroupAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AclTableChainGroupAttribute) ProtoMessage() {} + +func (x *AclTableChainGroupAttribute) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_common_proto_msgTypes[43] + 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 AclTableChainGroupAttribute.ProtoReflect.Descriptor instead. +func (*AclTableChainGroupAttribute) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{43} +} + +func (x *AclTableChainGroupAttribute) GetType() AclTableChainGroupType { + if x != nil && x.Type != nil { + return *x.Type + } + return AclTableChainGroupType_ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED +} + +func (x *AclTableChainGroupAttribute) GetStage() AclTableChainGroupStage { + if x != nil && x.Stage != nil { + return *x.Stage + } + return AclTableChainGroupStage_ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED +} + type AclTableGroupAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` AclStage *AclStage `protobuf:"varint,1,opt,name=acl_stage,json=aclStage,proto3,enum=lemming.dataplane.sai.AclStage,oneof" json:"acl_stage,omitempty"` AclBindPointTypeList []AclBindPointType `protobuf:"varint,2,rep,packed,name=acl_bind_point_type_list,json=aclBindPointTypeList,proto3,enum=lemming.dataplane.sai.AclBindPointType" json:"acl_bind_point_type_list,omitempty"` Type *AclTableGroupType `protobuf:"varint,3,opt,name=type,proto3,enum=lemming.dataplane.sai.AclTableGroupType,oneof" json:"type,omitempty"` MemberList []uint64 `protobuf:"varint,4,rep,packed,name=member_list,json=memberList,proto3" json:"member_list,omitempty"` + ChainGroupList []uint64 `protobuf:"varint,5,rep,packed,name=chain_group_list,json=chainGroupList,proto3" json:"chain_group_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AclTableGroupAttribute) Reset() { *x = AclTableGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[43] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17106,7 +18677,7 @@ func (x *AclTableGroupAttribute) String() string { func (*AclTableGroupAttribute) ProtoMessage() {} func (x *AclTableGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[43] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17119,7 +18690,7 @@ func (x *AclTableGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use AclTableGroupAttribute.ProtoReflect.Descriptor instead. func (*AclTableGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{43} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{44} } func (x *AclTableGroupAttribute) GetAclStage() AclStage { @@ -17150,18 +18721,26 @@ func (x *AclTableGroupAttribute) GetMemberList() []uint64 { return nil } +func (x *AclTableGroupAttribute) GetChainGroupList() []uint64 { + if x != nil { + return x.ChainGroupList + } + return nil +} + type AclTableGroupMemberAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - AclTableGroupId *uint64 `protobuf:"varint,1,opt,name=acl_table_group_id,json=aclTableGroupId,proto3,oneof" json:"acl_table_group_id,omitempty"` - AclTableId *uint64 `protobuf:"varint,2,opt,name=acl_table_id,json=aclTableId,proto3,oneof" json:"acl_table_id,omitempty"` - Priority *uint32 `protobuf:"varint,3,opt,name=priority,proto3,oneof" json:"priority,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AclTableGroupId *uint64 `protobuf:"varint,1,opt,name=acl_table_group_id,json=aclTableGroupId,proto3,oneof" json:"acl_table_group_id,omitempty"` + AclTableId *uint64 `protobuf:"varint,2,opt,name=acl_table_id,json=aclTableId,proto3,oneof" json:"acl_table_id,omitempty"` + Priority *uint32 `protobuf:"varint,3,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + AclTableChainGroupId *uint64 `protobuf:"varint,4,opt,name=acl_table_chain_group_id,json=aclTableChainGroupId,proto3,oneof" json:"acl_table_chain_group_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AclTableGroupMemberAttribute) Reset() { *x = AclTableGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[44] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17173,7 +18752,7 @@ func (x *AclTableGroupMemberAttribute) String() string { func (*AclTableGroupMemberAttribute) ProtoMessage() {} func (x *AclTableGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[44] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17186,7 +18765,7 @@ func (x *AclTableGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use AclTableGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*AclTableGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{44} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{45} } func (x *AclTableGroupMemberAttribute) GetAclTableGroupId() uint64 { @@ -17210,6 +18789,13 @@ func (x *AclTableGroupMemberAttribute) GetPriority() uint32 { return 0 } +func (x *AclTableGroupMemberAttribute) GetAclTableChainGroupId() uint64 { + if x != nil && x.AclTableChainGroupId != nil { + return *x.AclTableChainGroupId + } + return 0 +} + type BfdSessionAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *BfdSessionType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.BfdSessionType,oneof" json:"type,omitempty"` @@ -17252,13 +18838,14 @@ type BfdSessionAttribute struct { LocalDiag *uint32 `protobuf:"varint,38,opt,name=local_diag,json=localDiag,proto3,oneof" json:"local_diag,omitempty"` 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *BfdSessionAttribute) Reset() { *x = BfdSessionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[45] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17270,7 +18857,7 @@ func (x *BfdSessionAttribute) String() string { func (*BfdSessionAttribute) ProtoMessage() {} func (x *BfdSessionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[45] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17283,7 +18870,7 @@ func (x *BfdSessionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use BfdSessionAttribute.ProtoReflect.Descriptor instead. func (*BfdSessionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{45} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{46} } func (x *BfdSessionAttribute) GetType() BfdSessionType { @@ -17566,6 +19153,13 @@ func (x *BfdSessionAttribute) GetRemoteMultiplier() uint32 { return 0 } +func (x *BfdSessionAttribute) GetSrv6SidlistId() uint64 { + if x != nil && x.Srv6SidlistId != nil { + return *x.Srv6SidlistId + } + return 0 +} + 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"` @@ -17584,7 +19178,7 @@ type BridgeAttribute struct { func (x *BridgeAttribute) Reset() { *x = BridgeAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[46] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17596,7 +19190,7 @@ func (x *BridgeAttribute) String() string { func (*BridgeAttribute) ProtoMessage() {} func (x *BridgeAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[46] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17609,7 +19203,7 @@ func (x *BridgeAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use BridgeAttribute.ProtoReflect.Descriptor instead. func (*BridgeAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{46} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{47} } func (x *BridgeAttribute) GetType() BridgeType { @@ -17704,7 +19298,7 @@ type BridgePortAttribute struct { func (x *BridgePortAttribute) Reset() { *x = BridgePortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[47] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17716,7 +19310,7 @@ func (x *BridgePortAttribute) String() string { func (*BridgePortAttribute) ProtoMessage() {} func (x *BridgePortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[47] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17729,7 +19323,7 @@ func (x *BridgePortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use BridgePortAttribute.ProtoReflect.Descriptor instead. func (*BridgePortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{47} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{48} } func (x *BridgePortAttribute) GetType() BridgePortType { @@ -17845,7 +19439,7 @@ type BufferPoolAttribute struct { func (x *BufferPoolAttribute) Reset() { *x = BufferPoolAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[48] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17857,7 +19451,7 @@ func (x *BufferPoolAttribute) String() string { func (*BufferPoolAttribute) ProtoMessage() {} func (x *BufferPoolAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[48] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17870,7 +19464,7 @@ func (x *BufferPoolAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use BufferPoolAttribute.ProtoReflect.Descriptor instead. func (*BufferPoolAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{48} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{49} } func (x *BufferPoolAttribute) GetSharedSize() uint64 { @@ -17938,7 +19532,7 @@ type BufferProfileAttribute struct { func (x *BufferProfileAttribute) Reset() { *x = BufferProfileAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[49] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17950,7 +19544,7 @@ func (x *BufferProfileAttribute) String() string { func (*BufferProfileAttribute) ProtoMessage() {} func (x *BufferProfileAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[49] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17963,7 +19557,7 @@ func (x *BufferProfileAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use BufferProfileAttribute.ProtoReflect.Descriptor instead. func (*BufferProfileAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{49} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{50} } func (x *BufferProfileAttribute) GetPoolId() uint64 { @@ -18032,7 +19626,7 @@ type CounterAttribute struct { func (x *CounterAttribute) Reset() { *x = CounterAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[50] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18044,7 +19638,7 @@ func (x *CounterAttribute) String() string { func (*CounterAttribute) ProtoMessage() {} func (x *CounterAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[50] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18057,7 +19651,7 @@ func (x *CounterAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use CounterAttribute.ProtoReflect.Descriptor instead. func (*CounterAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{50} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{51} } func (x *CounterAttribute) GetType() CounterType { @@ -18087,7 +19681,7 @@ type DebugCounterAttribute struct { func (x *DebugCounterAttribute) Reset() { *x = DebugCounterAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[51] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18099,7 +19693,7 @@ func (x *DebugCounterAttribute) String() string { func (*DebugCounterAttribute) ProtoMessage() {} func (x *DebugCounterAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[51] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18112,7 +19706,7 @@ func (x *DebugCounterAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DebugCounterAttribute.ProtoReflect.Descriptor instead. func (*DebugCounterAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{51} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{52} } func (x *DebugCounterAttribute) GetIndex() uint32 { @@ -18168,7 +19762,7 @@ type DtelAttribute struct { func (x *DtelAttribute) Reset() { *x = DtelAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[52] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18180,7 +19774,7 @@ func (x *DtelAttribute) String() string { func (*DtelAttribute) ProtoMessage() {} func (x *DtelAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[52] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18193,7 +19787,7 @@ func (x *DtelAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DtelAttribute.ProtoReflect.Descriptor instead. func (*DtelAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{52} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{53} } func (x *DtelAttribute) GetIntEndpointEnable() bool { @@ -18277,7 +19871,7 @@ type DtelEventAttribute struct { func (x *DtelEventAttribute) Reset() { *x = DtelEventAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[53] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18289,7 +19883,7 @@ func (x *DtelEventAttribute) String() string { func (*DtelEventAttribute) ProtoMessage() {} func (x *DtelEventAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[53] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18302,7 +19896,7 @@ func (x *DtelEventAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DtelEventAttribute.ProtoReflect.Descriptor instead. func (*DtelEventAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{53} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{54} } func (x *DtelEventAttribute) GetType() DtelEventType { @@ -18340,7 +19934,7 @@ type DtelIntSessionAttribute struct { func (x *DtelIntSessionAttribute) Reset() { *x = DtelIntSessionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[54] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18352,7 +19946,7 @@ func (x *DtelIntSessionAttribute) String() string { func (*DtelIntSessionAttribute) ProtoMessage() {} func (x *DtelIntSessionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[54] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18365,7 +19959,7 @@ func (x *DtelIntSessionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DtelIntSessionAttribute.ProtoReflect.Descriptor instead. func (*DtelIntSessionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{54} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{55} } func (x *DtelIntSessionAttribute) GetMaxHopCount() uint32 { @@ -18423,7 +20017,7 @@ type DtelQueueReportAttribute struct { func (x *DtelQueueReportAttribute) Reset() { *x = DtelQueueReportAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[55] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18435,7 +20029,7 @@ func (x *DtelQueueReportAttribute) String() string { func (*DtelQueueReportAttribute) ProtoMessage() {} func (x *DtelQueueReportAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[55] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18448,7 +20042,7 @@ func (x *DtelQueueReportAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DtelQueueReportAttribute.ProtoReflect.Descriptor instead. func (*DtelQueueReportAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{55} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{56} } func (x *DtelQueueReportAttribute) GetQueueId() uint64 { @@ -18499,7 +20093,7 @@ type DtelReportSessionAttribute struct { func (x *DtelReportSessionAttribute) Reset() { *x = DtelReportSessionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[56] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18511,7 +20105,7 @@ func (x *DtelReportSessionAttribute) String() string { func (*DtelReportSessionAttribute) ProtoMessage() {} func (x *DtelReportSessionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[56] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18524,7 +20118,7 @@ func (x *DtelReportSessionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use DtelReportSessionAttribute.ProtoReflect.Descriptor instead. func (*DtelReportSessionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{56} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{57} } func (x *DtelReportSessionAttribute) GetSrcIp() []byte { @@ -18578,7 +20172,7 @@ type FdbEntryAttribute struct { func (x *FdbEntryAttribute) Reset() { *x = FdbEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[57] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18590,7 +20184,7 @@ func (x *FdbEntryAttribute) String() string { func (*FdbEntryAttribute) ProtoMessage() {} func (x *FdbEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[57] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18603,7 +20197,7 @@ func (x *FdbEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use FdbEntryAttribute.ProtoReflect.Descriptor instead. func (*FdbEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{57} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{58} } func (x *FdbEntryAttribute) GetType() FdbEntryType { @@ -18673,7 +20267,7 @@ type FdbFlushAttribute struct { func (x *FdbFlushAttribute) Reset() { *x = FdbFlushAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[58] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18685,7 +20279,7 @@ func (x *FdbFlushAttribute) String() string { func (*FdbFlushAttribute) ProtoMessage() {} func (x *FdbFlushAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[58] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18698,7 +20292,7 @@ func (x *FdbFlushAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use FdbFlushAttribute.ProtoReflect.Descriptor instead. func (*FdbFlushAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{58} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{59} } func (x *FdbFlushAttribute) GetBridgePortId() uint64 { @@ -18734,7 +20328,7 @@ type FineGrainedHashFieldAttribute struct { func (x *FineGrainedHashFieldAttribute) Reset() { *x = FineGrainedHashFieldAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[59] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18746,7 +20340,7 @@ func (x *FineGrainedHashFieldAttribute) String() string { func (*FineGrainedHashFieldAttribute) ProtoMessage() {} func (x *FineGrainedHashFieldAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[59] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18759,7 +20353,7 @@ func (x *FineGrainedHashFieldAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use FineGrainedHashFieldAttribute.ProtoReflect.Descriptor instead. func (*FineGrainedHashFieldAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{59} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{60} } func (x *FineGrainedHashFieldAttribute) GetNativeHashField() NativeHashField { @@ -18801,7 +20395,7 @@ type GenericProgrammableAttribute struct { func (x *GenericProgrammableAttribute) Reset() { *x = GenericProgrammableAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[60] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18813,7 +20407,7 @@ func (x *GenericProgrammableAttribute) String() string { func (*GenericProgrammableAttribute) ProtoMessage() {} func (x *GenericProgrammableAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[60] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18826,7 +20420,7 @@ func (x *GenericProgrammableAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use GenericProgrammableAttribute.ProtoReflect.Descriptor instead. func (*GenericProgrammableAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{60} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{61} } func (x *GenericProgrammableAttribute) GetObjectName() []int32 { @@ -18861,7 +20455,7 @@ type HashAttribute struct { func (x *HashAttribute) Reset() { *x = HashAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[61] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18873,7 +20467,7 @@ func (x *HashAttribute) String() string { func (*HashAttribute) ProtoMessage() {} func (x *HashAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[61] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18886,7 +20480,7 @@ func (x *HashAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HashAttribute.ProtoReflect.Descriptor instead. func (*HashAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{61} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{62} } func (x *HashAttribute) GetNativeHashFieldList() []NativeHashField { @@ -18925,7 +20519,7 @@ type HostifAttribute struct { func (x *HostifAttribute) Reset() { *x = HostifAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[62] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18937,7 +20531,7 @@ func (x *HostifAttribute) String() string { func (*HostifAttribute) ProtoMessage() {} func (x *HostifAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[62] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18950,7 +20544,7 @@ func (x *HostifAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifAttribute.ProtoReflect.Descriptor instead. func (*HostifAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{62} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{63} } func (x *HostifAttribute) GetType() HostifType { @@ -19019,7 +20613,7 @@ type HostifPacketAttribute struct { func (x *HostifPacketAttribute) Reset() { *x = HostifPacketAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[63] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19031,7 +20625,7 @@ func (x *HostifPacketAttribute) String() string { func (*HostifPacketAttribute) ProtoMessage() {} func (x *HostifPacketAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[63] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19044,7 +20638,7 @@ func (x *HostifPacketAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifPacketAttribute.ProtoReflect.Descriptor instead. func (*HostifPacketAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{63} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{64} } func (x *HostifPacketAttribute) GetHostifTrapId() uint64 { @@ -19123,7 +20717,7 @@ type HostifTableEntryAttribute struct { func (x *HostifTableEntryAttribute) Reset() { *x = HostifTableEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[64] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19135,7 +20729,7 @@ func (x *HostifTableEntryAttribute) String() string { func (*HostifTableEntryAttribute) ProtoMessage() {} func (x *HostifTableEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[64] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19148,7 +20742,7 @@ func (x *HostifTableEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifTableEntryAttribute.ProtoReflect.Descriptor instead. func (*HostifTableEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{64} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{65} } func (x *HostifTableEntryAttribute) GetType() HostifTableEntryType { @@ -19201,7 +20795,7 @@ type HostifTrapAttribute struct { func (x *HostifTrapAttribute) Reset() { *x = HostifTrapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[65] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19213,7 +20807,7 @@ func (x *HostifTrapAttribute) String() string { func (*HostifTrapAttribute) ProtoMessage() {} func (x *HostifTrapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[65] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19226,7 +20820,7 @@ func (x *HostifTrapAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifTrapAttribute.ProtoReflect.Descriptor instead. func (*HostifTrapAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{65} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{66} } func (x *HostifTrapAttribute) GetTrapType() HostifTrapType { @@ -19290,7 +20884,7 @@ type HostifTrapGroupAttribute struct { func (x *HostifTrapGroupAttribute) Reset() { *x = HostifTrapGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[66] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19302,7 +20896,7 @@ func (x *HostifTrapGroupAttribute) String() string { func (*HostifTrapGroupAttribute) ProtoMessage() {} func (x *HostifTrapGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[66] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19315,7 +20909,7 @@ func (x *HostifTrapGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifTrapGroupAttribute.ProtoReflect.Descriptor instead. func (*HostifTrapGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{66} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{67} } func (x *HostifTrapGroupAttribute) GetAdminState() bool { @@ -19357,7 +20951,7 @@ type HostifUserDefinedTrapAttribute struct { func (x *HostifUserDefinedTrapAttribute) Reset() { *x = HostifUserDefinedTrapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[67] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19369,7 +20963,7 @@ func (x *HostifUserDefinedTrapAttribute) String() string { func (*HostifUserDefinedTrapAttribute) ProtoMessage() {} func (x *HostifUserDefinedTrapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[67] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19382,7 +20976,7 @@ func (x *HostifUserDefinedTrapAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use HostifUserDefinedTrapAttribute.ProtoReflect.Descriptor instead. func (*HostifUserDefinedTrapAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{67} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{68} } func (x *HostifUserDefinedTrapAttribute) GetType() HostifUserDefinedTrapType { @@ -19418,7 +21012,7 @@ type IngressPriorityGroupAttribute struct { func (x *IngressPriorityGroupAttribute) Reset() { *x = IngressPriorityGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[68] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19430,7 +21024,7 @@ func (x *IngressPriorityGroupAttribute) String() string { func (*IngressPriorityGroupAttribute) ProtoMessage() {} func (x *IngressPriorityGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[68] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19443,7 +21037,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{68} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} } func (x *IngressPriorityGroupAttribute) GetBufferProfile() uint64 { @@ -19493,7 +21087,7 @@ type InsegEntryAttribute struct { func (x *InsegEntryAttribute) Reset() { *x = InsegEntryAttribute{} - 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) } @@ -19505,7 +21099,7 @@ func (x *InsegEntryAttribute) String() string { func (*InsegEntryAttribute) ProtoMessage() {} func (x *InsegEntryAttribute) 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 { @@ -19518,7 +21112,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{69} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} } func (x *InsegEntryAttribute) GetNumOfPop() uint32 { @@ -19610,7 +21204,7 @@ type IpmcEntryAttribute struct { func (x *IpmcEntryAttribute) Reset() { *x = IpmcEntryAttribute{} - 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) } @@ -19622,7 +21216,7 @@ func (x *IpmcEntryAttribute) String() string { func (*IpmcEntryAttribute) ProtoMessage() {} func (x *IpmcEntryAttribute) 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 { @@ -19635,7 +21229,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{70} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} } func (x *IpmcEntryAttribute) GetPacketAction() PacketAction { @@ -19676,7 +21270,7 @@ type IpmcGroupAttribute struct { func (x *IpmcGroupAttribute) Reset() { *x = IpmcGroupAttribute{} - 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) } @@ -19688,7 +21282,7 @@ func (x *IpmcGroupAttribute) String() string { func (*IpmcGroupAttribute) ProtoMessage() {} func (x *IpmcGroupAttribute) 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 { @@ -19701,7 +21295,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{71} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} } func (x *IpmcGroupAttribute) GetIpmcOutputCount() uint32 { @@ -19728,7 +21322,7 @@ type IpmcGroupMemberAttribute struct { func (x *IpmcGroupMemberAttribute) Reset() { *x = IpmcGroupMemberAttribute{} - 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) } @@ -19740,7 +21334,7 @@ func (x *IpmcGroupMemberAttribute) String() string { func (*IpmcGroupMemberAttribute) ProtoMessage() {} func (x *IpmcGroupMemberAttribute) 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 { @@ -19753,7 +21347,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{72} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} } func (x *IpmcGroupMemberAttribute) GetIpmcGroupId() uint64 { @@ -19798,7 +21392,7 @@ type IpsecAttribute struct { func (x *IpsecAttribute) Reset() { *x = IpsecAttribute{} - 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) } @@ -19810,7 +21404,7 @@ func (x *IpsecAttribute) String() string { func (*IpsecAttribute) ProtoMessage() {} func (x *IpsecAttribute) 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 { @@ -19823,7 +21417,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{73} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} } func (x *IpsecAttribute) GetTermRemoteIpMatchSupported() bool { @@ -19980,7 +21574,7 @@ type IpsecPortAttribute struct { func (x *IpsecPortAttribute) Reset() { *x = IpsecPortAttribute{} - 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) } @@ -19992,7 +21586,7 @@ func (x *IpsecPortAttribute) String() string { func (*IpsecPortAttribute) ProtoMessage() {} func (x *IpsecPortAttribute) 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 { @@ -20005,7 +21599,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{74} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} } func (x *IpsecPortAttribute) GetPortId() uint64 { @@ -20079,7 +21673,7 @@ type IpsecSaAttribute struct { func (x *IpsecSaAttribute) Reset() { *x = IpsecSaAttribute{} - 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) } @@ -20091,7 +21685,7 @@ func (x *IpsecSaAttribute) String() string { func (*IpsecSaAttribute) ProtoMessage() {} func (x *IpsecSaAttribute) 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 { @@ -20104,7 +21698,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{75} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} } func (x *IpsecSaAttribute) GetIpsecDirection() IpsecDirection { @@ -20264,7 +21858,7 @@ type IsolationGroupAttribute struct { func (x *IsolationGroupAttribute) Reset() { *x = IsolationGroupAttribute{} - 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) } @@ -20276,7 +21870,7 @@ func (x *IsolationGroupAttribute) String() string { func (*IsolationGroupAttribute) ProtoMessage() {} func (x *IsolationGroupAttribute) 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 { @@ -20289,7 +21883,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{76} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} } func (x *IsolationGroupAttribute) GetType() IsolationGroupType { @@ -20316,7 +21910,7 @@ type IsolationGroupMemberAttribute struct { func (x *IsolationGroupMemberAttribute) Reset() { *x = IsolationGroupMemberAttribute{} - 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) } @@ -20328,7 +21922,7 @@ func (x *IsolationGroupMemberAttribute) String() string { func (*IsolationGroupMemberAttribute) ProtoMessage() {} func (x *IsolationGroupMemberAttribute) 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 { @@ -20341,7 +21935,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{77} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} } func (x *IsolationGroupMemberAttribute) GetIsolationGroupId() uint64 { @@ -20368,7 +21962,7 @@ type L2McEntryAttribute struct { func (x *L2McEntryAttribute) Reset() { *x = L2McEntryAttribute{} - 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) } @@ -20380,7 +21974,7 @@ func (x *L2McEntryAttribute) String() string { func (*L2McEntryAttribute) ProtoMessage() {} func (x *L2McEntryAttribute) 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 { @@ -20393,7 +21987,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{78} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} } func (x *L2McEntryAttribute) GetPacketAction() PacketAction { @@ -20420,7 +22014,7 @@ type L2McGroupAttribute struct { func (x *L2McGroupAttribute) Reset() { *x = L2McGroupAttribute{} - 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) } @@ -20432,7 +22026,7 @@ func (x *L2McGroupAttribute) String() string { func (*L2McGroupAttribute) ProtoMessage() {} func (x *L2McGroupAttribute) 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 { @@ -20445,7 +22039,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{79} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} } func (x *L2McGroupAttribute) GetL2McOutputCount() uint32 { @@ -20473,7 +22067,7 @@ type L2McGroupMemberAttribute struct { func (x *L2McGroupMemberAttribute) Reset() { *x = L2McGroupMemberAttribute{} - 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) } @@ -20485,7 +22079,7 @@ func (x *L2McGroupMemberAttribute) String() string { func (*L2McGroupMemberAttribute) ProtoMessage() {} func (x *L2McGroupMemberAttribute) 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 { @@ -20498,7 +22092,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{80} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} } func (x *L2McGroupMemberAttribute) GetL2McGroupId() uint64 { @@ -20534,13 +22128,16 @@ type LagAttribute struct { Tpid *uint32 `protobuf:"varint,8,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` SystemPortAggregateId *uint32 `protobuf:"varint,9,opt,name=system_port_aggregate_id,json=systemPortAggregateId,proto3,oneof" json:"system_port_aggregate_id,omitempty"` Label []byte `protobuf:"bytes,10,opt,name=label,proto3,oneof" json:"label,omitempty"` + ArsObjectId *uint64 `protobuf:"varint,11,opt,name=ars_object_id,json=arsObjectId,proto3,oneof" json:"ars_object_id,omitempty"` + ArsPacketDrops *uint32 `protobuf:"varint,12,opt,name=ars_packet_drops,json=arsPacketDrops,proto3,oneof" json:"ars_packet_drops,omitempty"` + ArsPortReassignments *uint32 `protobuf:"varint,13,opt,name=ars_port_reassignments,json=arsPortReassignments,proto3,oneof" json:"ars_port_reassignments,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LagAttribute) Reset() { *x = LagAttribute{} - 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) } @@ -20552,7 +22149,7 @@ func (x *LagAttribute) String() string { func (*LagAttribute) ProtoMessage() {} func (x *LagAttribute) 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 { @@ -20565,7 +22162,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{81} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} } func (x *LagAttribute) GetPortList() []uint64 { @@ -20638,6 +22235,27 @@ func (x *LagAttribute) GetLabel() []byte { return nil } +func (x *LagAttribute) GetArsObjectId() uint64 { + if x != nil && x.ArsObjectId != nil { + return *x.ArsObjectId + } + return 0 +} + +func (x *LagAttribute) GetArsPacketDrops() uint32 { + if x != nil && x.ArsPacketDrops != nil { + return *x.ArsPacketDrops + } + return 0 +} + +func (x *LagAttribute) GetArsPortReassignments() uint32 { + if x != nil && x.ArsPortReassignments != nil { + return *x.ArsPortReassignments + } + return 0 +} + type LagMemberAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` LagId *uint64 `protobuf:"varint,1,opt,name=lag_id,json=lagId,proto3,oneof" json:"lag_id,omitempty"` @@ -20650,7 +22268,7 @@ type LagMemberAttribute struct { func (x *LagMemberAttribute) Reset() { *x = LagMemberAttribute{} - 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) } @@ -20662,7 +22280,7 @@ func (x *LagMemberAttribute) String() string { func (*LagMemberAttribute) ProtoMessage() {} func (x *LagMemberAttribute) 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 { @@ -20675,7 +22293,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{82} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} } func (x *LagMemberAttribute) GetLagId() uint64 { @@ -20740,7 +22358,7 @@ type MacsecAttribute struct { func (x *MacsecAttribute) Reset() { *x = MacsecAttribute{} - 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) } @@ -20752,7 +22370,7 @@ func (x *MacsecAttribute) String() string { func (*MacsecAttribute) ProtoMessage() {} func (x *MacsecAttribute) 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 { @@ -20765,7 +22383,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{83} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} } func (x *MacsecAttribute) GetDirection() MacsecDirection { @@ -20961,7 +22579,7 @@ type MacsecFlowAttribute struct { func (x *MacsecFlowAttribute) Reset() { *x = MacsecFlowAttribute{} - 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) } @@ -20973,7 +22591,7 @@ func (x *MacsecFlowAttribute) String() string { func (*MacsecFlowAttribute) ProtoMessage() {} func (x *MacsecFlowAttribute) 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 { @@ -20986,7 +22604,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{84} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} } func (x *MacsecFlowAttribute) GetMacsecDirection() MacsecDirection { @@ -21023,7 +22641,7 @@ type MacsecPortAttribute struct { func (x *MacsecPortAttribute) Reset() { *x = MacsecPortAttribute{} - 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) } @@ -21035,7 +22653,7 @@ func (x *MacsecPortAttribute) String() string { func (*MacsecPortAttribute) ProtoMessage() {} func (x *MacsecPortAttribute) 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 { @@ -21048,7 +22666,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{85} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} } func (x *MacsecPortAttribute) GetMacsecDirection() MacsecDirection { @@ -21104,7 +22722,7 @@ type MacsecSaAttribute struct { func (x *MacsecSaAttribute) Reset() { *x = MacsecSaAttribute{} - 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) } @@ -21116,7 +22734,7 @@ func (x *MacsecSaAttribute) String() string { func (*MacsecSaAttribute) ProtoMessage() {} func (x *MacsecSaAttribute) 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 { @@ -21129,7 +22747,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{86} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} } func (x *MacsecSaAttribute) GetMacsecDirection() MacsecDirection { @@ -21221,7 +22839,7 @@ type MacsecScAttribute struct { func (x *MacsecScAttribute) Reset() { *x = MacsecScAttribute{} - 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) } @@ -21233,7 +22851,7 @@ func (x *MacsecScAttribute) String() string { func (*MacsecScAttribute) ProtoMessage() {} func (x *MacsecScAttribute) 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 { @@ -21246,7 +22864,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{87} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} } func (x *MacsecScAttribute) GetMacsecDirection() MacsecDirection { @@ -21337,7 +22955,7 @@ type McastFdbEntryAttribute struct { func (x *McastFdbEntryAttribute) Reset() { *x = McastFdbEntryAttribute{} - 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) } @@ -21349,7 +22967,7 @@ func (x *McastFdbEntryAttribute) String() string { func (*McastFdbEntryAttribute) ProtoMessage() {} func (x *McastFdbEntryAttribute) 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 { @@ -21362,7 +22980,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{88} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} } func (x *McastFdbEntryAttribute) GetGroupId() uint64 { @@ -21420,7 +23038,7 @@ type MirrorSessionAttribute struct { func (x *MirrorSessionAttribute) Reset() { *x = MirrorSessionAttribute{} - 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) } @@ -21432,7 +23050,7 @@ func (x *MirrorSessionAttribute) String() string { func (*MirrorSessionAttribute) ProtoMessage() {} func (x *MirrorSessionAttribute) 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 { @@ -21445,7 +23063,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{89} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} } func (x *MirrorSessionAttribute) GetType() MirrorSessionType { @@ -21643,7 +23261,7 @@ type MyMacAttribute struct { func (x *MyMacAttribute) Reset() { *x = MyMacAttribute{} - 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) } @@ -21655,7 +23273,7 @@ func (x *MyMacAttribute) String() string { func (*MyMacAttribute) ProtoMessage() {} func (x *MyMacAttribute) 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 { @@ -21668,7 +23286,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{90} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} } func (x *MyMacAttribute) GetPriority() uint32 { @@ -21722,7 +23340,7 @@ type MySidEntryAttribute struct { func (x *MySidEntryAttribute) Reset() { *x = MySidEntryAttribute{} - 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) } @@ -21734,7 +23352,7 @@ func (x *MySidEntryAttribute) String() string { func (*MySidEntryAttribute) ProtoMessage() {} func (x *MySidEntryAttribute) 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 { @@ -21747,7 +23365,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{91} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} } func (x *MySidEntryAttribute) GetEndpointBehavior() MySidEntryEndpointBehavior { @@ -21829,7 +23447,7 @@ type NatEntryAttribute struct { func (x *NatEntryAttribute) Reset() { *x = NatEntryAttribute{} - 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) } @@ -21841,7 +23459,7 @@ func (x *NatEntryAttribute) String() string { func (*NatEntryAttribute) ProtoMessage() {} func (x *NatEntryAttribute) 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 { @@ -21854,7 +23472,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{92} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} } func (x *NatEntryAttribute) GetNatType() NatType { @@ -21978,7 +23596,7 @@ type NatZoneCounterAttribute struct { func (x *NatZoneCounterAttribute) Reset() { *x = NatZoneCounterAttribute{} - 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) } @@ -21990,7 +23608,7 @@ func (x *NatZoneCounterAttribute) String() string { func (*NatZoneCounterAttribute) ProtoMessage() {} func (x *NatZoneCounterAttribute) 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 { @@ -22003,7 +23621,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{93} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} } func (x *NatZoneCounterAttribute) GetNatType() NatType { @@ -22080,7 +23698,7 @@ type NeighborEntryAttribute struct { func (x *NeighborEntryAttribute) Reset() { *x = NeighborEntryAttribute{} - 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) } @@ -22092,7 +23710,7 @@ func (x *NeighborEntryAttribute) String() string { func (*NeighborEntryAttribute) ProtoMessage() {} func (x *NeighborEntryAttribute) 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 { @@ -22105,7 +23723,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{94} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} } func (x *NeighborEntryAttribute) GetDstMacAddress() []byte { @@ -22196,13 +23814,16 @@ type NextHopAttribute struct { OutsegExpMode *OutsegExpMode `protobuf:"varint,14,opt,name=outseg_exp_mode,json=outsegExpMode,proto3,enum=lemming.dataplane.sai.OutsegExpMode,oneof" json:"outseg_exp_mode,omitempty"` OutsegExpValue *uint32 `protobuf:"varint,15,opt,name=outseg_exp_value,json=outsegExpValue,proto3,oneof" json:"outseg_exp_value,omitempty"` QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,16,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + DisableSrcMacRewrite *bool `protobuf:"varint,17,opt,name=disable_src_mac_rewrite,json=disableSrcMacRewrite,proto3,oneof" json:"disable_src_mac_rewrite,omitempty"` + DisableDstMacRewrite *bool `protobuf:"varint,18,opt,name=disable_dst_mac_rewrite,json=disableDstMacRewrite,proto3,oneof" json:"disable_dst_mac_rewrite,omitempty"` + DisableVlanRewrite *bool `protobuf:"varint,19,opt,name=disable_vlan_rewrite,json=disableVlanRewrite,proto3,oneof" json:"disable_vlan_rewrite,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NextHopAttribute) Reset() { *x = NextHopAttribute{} - 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) } @@ -22214,7 +23835,7 @@ func (x *NextHopAttribute) String() string { func (*NextHopAttribute) ProtoMessage() {} func (x *NextHopAttribute) 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 { @@ -22227,7 +23848,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{95} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} } func (x *NextHopAttribute) GetType() NextHopType { @@ -22342,6 +23963,27 @@ func (x *NextHopAttribute) GetQosTcAndColorToMplsExpMap() uint64 { return 0 } +func (x *NextHopAttribute) GetDisableSrcMacRewrite() bool { + if x != nil && x.DisableSrcMacRewrite != nil { + return *x.DisableSrcMacRewrite + } + return false +} + +func (x *NextHopAttribute) GetDisableDstMacRewrite() bool { + if x != nil && x.DisableDstMacRewrite != nil { + return *x.DisableDstMacRewrite + } + return false +} + +func (x *NextHopAttribute) GetDisableVlanRewrite() bool { + if x != nil && x.DisableVlanRewrite != nil { + return *x.DisableVlanRewrite + } + return false +} + type NextHopGroupAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` NextHopCount *uint32 `protobuf:"varint,1,opt,name=next_hop_count,json=nextHopCount,proto3,oneof" json:"next_hop_count,omitempty"` @@ -22366,7 +24008,7 @@ type NextHopGroupAttribute struct { func (x *NextHopGroupAttribute) Reset() { *x = NextHopGroupAttribute{} - 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) } @@ -22378,7 +24020,7 @@ func (x *NextHopGroupAttribute) String() string { func (*NextHopGroupAttribute) ProtoMessage() {} func (x *NextHopGroupAttribute) 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 { @@ -22391,7 +24033,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{96} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} } func (x *NextHopGroupAttribute) GetNextHopCount() uint32 { @@ -22516,7 +24158,7 @@ type NextHopGroupMapAttribute struct { func (x *NextHopGroupMapAttribute) Reset() { *x = NextHopGroupMapAttribute{} - 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) } @@ -22528,7 +24170,7 @@ func (x *NextHopGroupMapAttribute) String() string { func (*NextHopGroupMapAttribute) ProtoMessage() {} func (x *NextHopGroupMapAttribute) 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 { @@ -22541,7 +24183,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{97} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} } func (x *NextHopGroupMapAttribute) GetType() NextHopGroupMapType { @@ -22576,7 +24218,7 @@ type NextHopGroupMemberAttribute struct { func (x *NextHopGroupMemberAttribute) Reset() { *x = NextHopGroupMemberAttribute{} - 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) } @@ -22588,7 +24230,7 @@ func (x *NextHopGroupMemberAttribute) String() string { func (*NextHopGroupMemberAttribute) ProtoMessage() {} func (x *NextHopGroupMemberAttribute) 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 { @@ -22601,7 +24243,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{98} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} } func (x *NextHopGroupMemberAttribute) GetNextHopGroupId() uint64 { @@ -22694,7 +24336,7 @@ type PolicerAttribute struct { func (x *PolicerAttribute) Reset() { *x = PolicerAttribute{} - 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) } @@ -22706,7 +24348,7 @@ func (x *PolicerAttribute) String() string { func (*PolicerAttribute) ProtoMessage() {} func (x *PolicerAttribute) 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 { @@ -22719,7 +24361,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{99} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} } func (x *PolicerAttribute) GetMeterType() MeterType { @@ -22963,13 +24605,36 @@ type PortAttribute struct { FecAlignmentLock []*PortLaneLatchStatus `protobuf:"bytes,153,rep,name=fec_alignment_lock,json=fecAlignmentLock,proto3" json:"fec_alignment_lock,omitempty"` FabricIsolate *bool `protobuf:"varint,154,opt,name=fabric_isolate,json=fabricIsolate,proto3,oneof" json:"fabric_isolate,omitempty"` MaxFecSymbolErrorsDetectable *uint32 `protobuf:"varint,155,opt,name=max_fec_symbol_errors_detectable,json=maxFecSymbolErrorsDetectable,proto3,oneof" json:"max_fec_symbol_errors_detectable,omitempty"` + ArsEnable *bool `protobuf:"varint,156,opt,name=ars_enable,json=arsEnable,proto3,oneof" json:"ars_enable,omitempty"` + ArsPortLoadScalingFactor *uint32 `protobuf:"varint,157,opt,name=ars_port_load_scaling_factor,json=arsPortLoadScalingFactor,proto3,oneof" json:"ars_port_load_scaling_factor,omitempty"` + ArsPortLoadPastEnable *bool `protobuf:"varint,158,opt,name=ars_port_load_past_enable,json=arsPortLoadPastEnable,proto3,oneof" json:"ars_port_load_past_enable,omitempty"` + ArsPortLoadFutureEnable *bool `protobuf:"varint,159,opt,name=ars_port_load_future_enable,json=arsPortLoadFutureEnable,proto3,oneof" json:"ars_port_load_future_enable,omitempty"` + ArsAlternatePath *bool `protobuf:"varint,160,opt,name=ars_alternate_path,json=arsAlternatePath,proto3,oneof" json:"ars_alternate_path,omitempty"` + JsonFormattedDebugData []int32 `protobuf:"varint,161,rep,packed,name=json_formatted_debug_data,json=jsonFormattedDebugData,proto3" json:"json_formatted_debug_data,omitempty"` + EcmpHashAlgorithm *HashAlgorithm `protobuf:"varint,162,opt,name=ecmp_hash_algorithm,json=ecmpHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_hash_algorithm,omitempty"` + EcmpHashSeed *uint32 `protobuf:"varint,163,opt,name=ecmp_hash_seed,json=ecmpHashSeed,proto3,oneof" json:"ecmp_hash_seed,omitempty"` + EcmpHashOffset *uint32 `protobuf:"varint,164,opt,name=ecmp_hash_offset,json=ecmpHashOffset,proto3,oneof" json:"ecmp_hash_offset,omitempty"` + OperPortFecMode *PortFecMode `protobuf:"varint,165,opt,name=oper_port_fec_mode,json=operPortFecMode,proto3,enum=lemming.dataplane.sai.PortFecMode,oneof" json:"oper_port_fec_mode,omitempty"` + HostTxSignalEnable *bool `protobuf:"varint,166,opt,name=host_tx_signal_enable,json=hostTxSignalEnable,proto3,oneof" json:"host_tx_signal_enable,omitempty"` + HostTxReadyStatus *PortHostTxReadyStatus `protobuf:"varint,167,opt,name=host_tx_ready_status,json=hostTxReadyStatus,proto3,enum=lemming.dataplane.sai.PortHostTxReadyStatus,oneof" json:"host_tx_ready_status,omitempty"` + PathTracingIntf *uint32 `protobuf:"varint,168,opt,name=path_tracing_intf,json=pathTracingIntf,proto3,oneof" json:"path_tracing_intf,omitempty"` + PathTracingTimestampType *PortPathTracingTimestampType `protobuf:"varint,169,opt,name=path_tracing_timestamp_type,json=pathTracingTimestampType,proto3,enum=lemming.dataplane.sai.PortPathTracingTimestampType,oneof" json:"path_tracing_timestamp_type,omitempty"` + RxFrequencyOffsetPpm []byte `protobuf:"bytes,170,opt,name=rx_frequency_offset_ppm,json=rxFrequencyOffsetPpm,proto3,oneof" json:"rx_frequency_offset_ppm,omitempty"` + RxSnr []byte `protobuf:"bytes,171,opt,name=rx_snr,json=rxSnr,proto3,oneof" json:"rx_snr,omitempty"` + DatapathEnable *PortDatapathEnable `protobuf:"varint,172,opt,name=datapath_enable,json=datapathEnable,proto3,enum=lemming.dataplane.sai.PortDatapathEnable,oneof" json:"datapath_enable,omitempty"` + CablePairState []PortCablePairState `protobuf:"varint,173,rep,packed,name=cable_pair_state,json=cablePairState,proto3,enum=lemming.dataplane.sai.PortCablePairState" json:"cable_pair_state,omitempty"` + CablePairLength []int32 `protobuf:"varint,174,rep,packed,name=cable_pair_length,json=cablePairLength,proto3" json:"cable_pair_length,omitempty"` + CableType *PortCableType `protobuf:"varint,175,opt,name=cable_type,json=cableType,proto3,enum=lemming.dataplane.sai.PortCableType,oneof" json:"cable_type,omitempty"` + 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PortAttribute) Reset() { *x = PortAttribute{} - 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) } @@ -22981,7 +24646,7 @@ func (x *PortAttribute) String() string { func (*PortAttribute) ProtoMessage() {} func (x *PortAttribute) 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 { @@ -22994,7 +24659,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{100} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} } func (x *PortAttribute) GetType() PortType { @@ -24082,6 +25747,167 @@ func (x *PortAttribute) GetMaxFecSymbolErrorsDetectable() uint32 { return 0 } +func (x *PortAttribute) GetArsEnable() bool { + if x != nil && x.ArsEnable != nil { + return *x.ArsEnable + } + return false +} + +func (x *PortAttribute) GetArsPortLoadScalingFactor() uint32 { + if x != nil && x.ArsPortLoadScalingFactor != nil { + return *x.ArsPortLoadScalingFactor + } + return 0 +} + +func (x *PortAttribute) GetArsPortLoadPastEnable() bool { + if x != nil && x.ArsPortLoadPastEnable != nil { + return *x.ArsPortLoadPastEnable + } + return false +} + +func (x *PortAttribute) GetArsPortLoadFutureEnable() bool { + if x != nil && x.ArsPortLoadFutureEnable != nil { + return *x.ArsPortLoadFutureEnable + } + return false +} + +func (x *PortAttribute) GetArsAlternatePath() bool { + if x != nil && x.ArsAlternatePath != nil { + return *x.ArsAlternatePath + } + return false +} + +func (x *PortAttribute) GetJsonFormattedDebugData() []int32 { + if x != nil { + return x.JsonFormattedDebugData + } + return nil +} + +func (x *PortAttribute) GetEcmpHashAlgorithm() HashAlgorithm { + if x != nil && x.EcmpHashAlgorithm != nil { + return *x.EcmpHashAlgorithm + } + return HashAlgorithm_HASH_ALGORITHM_UNSPECIFIED +} + +func (x *PortAttribute) GetEcmpHashSeed() uint32 { + if x != nil && x.EcmpHashSeed != nil { + return *x.EcmpHashSeed + } + return 0 +} + +func (x *PortAttribute) GetEcmpHashOffset() uint32 { + if x != nil && x.EcmpHashOffset != nil { + return *x.EcmpHashOffset + } + return 0 +} + +func (x *PortAttribute) GetOperPortFecMode() PortFecMode { + if x != nil && x.OperPortFecMode != nil { + return *x.OperPortFecMode + } + return PortFecMode_PORT_FEC_MODE_UNSPECIFIED +} + +func (x *PortAttribute) GetHostTxSignalEnable() bool { + if x != nil && x.HostTxSignalEnable != nil { + return *x.HostTxSignalEnable + } + return false +} + +func (x *PortAttribute) GetHostTxReadyStatus() PortHostTxReadyStatus { + if x != nil && x.HostTxReadyStatus != nil { + return *x.HostTxReadyStatus + } + return PortHostTxReadyStatus_PORT_HOST_TX_READY_STATUS_UNSPECIFIED +} + +func (x *PortAttribute) GetPathTracingIntf() uint32 { + if x != nil && x.PathTracingIntf != nil { + return *x.PathTracingIntf + } + return 0 +} + +func (x *PortAttribute) GetPathTracingTimestampType() PortPathTracingTimestampType { + if x != nil && x.PathTracingTimestampType != nil { + return *x.PathTracingTimestampType + } + return PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED +} + +func (x *PortAttribute) GetRxFrequencyOffsetPpm() []byte { + if x != nil { + return x.RxFrequencyOffsetPpm + } + return nil +} + +func (x *PortAttribute) GetRxSnr() []byte { + if x != nil { + return x.RxSnr + } + return nil +} + +func (x *PortAttribute) GetDatapathEnable() PortDatapathEnable { + if x != nil && x.DatapathEnable != nil { + return *x.DatapathEnable + } + return PortDatapathEnable_PORT_DATAPATH_ENABLE_UNSPECIFIED +} + +func (x *PortAttribute) GetCablePairState() []PortCablePairState { + if x != nil { + return x.CablePairState + } + return nil +} + +func (x *PortAttribute) GetCablePairLength() []int32 { + if x != nil { + return x.CablePairLength + } + return nil +} + +func (x *PortAttribute) GetCableType() PortCableType { + if x != nil && x.CableType != nil { + return *x.CableType + } + return PortCableType_PORT_CABLE_TYPE_UNSPECIFIED +} + +func (x *PortAttribute) GetArsPortLoadPastWeight() uint32 { + if x != nil && x.ArsPortLoadPastWeight != nil { + return *x.ArsPortLoadPastWeight + } + return 0 +} + +func (x *PortAttribute) GetArsPortLoadFutureWeight() uint32 { + if x != nil && x.ArsPortLoadFutureWeight != nil { + return *x.ArsPortLoadFutureWeight + } + return 0 +} + +func (x *PortAttribute) GetPoePortId() uint64 { + if x != nil && x.PoePortId != nil { + return *x.PoePortId + } + return 0 +} + 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"` @@ -24095,7 +25921,7 @@ type PortConnectorAttribute struct { func (x *PortConnectorAttribute) Reset() { *x = PortConnectorAttribute{} - 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) } @@ -24107,7 +25933,7 @@ func (x *PortConnectorAttribute) String() string { func (*PortConnectorAttribute) ProtoMessage() {} func (x *PortConnectorAttribute) 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 { @@ -24120,7 +25946,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{101} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} } func (x *PortConnectorAttribute) GetSystemSidePortId() uint64 { @@ -24169,7 +25995,7 @@ type PortPoolAttribute struct { func (x *PortPoolAttribute) Reset() { *x = PortPoolAttribute{} - 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) } @@ -24181,7 +26007,7 @@ func (x *PortPoolAttribute) String() string { func (*PortPoolAttribute) ProtoMessage() {} func (x *PortPoolAttribute) 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 { @@ -24194,7 +26020,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{102} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} } func (x *PortPoolAttribute) GetPortId() uint64 { @@ -24219,26 +26045,34 @@ func (x *PortPoolAttribute) GetQosWredProfileId() uint64 { } type PortSerdesAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - PortId *uint64 `protobuf:"varint,1,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` - Preemphasis []int32 `protobuf:"varint,2,rep,packed,name=preemphasis,proto3" json:"preemphasis,omitempty"` - Idriver []int32 `protobuf:"varint,3,rep,packed,name=idriver,proto3" json:"idriver,omitempty"` - Ipredriver []int32 `protobuf:"varint,4,rep,packed,name=ipredriver,proto3" json:"ipredriver,omitempty"` - TxFirPre1 []int32 `protobuf:"varint,5,rep,packed,name=tx_fir_pre1,json=txFirPre1,proto3" json:"tx_fir_pre1,omitempty"` - TxFirPre2 []int32 `protobuf:"varint,6,rep,packed,name=tx_fir_pre2,json=txFirPre2,proto3" json:"tx_fir_pre2,omitempty"` - TxFirPre3 []int32 `protobuf:"varint,7,rep,packed,name=tx_fir_pre3,json=txFirPre3,proto3" json:"tx_fir_pre3,omitempty"` - TxFirMain []int32 `protobuf:"varint,8,rep,packed,name=tx_fir_main,json=txFirMain,proto3" json:"tx_fir_main,omitempty"` - TxFirPost1 []int32 `protobuf:"varint,9,rep,packed,name=tx_fir_post1,json=txFirPost1,proto3" json:"tx_fir_post1,omitempty"` - TxFirPost2 []int32 `protobuf:"varint,10,rep,packed,name=tx_fir_post2,json=txFirPost2,proto3" json:"tx_fir_post2,omitempty"` - TxFirPost3 []int32 `protobuf:"varint,11,rep,packed,name=tx_fir_post3,json=txFirPost3,proto3" json:"tx_fir_post3,omitempty"` - TxFirAttn []int32 `protobuf:"varint,12,rep,packed,name=tx_fir_attn,json=txFirAttn,proto3" json:"tx_fir_attn,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PortId *uint64 `protobuf:"varint,1,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` + Preemphasis []int32 `protobuf:"varint,2,rep,packed,name=preemphasis,proto3" json:"preemphasis,omitempty"` + Idriver []int32 `protobuf:"varint,3,rep,packed,name=idriver,proto3" json:"idriver,omitempty"` + Ipredriver []int32 `protobuf:"varint,4,rep,packed,name=ipredriver,proto3" json:"ipredriver,omitempty"` + TxFirPre1 []int32 `protobuf:"varint,5,rep,packed,name=tx_fir_pre1,json=txFirPre1,proto3" json:"tx_fir_pre1,omitempty"` + TxFirPre2 []int32 `protobuf:"varint,6,rep,packed,name=tx_fir_pre2,json=txFirPre2,proto3" json:"tx_fir_pre2,omitempty"` + TxFirPre3 []int32 `protobuf:"varint,7,rep,packed,name=tx_fir_pre3,json=txFirPre3,proto3" json:"tx_fir_pre3,omitempty"` + TxFirMain []int32 `protobuf:"varint,8,rep,packed,name=tx_fir_main,json=txFirMain,proto3" json:"tx_fir_main,omitempty"` + TxFirPost1 []int32 `protobuf:"varint,9,rep,packed,name=tx_fir_post1,json=txFirPost1,proto3" json:"tx_fir_post1,omitempty"` + TxFirPost2 []int32 `protobuf:"varint,10,rep,packed,name=tx_fir_post2,json=txFirPost2,proto3" json:"tx_fir_post2,omitempty"` + TxFirPost3 []int32 `protobuf:"varint,11,rep,packed,name=tx_fir_post3,json=txFirPost3,proto3" json:"tx_fir_post3,omitempty"` + TxFirAttn []int32 `protobuf:"varint,12,rep,packed,name=tx_fir_attn,json=txFirAttn,proto3" json:"tx_fir_attn,omitempty"` + TxPam4Ratio []int32 `protobuf:"varint,13,rep,packed,name=tx_pam4_ratio,json=txPam4Ratio,proto3" json:"tx_pam4_ratio,omitempty"` + TxOutCommonMode []int32 `protobuf:"varint,14,rep,packed,name=tx_out_common_mode,json=txOutCommonMode,proto3" json:"tx_out_common_mode,omitempty"` + TxPmosCommonMode []int32 `protobuf:"varint,15,rep,packed,name=tx_pmos_common_mode,json=txPmosCommonMode,proto3" json:"tx_pmos_common_mode,omitempty"` + TxNmosCommonMode []int32 `protobuf:"varint,16,rep,packed,name=tx_nmos_common_mode,json=txNmosCommonMode,proto3" json:"tx_nmos_common_mode,omitempty"` + TxPmosVltgReg []int32 `protobuf:"varint,17,rep,packed,name=tx_pmos_vltg_reg,json=txPmosVltgReg,proto3" json:"tx_pmos_vltg_reg,omitempty"` + TxNmosVltgReg []int32 `protobuf:"varint,18,rep,packed,name=tx_nmos_vltg_reg,json=txNmosVltgReg,proto3" json:"tx_nmos_vltg_reg,omitempty"` + TxPrecoding []int32 `protobuf:"varint,19,rep,packed,name=tx_precoding,json=txPrecoding,proto3" json:"tx_precoding,omitempty"` + RxPrecoding []int32 `protobuf:"varint,20,rep,packed,name=rx_precoding,json=rxPrecoding,proto3" json:"rx_precoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PortSerdesAttribute) Reset() { *x = PortSerdesAttribute{} - 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) } @@ -24250,7 +26084,7 @@ func (x *PortSerdesAttribute) String() string { func (*PortSerdesAttribute) ProtoMessage() {} func (x *PortSerdesAttribute) 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 { @@ -24263,7 +26097,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{103} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} } func (x *PortSerdesAttribute) GetPortId() uint64 { @@ -24350,19 +26184,75 @@ func (x *PortSerdesAttribute) GetTxFirAttn() []int32 { return nil } -type QosMapAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - Type *QosMapType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.QosMapType,oneof" json:"type,omitempty"` - MapToValueList []*QOSMap `protobuf:"bytes,2,rep,name=map_to_value_list,json=mapToValueList,proto3" json:"map_to_value_list,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *QosMapAttribute) Reset() { - *x = QosMapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PortSerdesAttribute) GetTxPam4Ratio() []int32 { + if x != nil { + return x.TxPam4Ratio + } + return nil +} + +func (x *PortSerdesAttribute) GetTxOutCommonMode() []int32 { + if x != nil { + return x.TxOutCommonMode + } + return nil +} + +func (x *PortSerdesAttribute) GetTxPmosCommonMode() []int32 { + if x != nil { + return x.TxPmosCommonMode + } + return nil +} + +func (x *PortSerdesAttribute) GetTxNmosCommonMode() []int32 { + if x != nil { + return x.TxNmosCommonMode + } + return nil +} + +func (x *PortSerdesAttribute) GetTxPmosVltgReg() []int32 { + if x != nil { + return x.TxPmosVltgReg + } + return nil +} + +func (x *PortSerdesAttribute) GetTxNmosVltgReg() []int32 { + if x != nil { + return x.TxNmosVltgReg + } + return nil +} + +func (x *PortSerdesAttribute) GetTxPrecoding() []int32 { + if x != nil { + return x.TxPrecoding + } + return nil +} + +func (x *PortSerdesAttribute) GetRxPrecoding() []int32 { + if x != nil { + return x.RxPrecoding + } + return nil +} + +type QosMapAttribute struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type *QosMapType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.QosMapType,oneof" json:"type,omitempty"` + MapToValueList []*QOSMap `protobuf:"bytes,2,rep,name=map_to_value_list,json=mapToValueList,proto3" json:"map_to_value_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QosMapAttribute) Reset() { + *x = QosMapAttribute{} + mi := &file_dataplane_proto_sai_common_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QosMapAttribute) String() string { @@ -24372,7 +26262,7 @@ func (x *QosMapAttribute) String() string { func (*QosMapAttribute) ProtoMessage() {} func (x *QosMapAttribute) 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 { @@ -24385,7 +26275,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{104} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} } func (x *QosMapAttribute) GetType() QosMapType { @@ -24423,7 +26313,7 @@ type QueueAttribute struct { func (x *QueueAttribute) Reset() { *x = QueueAttribute{} - 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) } @@ -24435,7 +26325,7 @@ func (x *QueueAttribute) String() string { func (*QueueAttribute) ProtoMessage() {} func (x *QueueAttribute) 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 { @@ -24448,7 +26338,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{105} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} } func (x *QueueAttribute) GetType() QueueType { @@ -24565,13 +26455,14 @@ 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RouterInterfaceAttribute) Reset() { *x = RouterInterfaceAttribute{} - 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) } @@ -24583,7 +26474,7 @@ func (x *RouterInterfaceAttribute) String() string { func (*RouterInterfaceAttribute) ProtoMessage() {} func (x *RouterInterfaceAttribute) 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 { @@ -24596,7 +26487,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{106} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} } func (x *RouterInterfaceAttribute) GetVirtualRouterId() uint64 { @@ -24746,6 +26637,13 @@ func (x *RouterInterfaceAttribute) GetAdminMplsState() bool { return false } +func (x *RouterInterfaceAttribute) GetLabel() []byte { + if x != nil { + return x.Label + } + return nil +} + type RouteEntryAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` PacketAction *PacketAction `protobuf:"varint,1,opt,name=packet_action,json=packetAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"packet_action,omitempty"` @@ -24754,13 +26652,14 @@ type RouteEntryAttribute struct { MetaData *uint32 `protobuf:"varint,4,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` IpAddrFamily *IpAddrFamily `protobuf:"varint,5,opt,name=ip_addr_family,json=ipAddrFamily,proto3,enum=lemming.dataplane.sai.IpAddrFamily,oneof" json:"ip_addr_family,omitempty"` CounterId *uint64 `protobuf:"varint,6,opt,name=counter_id,json=counterId,proto3,oneof" json:"counter_id,omitempty"` + PrefixAggId *uint32 `protobuf:"varint,7,opt,name=prefix_agg_id,json=prefixAggId,proto3,oneof" json:"prefix_agg_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RouteEntryAttribute) Reset() { *x = RouteEntryAttribute{} - 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) } @@ -24772,7 +26671,7 @@ func (x *RouteEntryAttribute) String() string { func (*RouteEntryAttribute) ProtoMessage() {} func (x *RouteEntryAttribute) 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 { @@ -24785,7 +26684,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{107} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} } func (x *RouteEntryAttribute) GetPacketAction() PacketAction { @@ -24830,6 +26729,13 @@ func (x *RouteEntryAttribute) GetCounterId() uint64 { return 0 } +func (x *RouteEntryAttribute) GetPrefixAggId() uint32 { + if x != nil && x.PrefixAggId != nil { + return *x.PrefixAggId + } + return 0 +} + type RpfGroupAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` RpfInterfaceCount *uint32 `protobuf:"varint,1,opt,name=rpf_interface_count,json=rpfInterfaceCount,proto3,oneof" json:"rpf_interface_count,omitempty"` @@ -24840,7 +26746,7 @@ type RpfGroupAttribute struct { func (x *RpfGroupAttribute) Reset() { *x = RpfGroupAttribute{} - 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) } @@ -24852,7 +26758,7 @@ func (x *RpfGroupAttribute) String() string { func (*RpfGroupAttribute) ProtoMessage() {} func (x *RpfGroupAttribute) 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 { @@ -24865,7 +26771,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{108} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} } func (x *RpfGroupAttribute) GetRpfInterfaceCount() uint32 { @@ -24892,7 +26798,7 @@ type RpfGroupMemberAttribute struct { func (x *RpfGroupMemberAttribute) Reset() { *x = RpfGroupMemberAttribute{} - 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) } @@ -24904,7 +26810,7 @@ func (x *RpfGroupMemberAttribute) String() string { func (*RpfGroupMemberAttribute) ProtoMessage() {} func (x *RpfGroupMemberAttribute) 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 { @@ -24917,7 +26823,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{109} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} } func (x *RpfGroupMemberAttribute) GetRpfGroupId() uint64 { @@ -24945,7 +26851,7 @@ type SamplepacketAttribute struct { func (x *SamplepacketAttribute) Reset() { *x = SamplepacketAttribute{} - 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) } @@ -24957,7 +26863,7 @@ func (x *SamplepacketAttribute) String() string { func (*SamplepacketAttribute) ProtoMessage() {} func (x *SamplepacketAttribute) 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 { @@ -24970,7 +26876,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{110} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} } func (x *SamplepacketAttribute) GetSampleRate() uint32 { @@ -25009,7 +26915,7 @@ type SchedulerAttribute struct { func (x *SchedulerAttribute) Reset() { *x = SchedulerAttribute{} - 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) } @@ -25021,7 +26927,7 @@ func (x *SchedulerAttribute) String() string { func (*SchedulerAttribute) ProtoMessage() {} func (x *SchedulerAttribute) 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 { @@ -25034,7 +26940,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{111} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} } func (x *SchedulerAttribute) GetSchedulingType() SchedulingType { @@ -25101,7 +27007,7 @@ type SchedulerGroupAttribute struct { func (x *SchedulerGroupAttribute) Reset() { *x = SchedulerGroupAttribute{} - 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) } @@ -25113,7 +27019,7 @@ func (x *SchedulerGroupAttribute) String() string { func (*SchedulerGroupAttribute) ProtoMessage() {} func (x *SchedulerGroupAttribute) 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 { @@ -25126,7 +27032,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{112} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} } func (x *SchedulerGroupAttribute) GetChildCount() uint32 { @@ -25183,13 +27089,14 @@ type Srv6SidlistAttribute struct { 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 } func (x *Srv6SidlistAttribute) Reset() { *x = Srv6SidlistAttribute{} - 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) } @@ -25201,7 +27108,7 @@ func (x *Srv6SidlistAttribute) String() string { func (*Srv6SidlistAttribute) ProtoMessage() {} func (x *Srv6SidlistAttribute) 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 { @@ -25214,7 +27121,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{113} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} } func (x *Srv6SidlistAttribute) GetType() Srv6SidlistType { @@ -25238,6 +27145,13 @@ func (x *Srv6SidlistAttribute) GetSegmentList() [][]byte { return nil } +func (x *Srv6SidlistAttribute) GetNextHopId() uint64 { + if x != nil && x.NextHopId != nil { + return *x.NextHopId + } + return 0 +} + 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"` @@ -25249,7 +27163,7 @@ type StpAttribute struct { func (x *StpAttribute) Reset() { *x = StpAttribute{} - 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) } @@ -25261,7 +27175,7 @@ func (x *StpAttribute) String() string { func (*StpAttribute) ProtoMessage() {} func (x *StpAttribute) 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 { @@ -25274,7 +27188,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{114} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} } func (x *StpAttribute) GetVlanList() []uint32 { @@ -25309,7 +27223,7 @@ type StpPortAttribute struct { func (x *StpPortAttribute) Reset() { *x = StpPortAttribute{} - 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) } @@ -25321,7 +27235,7 @@ func (x *StpPortAttribute) String() string { func (*StpPortAttribute) ProtoMessage() {} func (x *StpPortAttribute) 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 { @@ -25334,7 +27248,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{115} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} } func (x *StpPortAttribute) GetStp() uint64 { @@ -25359,213 +27273,231 @@ func (x *StpPortAttribute) GetState() StpPortState { } type SwitchAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - NumberOfActivePorts *uint32 `protobuf:"varint,1,opt,name=number_of_active_ports,json=numberOfActivePorts,proto3,oneof" json:"number_of_active_ports,omitempty"` - MaxNumberOfSupportedPorts *uint32 `protobuf:"varint,2,opt,name=max_number_of_supported_ports,json=maxNumberOfSupportedPorts,proto3,oneof" json:"max_number_of_supported_ports,omitempty"` - PortList []uint64 `protobuf:"varint,3,rep,packed,name=port_list,json=portList,proto3" json:"port_list,omitempty"` - PortMaxMtu *uint32 `protobuf:"varint,4,opt,name=port_max_mtu,json=portMaxMtu,proto3,oneof" json:"port_max_mtu,omitempty"` - CpuPort *uint64 `protobuf:"varint,5,opt,name=cpu_port,json=cpuPort,proto3,oneof" json:"cpu_port,omitempty"` - MaxVirtualRouters *uint32 `protobuf:"varint,6,opt,name=max_virtual_routers,json=maxVirtualRouters,proto3,oneof" json:"max_virtual_routers,omitempty"` - FdbTableSize *uint32 `protobuf:"varint,7,opt,name=fdb_table_size,json=fdbTableSize,proto3,oneof" json:"fdb_table_size,omitempty"` - L3NeighborTableSize *uint32 `protobuf:"varint,8,opt,name=l3_neighbor_table_size,json=l3NeighborTableSize,proto3,oneof" json:"l3_neighbor_table_size,omitempty"` - L3RouteTableSize *uint32 `protobuf:"varint,9,opt,name=l3_route_table_size,json=l3RouteTableSize,proto3,oneof" json:"l3_route_table_size,omitempty"` - LagMembers *uint32 `protobuf:"varint,10,opt,name=lag_members,json=lagMembers,proto3,oneof" json:"lag_members,omitempty"` - NumberOfLags *uint32 `protobuf:"varint,11,opt,name=number_of_lags,json=numberOfLags,proto3,oneof" json:"number_of_lags,omitempty"` - EcmpMembers *uint32 `protobuf:"varint,12,opt,name=ecmp_members,json=ecmpMembers,proto3,oneof" json:"ecmp_members,omitempty"` - NumberOfEcmpGroups *uint32 `protobuf:"varint,13,opt,name=number_of_ecmp_groups,json=numberOfEcmpGroups,proto3,oneof" json:"number_of_ecmp_groups,omitempty"` - NumberOfUnicastQueues *uint32 `protobuf:"varint,14,opt,name=number_of_unicast_queues,json=numberOfUnicastQueues,proto3,oneof" json:"number_of_unicast_queues,omitempty"` - NumberOfMulticastQueues *uint32 `protobuf:"varint,15,opt,name=number_of_multicast_queues,json=numberOfMulticastQueues,proto3,oneof" json:"number_of_multicast_queues,omitempty"` - NumberOfQueues *uint32 `protobuf:"varint,16,opt,name=number_of_queues,json=numberOfQueues,proto3,oneof" json:"number_of_queues,omitempty"` - NumberOfCpuQueues *uint32 `protobuf:"varint,17,opt,name=number_of_cpu_queues,json=numberOfCpuQueues,proto3,oneof" json:"number_of_cpu_queues,omitempty"` - OnLinkRouteSupported *bool `protobuf:"varint,18,opt,name=on_link_route_supported,json=onLinkRouteSupported,proto3,oneof" json:"on_link_route_supported,omitempty"` - OperStatus *SwitchOperStatus `protobuf:"varint,19,opt,name=oper_status,json=operStatus,proto3,enum=lemming.dataplane.sai.SwitchOperStatus,oneof" json:"oper_status,omitempty"` - MaxNumberOfTempSensors *uint32 `protobuf:"varint,20,opt,name=max_number_of_temp_sensors,json=maxNumberOfTempSensors,proto3,oneof" json:"max_number_of_temp_sensors,omitempty"` - TempList []int32 `protobuf:"varint,21,rep,packed,name=temp_list,json=tempList,proto3" json:"temp_list,omitempty"` - MaxTemp *uint32 `protobuf:"varint,22,opt,name=max_temp,json=maxTemp,proto3,oneof" json:"max_temp,omitempty"` - AverageTemp *uint32 `protobuf:"varint,23,opt,name=average_temp,json=averageTemp,proto3,oneof" json:"average_temp,omitempty"` - AclTableMinimumPriority *uint32 `protobuf:"varint,24,opt,name=acl_table_minimum_priority,json=aclTableMinimumPriority,proto3,oneof" json:"acl_table_minimum_priority,omitempty"` - AclTableMaximumPriority *uint32 `protobuf:"varint,25,opt,name=acl_table_maximum_priority,json=aclTableMaximumPriority,proto3,oneof" json:"acl_table_maximum_priority,omitempty"` - AclEntryMinimumPriority *uint32 `protobuf:"varint,26,opt,name=acl_entry_minimum_priority,json=aclEntryMinimumPriority,proto3,oneof" json:"acl_entry_minimum_priority,omitempty"` - AclEntryMaximumPriority *uint32 `protobuf:"varint,27,opt,name=acl_entry_maximum_priority,json=aclEntryMaximumPriority,proto3,oneof" json:"acl_entry_maximum_priority,omitempty"` - AclTableGroupMinimumPriority *uint32 `protobuf:"varint,28,opt,name=acl_table_group_minimum_priority,json=aclTableGroupMinimumPriority,proto3,oneof" json:"acl_table_group_minimum_priority,omitempty"` - AclTableGroupMaximumPriority *uint32 `protobuf:"varint,29,opt,name=acl_table_group_maximum_priority,json=aclTableGroupMaximumPriority,proto3,oneof" json:"acl_table_group_maximum_priority,omitempty"` - FdbDstUserMetaDataRange *Uint32Range `protobuf:"bytes,30,opt,name=fdb_dst_user_meta_data_range,json=fdbDstUserMetaDataRange,proto3,oneof" json:"fdb_dst_user_meta_data_range,omitempty"` - RouteDstUserMetaDataRange *Uint32Range `protobuf:"bytes,31,opt,name=route_dst_user_meta_data_range,json=routeDstUserMetaDataRange,proto3,oneof" json:"route_dst_user_meta_data_range,omitempty"` - NeighborDstUserMetaDataRange *Uint32Range `protobuf:"bytes,32,opt,name=neighbor_dst_user_meta_data_range,json=neighborDstUserMetaDataRange,proto3,oneof" json:"neighbor_dst_user_meta_data_range,omitempty"` - PortUserMetaDataRange *Uint32Range `protobuf:"bytes,33,opt,name=port_user_meta_data_range,json=portUserMetaDataRange,proto3,oneof" json:"port_user_meta_data_range,omitempty"` - VlanUserMetaDataRange *Uint32Range `protobuf:"bytes,34,opt,name=vlan_user_meta_data_range,json=vlanUserMetaDataRange,proto3,oneof" json:"vlan_user_meta_data_range,omitempty"` - AclUserMetaDataRange *Uint32Range `protobuf:"bytes,35,opt,name=acl_user_meta_data_range,json=aclUserMetaDataRange,proto3,oneof" json:"acl_user_meta_data_range,omitempty"` - AclUserTrapIdRange *Uint32Range `protobuf:"bytes,36,opt,name=acl_user_trap_id_range,json=aclUserTrapIdRange,proto3,oneof" json:"acl_user_trap_id_range,omitempty"` - DefaultVlanId *uint64 `protobuf:"varint,37,opt,name=default_vlan_id,json=defaultVlanId,proto3,oneof" json:"default_vlan_id,omitempty"` - DefaultStpInstId *uint64 `protobuf:"varint,38,opt,name=default_stp_inst_id,json=defaultStpInstId,proto3,oneof" json:"default_stp_inst_id,omitempty"` - MaxStpInstance *uint32 `protobuf:"varint,39,opt,name=max_stp_instance,json=maxStpInstance,proto3,oneof" json:"max_stp_instance,omitempty"` - DefaultVirtualRouterId *uint64 `protobuf:"varint,40,opt,name=default_virtual_router_id,json=defaultVirtualRouterId,proto3,oneof" json:"default_virtual_router_id,omitempty"` - DefaultOverrideVirtualRouterId *uint64 `protobuf:"varint,41,opt,name=default_override_virtual_router_id,json=defaultOverrideVirtualRouterId,proto3,oneof" json:"default_override_virtual_router_id,omitempty"` - Default_1QBridgeId *uint64 `protobuf:"varint,42,opt,name=default_1q_bridge_id,json=default1qBridgeId,proto3,oneof" json:"default_1q_bridge_id,omitempty"` - IngressAcl *uint64 `protobuf:"varint,43,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` - EgressAcl *uint64 `protobuf:"varint,44,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` - QosMaxNumberOfTrafficClasses *uint32 `protobuf:"varint,45,opt,name=qos_max_number_of_traffic_classes,json=qosMaxNumberOfTrafficClasses,proto3,oneof" json:"qos_max_number_of_traffic_classes,omitempty"` - QosMaxNumberOfSchedulerGroupHierarchyLevels *uint32 `protobuf:"varint,46,opt,name=qos_max_number_of_scheduler_group_hierarchy_levels,json=qosMaxNumberOfSchedulerGroupHierarchyLevels,proto3,oneof" json:"qos_max_number_of_scheduler_group_hierarchy_levels,omitempty"` - QosMaxNumberOfSchedulerGroupsPerHierarchyLevel []uint32 `protobuf:"varint,47,rep,packed,name=qos_max_number_of_scheduler_groups_per_hierarchy_level,json=qosMaxNumberOfSchedulerGroupsPerHierarchyLevel,proto3" json:"qos_max_number_of_scheduler_groups_per_hierarchy_level,omitempty"` - QosMaxNumberOfChildsPerSchedulerGroup *uint32 `protobuf:"varint,48,opt,name=qos_max_number_of_childs_per_scheduler_group,json=qosMaxNumberOfChildsPerSchedulerGroup,proto3,oneof" json:"qos_max_number_of_childs_per_scheduler_group,omitempty"` - TotalBufferSize *uint64 `protobuf:"varint,49,opt,name=total_buffer_size,json=totalBufferSize,proto3,oneof" json:"total_buffer_size,omitempty"` - IngressBufferPoolNum *uint32 `protobuf:"varint,50,opt,name=ingress_buffer_pool_num,json=ingressBufferPoolNum,proto3,oneof" json:"ingress_buffer_pool_num,omitempty"` - EgressBufferPoolNum *uint32 `protobuf:"varint,51,opt,name=egress_buffer_pool_num,json=egressBufferPoolNum,proto3,oneof" json:"egress_buffer_pool_num,omitempty"` - AvailableIpv4RouteEntry *uint32 `protobuf:"varint,52,opt,name=available_ipv4_route_entry,json=availableIpv4RouteEntry,proto3,oneof" json:"available_ipv4_route_entry,omitempty"` - AvailableIpv6RouteEntry *uint32 `protobuf:"varint,53,opt,name=available_ipv6_route_entry,json=availableIpv6RouteEntry,proto3,oneof" json:"available_ipv6_route_entry,omitempty"` - AvailableIpv4NexthopEntry *uint32 `protobuf:"varint,54,opt,name=available_ipv4_nexthop_entry,json=availableIpv4NexthopEntry,proto3,oneof" json:"available_ipv4_nexthop_entry,omitempty"` - AvailableIpv6NexthopEntry *uint32 `protobuf:"varint,55,opt,name=available_ipv6_nexthop_entry,json=availableIpv6NexthopEntry,proto3,oneof" json:"available_ipv6_nexthop_entry,omitempty"` - AvailableIpv4NeighborEntry *uint32 `protobuf:"varint,56,opt,name=available_ipv4_neighbor_entry,json=availableIpv4NeighborEntry,proto3,oneof" json:"available_ipv4_neighbor_entry,omitempty"` - AvailableIpv6NeighborEntry *uint32 `protobuf:"varint,57,opt,name=available_ipv6_neighbor_entry,json=availableIpv6NeighborEntry,proto3,oneof" json:"available_ipv6_neighbor_entry,omitempty"` - AvailableNextHopGroupEntry *uint32 `protobuf:"varint,58,opt,name=available_next_hop_group_entry,json=availableNextHopGroupEntry,proto3,oneof" json:"available_next_hop_group_entry,omitempty"` - AvailableNextHopGroupMemberEntry *uint32 `protobuf:"varint,59,opt,name=available_next_hop_group_member_entry,json=availableNextHopGroupMemberEntry,proto3,oneof" json:"available_next_hop_group_member_entry,omitempty"` - AvailableFdbEntry *uint32 `protobuf:"varint,60,opt,name=available_fdb_entry,json=availableFdbEntry,proto3,oneof" json:"available_fdb_entry,omitempty"` - AvailableL2McEntry *uint32 `protobuf:"varint,61,opt,name=available_l2mc_entry,json=availableL2mcEntry,proto3,oneof" json:"available_l2mc_entry,omitempty"` - AvailableIpmcEntry *uint32 `protobuf:"varint,62,opt,name=available_ipmc_entry,json=availableIpmcEntry,proto3,oneof" json:"available_ipmc_entry,omitempty"` - AvailableSnatEntry *uint32 `protobuf:"varint,63,opt,name=available_snat_entry,json=availableSnatEntry,proto3,oneof" json:"available_snat_entry,omitempty"` - AvailableDnatEntry *uint32 `protobuf:"varint,64,opt,name=available_dnat_entry,json=availableDnatEntry,proto3,oneof" json:"available_dnat_entry,omitempty"` - AvailableDoubleNatEntry *uint32 `protobuf:"varint,65,opt,name=available_double_nat_entry,json=availableDoubleNatEntry,proto3,oneof" json:"available_double_nat_entry,omitempty"` - AvailableAclTable []*ACLResource `protobuf:"bytes,66,rep,name=available_acl_table,json=availableAclTable,proto3" json:"available_acl_table,omitempty"` - AvailableAclTableGroup []*ACLResource `protobuf:"bytes,67,rep,name=available_acl_table_group,json=availableAclTableGroup,proto3" json:"available_acl_table_group,omitempty"` - AvailableMySidEntry *uint32 `protobuf:"varint,68,opt,name=available_my_sid_entry,json=availableMySidEntry,proto3,oneof" json:"available_my_sid_entry,omitempty"` - DefaultTrapGroup *uint64 `protobuf:"varint,69,opt,name=default_trap_group,json=defaultTrapGroup,proto3,oneof" json:"default_trap_group,omitempty"` - EcmpHash *uint64 `protobuf:"varint,70,opt,name=ecmp_hash,json=ecmpHash,proto3,oneof" json:"ecmp_hash,omitempty"` - LagHash *uint64 `protobuf:"varint,71,opt,name=lag_hash,json=lagHash,proto3,oneof" json:"lag_hash,omitempty"` - RestartWarm *bool `protobuf:"varint,72,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` - WarmRecover *bool `protobuf:"varint,73,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` - RestartType *SwitchRestartType `protobuf:"varint,74,opt,name=restart_type,json=restartType,proto3,enum=lemming.dataplane.sai.SwitchRestartType,oneof" json:"restart_type,omitempty"` - MinPlannedRestartInterval *uint32 `protobuf:"varint,75,opt,name=min_planned_restart_interval,json=minPlannedRestartInterval,proto3,oneof" json:"min_planned_restart_interval,omitempty"` - NvStorageSize *uint64 `protobuf:"varint,76,opt,name=nv_storage_size,json=nvStorageSize,proto3,oneof" json:"nv_storage_size,omitempty"` - MaxAclActionCount *uint32 `protobuf:"varint,77,opt,name=max_acl_action_count,json=maxAclActionCount,proto3,oneof" json:"max_acl_action_count,omitempty"` - MaxAclRangeCount *uint32 `protobuf:"varint,78,opt,name=max_acl_range_count,json=maxAclRangeCount,proto3,oneof" json:"max_acl_range_count,omitempty"` - AclCapability *ACLCapability `protobuf:"bytes,79,opt,name=acl_capability,json=aclCapability,proto3,oneof" json:"acl_capability,omitempty"` - McastSnoopingCapability *SwitchMcastSnoopingCapability `protobuf:"varint,80,opt,name=mcast_snooping_capability,json=mcastSnoopingCapability,proto3,enum=lemming.dataplane.sai.SwitchMcastSnoopingCapability,oneof" json:"mcast_snooping_capability,omitempty"` - SwitchingMode *SwitchSwitchingMode `protobuf:"varint,81,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` - BcastCpuFloodEnable *bool `protobuf:"varint,82,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` - McastCpuFloodEnable *bool `protobuf:"varint,83,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` - SrcMacAddress []byte `protobuf:"bytes,84,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` - MaxLearnedAddresses *uint32 `protobuf:"varint,85,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` - FdbAgingTime *uint32 `protobuf:"varint,86,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` - FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,87,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` - FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,88,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` - FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,89,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` - EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,90,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` - EcmpDefaultHashSeed *uint32 `protobuf:"varint,91,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` - EcmpDefaultHashOffset *uint32 `protobuf:"varint,92,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` - EcmpDefaultSymmetricHash *bool `protobuf:"varint,93,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` - EcmpHashIpv4 *uint64 `protobuf:"varint,94,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` - EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,95,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` - EcmpHashIpv6 *uint64 `protobuf:"varint,96,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` - LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,97,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` - LagDefaultHashSeed *uint32 `protobuf:"varint,98,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` - LagDefaultHashOffset *uint32 `protobuf:"varint,99,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` - LagDefaultSymmetricHash *bool `protobuf:"varint,100,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` - LagHashIpv4 *uint64 `protobuf:"varint,101,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` - LagHashIpv4InIpv4 *uint64 `protobuf:"varint,102,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` - LagHashIpv6 *uint64 `protobuf:"varint,103,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` - CounterRefreshInterval *uint32 `protobuf:"varint,104,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` - QosDefaultTc *uint32 `protobuf:"varint,105,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` - QosDot1PToTcMap *uint64 `protobuf:"varint,106,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` - QosDot1PToColorMap *uint64 `protobuf:"varint,107,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` - QosDscpToTcMap *uint64 `protobuf:"varint,108,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` - QosDscpToColorMap *uint64 `protobuf:"varint,109,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` - QosTcToQueueMap *uint64 `protobuf:"varint,110,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` - QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,111,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` - QosTcAndColorToDscpMap *uint64 `protobuf:"varint,112,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` - SwitchShellEnable *bool `protobuf:"varint,113,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` - SwitchProfileId *uint32 `protobuf:"varint,114,opt,name=switch_profile_id,json=switchProfileId,proto3,oneof" json:"switch_profile_id,omitempty"` - SwitchHardwareInfo []int32 `protobuf:"varint,115,rep,packed,name=switch_hardware_info,json=switchHardwareInfo,proto3" json:"switch_hardware_info,omitempty"` - FirmwarePathName []int32 `protobuf:"varint,116,rep,packed,name=firmware_path_name,json=firmwarePathName,proto3" json:"firmware_path_name,omitempty"` - InitSwitch *bool `protobuf:"varint,117,opt,name=init_switch,json=initSwitch,proto3,oneof" json:"init_switch,omitempty"` - FastApiEnable *bool `protobuf:"varint,118,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` - MirrorTc *uint32 `protobuf:"varint,119,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` - AclStageIngress *ACLCapability `protobuf:"bytes,120,opt,name=acl_stage_ingress,json=aclStageIngress,proto3,oneof" json:"acl_stage_ingress,omitempty"` - AclStageEgress *ACLCapability `protobuf:"bytes,121,opt,name=acl_stage_egress,json=aclStageEgress,proto3,oneof" json:"acl_stage_egress,omitempty"` - Srv6MaxSidDepth *uint32 `protobuf:"varint,122,opt,name=srv6_max_sid_depth,json=srv6MaxSidDepth,proto3,oneof" json:"srv6_max_sid_depth,omitempty"` - Srv6TlvType []TlvType `protobuf:"varint,123,rep,packed,name=srv6_tlv_type,json=srv6TlvType,proto3,enum=lemming.dataplane.sai.TlvType" json:"srv6_tlv_type,omitempty"` - QosNumLosslessQueues *uint32 `protobuf:"varint,124,opt,name=qos_num_lossless_queues,json=qosNumLosslessQueues,proto3,oneof" json:"qos_num_lossless_queues,omitempty"` - PfcDlrPacketAction *PacketAction `protobuf:"varint,125,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` - PfcTcDldIntervalRange *Uint32Range `protobuf:"bytes,126,opt,name=pfc_tc_dld_interval_range,json=pfcTcDldIntervalRange,proto3,oneof" json:"pfc_tc_dld_interval_range,omitempty"` - PfcTcDldInterval []*UintMap `protobuf:"bytes,127,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` - PfcTcDlrIntervalRange *Uint32Range `protobuf:"bytes,128,opt,name=pfc_tc_dlr_interval_range,json=pfcTcDlrIntervalRange,proto3,oneof" json:"pfc_tc_dlr_interval_range,omitempty"` - PfcTcDlrInterval []*UintMap `protobuf:"bytes,129,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` - SupportedProtectedObjectType []ObjectType `protobuf:"varint,130,rep,packed,name=supported_protected_object_type,json=supportedProtectedObjectType,proto3,enum=lemming.dataplane.sai.ObjectType" json:"supported_protected_object_type,omitempty"` - TpidOuterVlan *uint32 `protobuf:"varint,131,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` - TpidInnerVlan *uint32 `protobuf:"varint,132,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` - CrcCheckEnable *bool `protobuf:"varint,133,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` - CrcRecalculationEnable *bool `protobuf:"varint,134,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` - NumberOfBfdSession *uint32 `protobuf:"varint,135,opt,name=number_of_bfd_session,json=numberOfBfdSession,proto3,oneof" json:"number_of_bfd_session,omitempty"` - MaxBfdSession *uint32 `protobuf:"varint,136,opt,name=max_bfd_session,json=maxBfdSession,proto3,oneof" json:"max_bfd_session,omitempty"` - SupportedIpv4BfdSessionOffloadType []BfdSessionOffloadType `protobuf:"varint,137,rep,packed,name=supported_ipv4_bfd_session_offload_type,json=supportedIpv4BfdSessionOffloadType,proto3,enum=lemming.dataplane.sai.BfdSessionOffloadType" json:"supported_ipv4_bfd_session_offload_type,omitempty"` - SupportedIpv6BfdSessionOffloadType []BfdSessionOffloadType `protobuf:"varint,138,rep,packed,name=supported_ipv6_bfd_session_offload_type,json=supportedIpv6BfdSessionOffloadType,proto3,enum=lemming.dataplane.sai.BfdSessionOffloadType" json:"supported_ipv6_bfd_session_offload_type,omitempty"` - MinBfdRx *uint32 `protobuf:"varint,139,opt,name=min_bfd_rx,json=minBfdRx,proto3,oneof" json:"min_bfd_rx,omitempty"` - MinBfdTx *uint32 `protobuf:"varint,140,opt,name=min_bfd_tx,json=minBfdTx,proto3,oneof" json:"min_bfd_tx,omitempty"` - EcnEctThresholdEnable *bool `protobuf:"varint,141,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` - VxlanDefaultRouterMac []byte `protobuf:"bytes,142,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` - VxlanDefaultPort *uint32 `protobuf:"varint,143,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` - MaxMirrorSession *uint32 `protobuf:"varint,144,opt,name=max_mirror_session,json=maxMirrorSession,proto3,oneof" json:"max_mirror_session,omitempty"` - MaxSampledMirrorSession *uint32 `protobuf:"varint,145,opt,name=max_sampled_mirror_session,json=maxSampledMirrorSession,proto3,oneof" json:"max_sampled_mirror_session,omitempty"` - SupportedExtendedStatsMode []StatsMode `protobuf:"varint,146,rep,packed,name=supported_extended_stats_mode,json=supportedExtendedStatsMode,proto3,enum=lemming.dataplane.sai.StatsMode" json:"supported_extended_stats_mode,omitempty"` - UninitDataPlaneOnRemoval *bool `protobuf:"varint,147,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` - TamObjectId []uint64 `protobuf:"varint,148,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` - SupportedObjectTypeList []ObjectType `protobuf:"varint,149,rep,packed,name=supported_object_type_list,json=supportedObjectTypeList,proto3,enum=lemming.dataplane.sai.ObjectType" json:"supported_object_type_list,omitempty"` - PreShutdown *bool `protobuf:"varint,150,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` - NatZoneCounterObjectId *uint64 `protobuf:"varint,151,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` - NatEnable *bool `protobuf:"varint,152,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` - HardwareAccessBus *SwitchHardwareAccessBus `protobuf:"varint,153,opt,name=hardware_access_bus,json=hardwareAccessBus,proto3,enum=lemming.dataplane.sai.SwitchHardwareAccessBus,oneof" json:"hardware_access_bus,omitempty"` - PlatfromContext *uint64 `protobuf:"varint,154,opt,name=platfrom_context,json=platfromContext,proto3,oneof" json:"platfrom_context,omitempty"` - FirmwareDownloadBroadcast *bool `protobuf:"varint,155,opt,name=firmware_download_broadcast,json=firmwareDownloadBroadcast,proto3,oneof" json:"firmware_download_broadcast,omitempty"` - FirmwareLoadMethod *SwitchFirmwareLoadMethod `protobuf:"varint,156,opt,name=firmware_load_method,json=firmwareLoadMethod,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadMethod,oneof" json:"firmware_load_method,omitempty"` - FirmwareLoadType *SwitchFirmwareLoadType `protobuf:"varint,157,opt,name=firmware_load_type,json=firmwareLoadType,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadType,oneof" json:"firmware_load_type,omitempty"` - FirmwareDownloadExecute *bool `protobuf:"varint,158,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` - FirmwareBroadcastStop *bool `protobuf:"varint,159,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` - FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,160,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` - FirmwareStatus *bool `protobuf:"varint,161,opt,name=firmware_status,json=firmwareStatus,proto3,oneof" json:"firmware_status,omitempty"` - FirmwareMajorVersion *uint32 `protobuf:"varint,162,opt,name=firmware_major_version,json=firmwareMajorVersion,proto3,oneof" json:"firmware_major_version,omitempty"` - FirmwareMinorVersion *uint32 `protobuf:"varint,163,opt,name=firmware_minor_version,json=firmwareMinorVersion,proto3,oneof" json:"firmware_minor_version,omitempty"` - PortConnectorList []uint64 `protobuf:"varint,164,rep,packed,name=port_connector_list,json=portConnectorList,proto3" json:"port_connector_list,omitempty"` - PropogatePortStateFromLineToSystemPortSupport *bool `protobuf:"varint,165,opt,name=propogate_port_state_from_line_to_system_port_support,json=propogatePortStateFromLineToSystemPortSupport,proto3,oneof" json:"propogate_port_state_from_line_to_system_port_support,omitempty"` - Type *SwitchType `protobuf:"varint,166,opt,name=type,proto3,enum=lemming.dataplane.sai.SwitchType,oneof" json:"type,omitempty"` - MacsecObjectList []uint64 `protobuf:"varint,167,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` - QosMplsExpToTcMap *uint64 `protobuf:"varint,168,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` - QosMplsExpToColorMap *uint64 `protobuf:"varint,169,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` - QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,170,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` - SwitchId *uint32 `protobuf:"varint,171,opt,name=switch_id,json=switchId,proto3,oneof" json:"switch_id,omitempty"` - MaxSystemCores *uint32 `protobuf:"varint,172,opt,name=max_system_cores,json=maxSystemCores,proto3,oneof" json:"max_system_cores,omitempty"` - SystemPortConfigList []*SystemPortConfig `protobuf:"bytes,173,rep,name=system_port_config_list,json=systemPortConfigList,proto3" json:"system_port_config_list,omitempty"` - NumberOfSystemPorts *uint32 `protobuf:"varint,174,opt,name=number_of_system_ports,json=numberOfSystemPorts,proto3,oneof" json:"number_of_system_ports,omitempty"` - SystemPortList []uint64 `protobuf:"varint,175,rep,packed,name=system_port_list,json=systemPortList,proto3" json:"system_port_list,omitempty"` - NumberOfFabricPorts *uint32 `protobuf:"varint,176,opt,name=number_of_fabric_ports,json=numberOfFabricPorts,proto3,oneof" json:"number_of_fabric_ports,omitempty"` - FabricPortList []uint64 `protobuf:"varint,177,rep,packed,name=fabric_port_list,json=fabricPortList,proto3" json:"fabric_port_list,omitempty"` - PacketDmaMemoryPoolSize *uint32 `protobuf:"varint,178,opt,name=packet_dma_memory_pool_size,json=packetDmaMemoryPoolSize,proto3,oneof" json:"packet_dma_memory_pool_size,omitempty"` - FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,179,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` - SupportedFailoverMode *bool `protobuf:"varint,180,opt,name=supported_failover_mode,json=supportedFailoverMode,proto3,oneof" json:"supported_failover_mode,omitempty"` - TunnelObjectsList []uint64 `protobuf:"varint,181,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` - PacketAvailableDmaMemoryPoolSize *uint32 `protobuf:"varint,182,opt,name=packet_available_dma_memory_pool_size,json=packetAvailableDmaMemoryPoolSize,proto3,oneof" json:"packet_available_dma_memory_pool_size,omitempty"` - PreIngressAcl *uint64 `protobuf:"varint,183,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` - AvailableSnaptEntry *uint32 `protobuf:"varint,184,opt,name=available_snapt_entry,json=availableSnaptEntry,proto3,oneof" json:"available_snapt_entry,omitempty"` - AvailableDnaptEntry *uint32 `protobuf:"varint,185,opt,name=available_dnapt_entry,json=availableDnaptEntry,proto3,oneof" json:"available_dnapt_entry,omitempty"` - AvailableDoubleNaptEntry *uint32 `protobuf:"varint,186,opt,name=available_double_napt_entry,json=availableDoubleNaptEntry,proto3,oneof" json:"available_double_napt_entry,omitempty"` - SlaveMdioAddrList []uint32 `protobuf:"varint,187,rep,packed,name=slave_mdio_addr_list,json=slaveMdioAddrList,proto3" json:"slave_mdio_addr_list,omitempty"` - MyMacTableMinimumPriority *uint32 `protobuf:"varint,188,opt,name=my_mac_table_minimum_priority,json=myMacTableMinimumPriority,proto3,oneof" json:"my_mac_table_minimum_priority,omitempty"` - MyMacTableMaximumPriority *uint32 `protobuf:"varint,189,opt,name=my_mac_table_maximum_priority,json=myMacTableMaximumPriority,proto3,oneof" json:"my_mac_table_maximum_priority,omitempty"` - MyMacList []uint64 `protobuf:"varint,190,rep,packed,name=my_mac_list,json=myMacList,proto3" json:"my_mac_list,omitempty"` - InstalledMyMacEntries *uint32 `protobuf:"varint,191,opt,name=installed_my_mac_entries,json=installedMyMacEntries,proto3,oneof" json:"installed_my_mac_entries,omitempty"` - AvailableMyMacEntries *uint32 `protobuf:"varint,192,opt,name=available_my_mac_entries,json=availableMyMacEntries,proto3,oneof" json:"available_my_mac_entries,omitempty"` - MaxNumberOfForwardingClasses *uint32 `protobuf:"varint,193,opt,name=max_number_of_forwarding_classes,json=maxNumberOfForwardingClasses,proto3,oneof" json:"max_number_of_forwarding_classes,omitempty"` - QosDscpToForwardingClassMap *uint64 `protobuf:"varint,194,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` - QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,195,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` - IpsecObjectId *uint64 `protobuf:"varint,196,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` - IpsecSaTagTpid *uint32 `protobuf:"varint,197,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` - MaxEcmpMemberCount *uint32 `protobuf:"varint,198,opt,name=max_ecmp_member_count,json=maxEcmpMemberCount,proto3,oneof" json:"max_ecmp_member_count,omitempty"` - EcmpMemberCount *uint32 `protobuf:"varint,199,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + NumberOfActivePorts *uint32 `protobuf:"varint,1,opt,name=number_of_active_ports,json=numberOfActivePorts,proto3,oneof" json:"number_of_active_ports,omitempty"` + MaxNumberOfSupportedPorts *uint32 `protobuf:"varint,2,opt,name=max_number_of_supported_ports,json=maxNumberOfSupportedPorts,proto3,oneof" json:"max_number_of_supported_ports,omitempty"` + PortList []uint64 `protobuf:"varint,3,rep,packed,name=port_list,json=portList,proto3" json:"port_list,omitempty"` + PortMaxMtu *uint32 `protobuf:"varint,4,opt,name=port_max_mtu,json=portMaxMtu,proto3,oneof" json:"port_max_mtu,omitempty"` + CpuPort *uint64 `protobuf:"varint,5,opt,name=cpu_port,json=cpuPort,proto3,oneof" json:"cpu_port,omitempty"` + MaxVirtualRouters *uint32 `protobuf:"varint,6,opt,name=max_virtual_routers,json=maxVirtualRouters,proto3,oneof" json:"max_virtual_routers,omitempty"` + FdbTableSize *uint32 `protobuf:"varint,7,opt,name=fdb_table_size,json=fdbTableSize,proto3,oneof" json:"fdb_table_size,omitempty"` + L3NeighborTableSize *uint32 `protobuf:"varint,8,opt,name=l3_neighbor_table_size,json=l3NeighborTableSize,proto3,oneof" json:"l3_neighbor_table_size,omitempty"` + L3RouteTableSize *uint32 `protobuf:"varint,9,opt,name=l3_route_table_size,json=l3RouteTableSize,proto3,oneof" json:"l3_route_table_size,omitempty"` + LagMembers *uint32 `protobuf:"varint,10,opt,name=lag_members,json=lagMembers,proto3,oneof" json:"lag_members,omitempty"` + NumberOfLags *uint32 `protobuf:"varint,11,opt,name=number_of_lags,json=numberOfLags,proto3,oneof" json:"number_of_lags,omitempty"` + EcmpMembers *uint32 `protobuf:"varint,12,opt,name=ecmp_members,json=ecmpMembers,proto3,oneof" json:"ecmp_members,omitempty"` + NumberOfEcmpGroups *uint32 `protobuf:"varint,13,opt,name=number_of_ecmp_groups,json=numberOfEcmpGroups,proto3,oneof" json:"number_of_ecmp_groups,omitempty"` + NumberOfUnicastQueues *uint32 `protobuf:"varint,14,opt,name=number_of_unicast_queues,json=numberOfUnicastQueues,proto3,oneof" json:"number_of_unicast_queues,omitempty"` + NumberOfMulticastQueues *uint32 `protobuf:"varint,15,opt,name=number_of_multicast_queues,json=numberOfMulticastQueues,proto3,oneof" json:"number_of_multicast_queues,omitempty"` + NumberOfQueues *uint32 `protobuf:"varint,16,opt,name=number_of_queues,json=numberOfQueues,proto3,oneof" json:"number_of_queues,omitempty"` + NumberOfCpuQueues *uint32 `protobuf:"varint,17,opt,name=number_of_cpu_queues,json=numberOfCpuQueues,proto3,oneof" json:"number_of_cpu_queues,omitempty"` + OnLinkRouteSupported *bool `protobuf:"varint,18,opt,name=on_link_route_supported,json=onLinkRouteSupported,proto3,oneof" json:"on_link_route_supported,omitempty"` + OperStatus *SwitchOperStatus `protobuf:"varint,19,opt,name=oper_status,json=operStatus,proto3,enum=lemming.dataplane.sai.SwitchOperStatus,oneof" json:"oper_status,omitempty"` + MaxNumberOfTempSensors *uint32 `protobuf:"varint,20,opt,name=max_number_of_temp_sensors,json=maxNumberOfTempSensors,proto3,oneof" json:"max_number_of_temp_sensors,omitempty"` + TempList []int32 `protobuf:"varint,21,rep,packed,name=temp_list,json=tempList,proto3" json:"temp_list,omitempty"` + MaxTemp *uint32 `protobuf:"varint,22,opt,name=max_temp,json=maxTemp,proto3,oneof" json:"max_temp,omitempty"` + AverageTemp *uint32 `protobuf:"varint,23,opt,name=average_temp,json=averageTemp,proto3,oneof" json:"average_temp,omitempty"` + AclTableMinimumPriority *uint32 `protobuf:"varint,24,opt,name=acl_table_minimum_priority,json=aclTableMinimumPriority,proto3,oneof" json:"acl_table_minimum_priority,omitempty"` + AclTableMaximumPriority *uint32 `protobuf:"varint,25,opt,name=acl_table_maximum_priority,json=aclTableMaximumPriority,proto3,oneof" json:"acl_table_maximum_priority,omitempty"` + AclEntryMinimumPriority *uint32 `protobuf:"varint,26,opt,name=acl_entry_minimum_priority,json=aclEntryMinimumPriority,proto3,oneof" json:"acl_entry_minimum_priority,omitempty"` + AclEntryMaximumPriority *uint32 `protobuf:"varint,27,opt,name=acl_entry_maximum_priority,json=aclEntryMaximumPriority,proto3,oneof" json:"acl_entry_maximum_priority,omitempty"` + AclTableGroupMinimumPriority *uint32 `protobuf:"varint,28,opt,name=acl_table_group_minimum_priority,json=aclTableGroupMinimumPriority,proto3,oneof" json:"acl_table_group_minimum_priority,omitempty"` + AclTableGroupMaximumPriority *uint32 `protobuf:"varint,29,opt,name=acl_table_group_maximum_priority,json=aclTableGroupMaximumPriority,proto3,oneof" json:"acl_table_group_maximum_priority,omitempty"` + FdbDstUserMetaDataRange *Uint32Range `protobuf:"bytes,30,opt,name=fdb_dst_user_meta_data_range,json=fdbDstUserMetaDataRange,proto3,oneof" json:"fdb_dst_user_meta_data_range,omitempty"` + RouteDstUserMetaDataRange *Uint32Range `protobuf:"bytes,31,opt,name=route_dst_user_meta_data_range,json=routeDstUserMetaDataRange,proto3,oneof" json:"route_dst_user_meta_data_range,omitempty"` + NeighborDstUserMetaDataRange *Uint32Range `protobuf:"bytes,32,opt,name=neighbor_dst_user_meta_data_range,json=neighborDstUserMetaDataRange,proto3,oneof" json:"neighbor_dst_user_meta_data_range,omitempty"` + PortUserMetaDataRange *Uint32Range `protobuf:"bytes,33,opt,name=port_user_meta_data_range,json=portUserMetaDataRange,proto3,oneof" json:"port_user_meta_data_range,omitempty"` + VlanUserMetaDataRange *Uint32Range `protobuf:"bytes,34,opt,name=vlan_user_meta_data_range,json=vlanUserMetaDataRange,proto3,oneof" json:"vlan_user_meta_data_range,omitempty"` + AclUserMetaDataRange *Uint32Range `protobuf:"bytes,35,opt,name=acl_user_meta_data_range,json=aclUserMetaDataRange,proto3,oneof" json:"acl_user_meta_data_range,omitempty"` + AclUserTrapIdRange *Uint32Range `protobuf:"bytes,36,opt,name=acl_user_trap_id_range,json=aclUserTrapIdRange,proto3,oneof" json:"acl_user_trap_id_range,omitempty"` + DefaultVlanId *uint64 `protobuf:"varint,37,opt,name=default_vlan_id,json=defaultVlanId,proto3,oneof" json:"default_vlan_id,omitempty"` + DefaultStpInstId *uint64 `protobuf:"varint,38,opt,name=default_stp_inst_id,json=defaultStpInstId,proto3,oneof" json:"default_stp_inst_id,omitempty"` + MaxStpInstance *uint32 `protobuf:"varint,39,opt,name=max_stp_instance,json=maxStpInstance,proto3,oneof" json:"max_stp_instance,omitempty"` + DefaultVirtualRouterId *uint64 `protobuf:"varint,40,opt,name=default_virtual_router_id,json=defaultVirtualRouterId,proto3,oneof" json:"default_virtual_router_id,omitempty"` + DefaultOverrideVirtualRouterId *uint64 `protobuf:"varint,41,opt,name=default_override_virtual_router_id,json=defaultOverrideVirtualRouterId,proto3,oneof" json:"default_override_virtual_router_id,omitempty"` + Default_1QBridgeId *uint64 `protobuf:"varint,42,opt,name=default_1q_bridge_id,json=default1qBridgeId,proto3,oneof" json:"default_1q_bridge_id,omitempty"` + IngressAcl *uint64 `protobuf:"varint,43,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` + EgressAcl *uint64 `protobuf:"varint,44,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` + QosMaxNumberOfTrafficClasses *uint32 `protobuf:"varint,45,opt,name=qos_max_number_of_traffic_classes,json=qosMaxNumberOfTrafficClasses,proto3,oneof" json:"qos_max_number_of_traffic_classes,omitempty"` + QosMaxNumberOfSchedulerGroupHierarchyLevels *uint32 `protobuf:"varint,46,opt,name=qos_max_number_of_scheduler_group_hierarchy_levels,json=qosMaxNumberOfSchedulerGroupHierarchyLevels,proto3,oneof" json:"qos_max_number_of_scheduler_group_hierarchy_levels,omitempty"` + QosMaxNumberOfSchedulerGroupsPerHierarchyLevel []uint32 `protobuf:"varint,47,rep,packed,name=qos_max_number_of_scheduler_groups_per_hierarchy_level,json=qosMaxNumberOfSchedulerGroupsPerHierarchyLevel,proto3" json:"qos_max_number_of_scheduler_groups_per_hierarchy_level,omitempty"` + QosMaxNumberOfChildsPerSchedulerGroup *uint32 `protobuf:"varint,48,opt,name=qos_max_number_of_childs_per_scheduler_group,json=qosMaxNumberOfChildsPerSchedulerGroup,proto3,oneof" json:"qos_max_number_of_childs_per_scheduler_group,omitempty"` + TotalBufferSize *uint64 `protobuf:"varint,49,opt,name=total_buffer_size,json=totalBufferSize,proto3,oneof" json:"total_buffer_size,omitempty"` + IngressBufferPoolNum *uint32 `protobuf:"varint,50,opt,name=ingress_buffer_pool_num,json=ingressBufferPoolNum,proto3,oneof" json:"ingress_buffer_pool_num,omitempty"` + EgressBufferPoolNum *uint32 `protobuf:"varint,51,opt,name=egress_buffer_pool_num,json=egressBufferPoolNum,proto3,oneof" json:"egress_buffer_pool_num,omitempty"` + AvailableIpv4RouteEntry *uint32 `protobuf:"varint,52,opt,name=available_ipv4_route_entry,json=availableIpv4RouteEntry,proto3,oneof" json:"available_ipv4_route_entry,omitempty"` + AvailableIpv6RouteEntry *uint32 `protobuf:"varint,53,opt,name=available_ipv6_route_entry,json=availableIpv6RouteEntry,proto3,oneof" json:"available_ipv6_route_entry,omitempty"` + AvailableIpv4NexthopEntry *uint32 `protobuf:"varint,54,opt,name=available_ipv4_nexthop_entry,json=availableIpv4NexthopEntry,proto3,oneof" json:"available_ipv4_nexthop_entry,omitempty"` + AvailableIpv6NexthopEntry *uint32 `protobuf:"varint,55,opt,name=available_ipv6_nexthop_entry,json=availableIpv6NexthopEntry,proto3,oneof" json:"available_ipv6_nexthop_entry,omitempty"` + AvailableIpv4NeighborEntry *uint32 `protobuf:"varint,56,opt,name=available_ipv4_neighbor_entry,json=availableIpv4NeighborEntry,proto3,oneof" json:"available_ipv4_neighbor_entry,omitempty"` + AvailableIpv6NeighborEntry *uint32 `protobuf:"varint,57,opt,name=available_ipv6_neighbor_entry,json=availableIpv6NeighborEntry,proto3,oneof" json:"available_ipv6_neighbor_entry,omitempty"` + AvailableNextHopGroupEntry *uint32 `protobuf:"varint,58,opt,name=available_next_hop_group_entry,json=availableNextHopGroupEntry,proto3,oneof" json:"available_next_hop_group_entry,omitempty"` + AvailableNextHopGroupMemberEntry *uint32 `protobuf:"varint,59,opt,name=available_next_hop_group_member_entry,json=availableNextHopGroupMemberEntry,proto3,oneof" json:"available_next_hop_group_member_entry,omitempty"` + AvailableFdbEntry *uint32 `protobuf:"varint,60,opt,name=available_fdb_entry,json=availableFdbEntry,proto3,oneof" json:"available_fdb_entry,omitempty"` + AvailableL2McEntry *uint32 `protobuf:"varint,61,opt,name=available_l2mc_entry,json=availableL2mcEntry,proto3,oneof" json:"available_l2mc_entry,omitempty"` + AvailableIpmcEntry *uint32 `protobuf:"varint,62,opt,name=available_ipmc_entry,json=availableIpmcEntry,proto3,oneof" json:"available_ipmc_entry,omitempty"` + AvailableSnatEntry *uint32 `protobuf:"varint,63,opt,name=available_snat_entry,json=availableSnatEntry,proto3,oneof" json:"available_snat_entry,omitempty"` + AvailableDnatEntry *uint32 `protobuf:"varint,64,opt,name=available_dnat_entry,json=availableDnatEntry,proto3,oneof" json:"available_dnat_entry,omitempty"` + AvailableDoubleNatEntry *uint32 `protobuf:"varint,65,opt,name=available_double_nat_entry,json=availableDoubleNatEntry,proto3,oneof" json:"available_double_nat_entry,omitempty"` + AvailableAclTable []*ACLResource `protobuf:"bytes,66,rep,name=available_acl_table,json=availableAclTable,proto3" json:"available_acl_table,omitempty"` + AvailableAclTableGroup []*ACLResource `protobuf:"bytes,67,rep,name=available_acl_table_group,json=availableAclTableGroup,proto3" json:"available_acl_table_group,omitempty"` + AvailableMySidEntry *uint32 `protobuf:"varint,68,opt,name=available_my_sid_entry,json=availableMySidEntry,proto3,oneof" json:"available_my_sid_entry,omitempty"` + DefaultTrapGroup *uint64 `protobuf:"varint,69,opt,name=default_trap_group,json=defaultTrapGroup,proto3,oneof" json:"default_trap_group,omitempty"` + EcmpHash *uint64 `protobuf:"varint,70,opt,name=ecmp_hash,json=ecmpHash,proto3,oneof" json:"ecmp_hash,omitempty"` + LagHash *uint64 `protobuf:"varint,71,opt,name=lag_hash,json=lagHash,proto3,oneof" json:"lag_hash,omitempty"` + RestartWarm *bool `protobuf:"varint,72,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` + WarmRecover *bool `protobuf:"varint,73,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` + RestartType *SwitchRestartType `protobuf:"varint,74,opt,name=restart_type,json=restartType,proto3,enum=lemming.dataplane.sai.SwitchRestartType,oneof" json:"restart_type,omitempty"` + MinPlannedRestartInterval *uint32 `protobuf:"varint,75,opt,name=min_planned_restart_interval,json=minPlannedRestartInterval,proto3,oneof" json:"min_planned_restart_interval,omitempty"` + NvStorageSize *uint64 `protobuf:"varint,76,opt,name=nv_storage_size,json=nvStorageSize,proto3,oneof" json:"nv_storage_size,omitempty"` + MaxAclActionCount *uint32 `protobuf:"varint,77,opt,name=max_acl_action_count,json=maxAclActionCount,proto3,oneof" json:"max_acl_action_count,omitempty"` + MaxAclRangeCount *uint32 `protobuf:"varint,78,opt,name=max_acl_range_count,json=maxAclRangeCount,proto3,oneof" json:"max_acl_range_count,omitempty"` + AclCapability *ACLCapability `protobuf:"bytes,79,opt,name=acl_capability,json=aclCapability,proto3,oneof" json:"acl_capability,omitempty"` + McastSnoopingCapability *SwitchMcastSnoopingCapability `protobuf:"varint,80,opt,name=mcast_snooping_capability,json=mcastSnoopingCapability,proto3,enum=lemming.dataplane.sai.SwitchMcastSnoopingCapability,oneof" json:"mcast_snooping_capability,omitempty"` + SwitchingMode *SwitchSwitchingMode `protobuf:"varint,81,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` + BcastCpuFloodEnable *bool `protobuf:"varint,82,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` + McastCpuFloodEnable *bool `protobuf:"varint,83,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,84,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + MaxLearnedAddresses *uint32 `protobuf:"varint,85,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` + FdbAgingTime *uint32 `protobuf:"varint,86,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` + FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,87,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` + FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,88,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` + FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,89,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` + EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,90,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` + EcmpDefaultHashSeed *uint32 `protobuf:"varint,91,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` + EcmpDefaultHashOffset *uint32 `protobuf:"varint,92,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` + EcmpDefaultSymmetricHash *bool `protobuf:"varint,93,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` + EcmpHashIpv4 *uint64 `protobuf:"varint,94,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` + EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,95,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` + EcmpHashIpv6 *uint64 `protobuf:"varint,96,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` + LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,97,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` + LagDefaultHashSeed *uint32 `protobuf:"varint,98,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` + LagDefaultHashOffset *uint32 `protobuf:"varint,99,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` + LagDefaultSymmetricHash *bool `protobuf:"varint,100,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` + LagHashIpv4 *uint64 `protobuf:"varint,101,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` + LagHashIpv4InIpv4 *uint64 `protobuf:"varint,102,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` + LagHashIpv6 *uint64 `protobuf:"varint,103,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` + CounterRefreshInterval *uint32 `protobuf:"varint,104,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` + QosDefaultTc *uint32 `protobuf:"varint,105,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` + QosDot1PToTcMap *uint64 `protobuf:"varint,106,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` + QosDot1PToColorMap *uint64 `protobuf:"varint,107,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` + QosDscpToTcMap *uint64 `protobuf:"varint,108,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` + QosDscpToColorMap *uint64 `protobuf:"varint,109,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` + QosTcToQueueMap *uint64 `protobuf:"varint,110,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` + QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,111,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` + QosTcAndColorToDscpMap *uint64 `protobuf:"varint,112,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` + SwitchShellEnable *bool `protobuf:"varint,113,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` + SwitchProfileId *uint32 `protobuf:"varint,114,opt,name=switch_profile_id,json=switchProfileId,proto3,oneof" json:"switch_profile_id,omitempty"` + SwitchHardwareInfo []int32 `protobuf:"varint,115,rep,packed,name=switch_hardware_info,json=switchHardwareInfo,proto3" json:"switch_hardware_info,omitempty"` + FirmwarePathName []int32 `protobuf:"varint,116,rep,packed,name=firmware_path_name,json=firmwarePathName,proto3" json:"firmware_path_name,omitempty"` + InitSwitch *bool `protobuf:"varint,117,opt,name=init_switch,json=initSwitch,proto3,oneof" json:"init_switch,omitempty"` + FastApiEnable *bool `protobuf:"varint,118,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` + MirrorTc *uint32 `protobuf:"varint,119,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` + AclStageIngress *ACLCapability `protobuf:"bytes,120,opt,name=acl_stage_ingress,json=aclStageIngress,proto3,oneof" json:"acl_stage_ingress,omitempty"` + AclStageEgress *ACLCapability `protobuf:"bytes,121,opt,name=acl_stage_egress,json=aclStageEgress,proto3,oneof" json:"acl_stage_egress,omitempty"` + Srv6MaxSidDepth *uint32 `protobuf:"varint,122,opt,name=srv6_max_sid_depth,json=srv6MaxSidDepth,proto3,oneof" json:"srv6_max_sid_depth,omitempty"` + Srv6TlvType []TlvType `protobuf:"varint,123,rep,packed,name=srv6_tlv_type,json=srv6TlvType,proto3,enum=lemming.dataplane.sai.TlvType" json:"srv6_tlv_type,omitempty"` + QosNumLosslessQueues *uint32 `protobuf:"varint,124,opt,name=qos_num_lossless_queues,json=qosNumLosslessQueues,proto3,oneof" json:"qos_num_lossless_queues,omitempty"` + PfcDlrPacketAction *PacketAction `protobuf:"varint,125,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` + PfcTcDldIntervalRange *Uint32Range `protobuf:"bytes,126,opt,name=pfc_tc_dld_interval_range,json=pfcTcDldIntervalRange,proto3,oneof" json:"pfc_tc_dld_interval_range,omitempty"` + PfcTcDldInterval []*UintMap `protobuf:"bytes,127,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` + PfcTcDlrIntervalRange *Uint32Range `protobuf:"bytes,128,opt,name=pfc_tc_dlr_interval_range,json=pfcTcDlrIntervalRange,proto3,oneof" json:"pfc_tc_dlr_interval_range,omitempty"` + PfcTcDlrInterval []*UintMap `protobuf:"bytes,129,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` + SupportedProtectedObjectType []ObjectType `protobuf:"varint,130,rep,packed,name=supported_protected_object_type,json=supportedProtectedObjectType,proto3,enum=lemming.dataplane.sai.ObjectType" json:"supported_protected_object_type,omitempty"` + TpidOuterVlan *uint32 `protobuf:"varint,131,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` + TpidInnerVlan *uint32 `protobuf:"varint,132,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` + CrcCheckEnable *bool `protobuf:"varint,133,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` + CrcRecalculationEnable *bool `protobuf:"varint,134,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` + NumberOfBfdSession *uint32 `protobuf:"varint,135,opt,name=number_of_bfd_session,json=numberOfBfdSession,proto3,oneof" json:"number_of_bfd_session,omitempty"` + MaxBfdSession *uint32 `protobuf:"varint,136,opt,name=max_bfd_session,json=maxBfdSession,proto3,oneof" json:"max_bfd_session,omitempty"` + SupportedIpv4BfdSessionOffloadType []BfdSessionOffloadType `protobuf:"varint,137,rep,packed,name=supported_ipv4_bfd_session_offload_type,json=supportedIpv4BfdSessionOffloadType,proto3,enum=lemming.dataplane.sai.BfdSessionOffloadType" json:"supported_ipv4_bfd_session_offload_type,omitempty"` + SupportedIpv6BfdSessionOffloadType []BfdSessionOffloadType `protobuf:"varint,138,rep,packed,name=supported_ipv6_bfd_session_offload_type,json=supportedIpv6BfdSessionOffloadType,proto3,enum=lemming.dataplane.sai.BfdSessionOffloadType" json:"supported_ipv6_bfd_session_offload_type,omitempty"` + MinBfdRx *uint32 `protobuf:"varint,139,opt,name=min_bfd_rx,json=minBfdRx,proto3,oneof" json:"min_bfd_rx,omitempty"` + MinBfdTx *uint32 `protobuf:"varint,140,opt,name=min_bfd_tx,json=minBfdTx,proto3,oneof" json:"min_bfd_tx,omitempty"` + EcnEctThresholdEnable *bool `protobuf:"varint,141,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` + VxlanDefaultRouterMac []byte `protobuf:"bytes,142,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` + VxlanDefaultPort *uint32 `protobuf:"varint,143,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` + MaxMirrorSession *uint32 `protobuf:"varint,144,opt,name=max_mirror_session,json=maxMirrorSession,proto3,oneof" json:"max_mirror_session,omitempty"` + MaxSampledMirrorSession *uint32 `protobuf:"varint,145,opt,name=max_sampled_mirror_session,json=maxSampledMirrorSession,proto3,oneof" json:"max_sampled_mirror_session,omitempty"` + SupportedExtendedStatsMode []StatsMode `protobuf:"varint,146,rep,packed,name=supported_extended_stats_mode,json=supportedExtendedStatsMode,proto3,enum=lemming.dataplane.sai.StatsMode" json:"supported_extended_stats_mode,omitempty"` + UninitDataPlaneOnRemoval *bool `protobuf:"varint,147,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` + TamObjectId []uint64 `protobuf:"varint,148,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` + SupportedObjectTypeList []ObjectType `protobuf:"varint,149,rep,packed,name=supported_object_type_list,json=supportedObjectTypeList,proto3,enum=lemming.dataplane.sai.ObjectType" json:"supported_object_type_list,omitempty"` + PreShutdown *bool `protobuf:"varint,150,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` + NatZoneCounterObjectId *uint64 `protobuf:"varint,151,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` + NatEnable *bool `protobuf:"varint,152,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` + HardwareAccessBus *SwitchHardwareAccessBus `protobuf:"varint,153,opt,name=hardware_access_bus,json=hardwareAccessBus,proto3,enum=lemming.dataplane.sai.SwitchHardwareAccessBus,oneof" json:"hardware_access_bus,omitempty"` + PlatfromContext *uint64 `protobuf:"varint,154,opt,name=platfrom_context,json=platfromContext,proto3,oneof" json:"platfrom_context,omitempty"` + FirmwareDownloadBroadcast *bool `protobuf:"varint,155,opt,name=firmware_download_broadcast,json=firmwareDownloadBroadcast,proto3,oneof" json:"firmware_download_broadcast,omitempty"` + FirmwareLoadMethod *SwitchFirmwareLoadMethod `protobuf:"varint,156,opt,name=firmware_load_method,json=firmwareLoadMethod,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadMethod,oneof" json:"firmware_load_method,omitempty"` + FirmwareLoadType *SwitchFirmwareLoadType `protobuf:"varint,157,opt,name=firmware_load_type,json=firmwareLoadType,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadType,oneof" json:"firmware_load_type,omitempty"` + FirmwareDownloadExecute *bool `protobuf:"varint,158,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` + FirmwareBroadcastStop *bool `protobuf:"varint,159,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` + FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,160,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` + FirmwareStatus *bool `protobuf:"varint,161,opt,name=firmware_status,json=firmwareStatus,proto3,oneof" json:"firmware_status,omitempty"` + FirmwareMajorVersion *uint32 `protobuf:"varint,162,opt,name=firmware_major_version,json=firmwareMajorVersion,proto3,oneof" json:"firmware_major_version,omitempty"` + FirmwareMinorVersion *uint32 `protobuf:"varint,163,opt,name=firmware_minor_version,json=firmwareMinorVersion,proto3,oneof" json:"firmware_minor_version,omitempty"` + PortConnectorList []uint64 `protobuf:"varint,164,rep,packed,name=port_connector_list,json=portConnectorList,proto3" json:"port_connector_list,omitempty"` + PropogatePortStateFromLineToSystemPortSupport *bool `protobuf:"varint,165,opt,name=propogate_port_state_from_line_to_system_port_support,json=propogatePortStateFromLineToSystemPortSupport,proto3,oneof" json:"propogate_port_state_from_line_to_system_port_support,omitempty"` + Type *SwitchType `protobuf:"varint,166,opt,name=type,proto3,enum=lemming.dataplane.sai.SwitchType,oneof" json:"type,omitempty"` + MacsecObjectList []uint64 `protobuf:"varint,167,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` + QosMplsExpToTcMap *uint64 `protobuf:"varint,168,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` + QosMplsExpToColorMap *uint64 `protobuf:"varint,169,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` + QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,170,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + SwitchId *uint32 `protobuf:"varint,171,opt,name=switch_id,json=switchId,proto3,oneof" json:"switch_id,omitempty"` + MaxSystemCores *uint32 `protobuf:"varint,172,opt,name=max_system_cores,json=maxSystemCores,proto3,oneof" json:"max_system_cores,omitempty"` + SystemPortConfigList []*SystemPortConfig `protobuf:"bytes,173,rep,name=system_port_config_list,json=systemPortConfigList,proto3" json:"system_port_config_list,omitempty"` + NumberOfSystemPorts *uint32 `protobuf:"varint,174,opt,name=number_of_system_ports,json=numberOfSystemPorts,proto3,oneof" json:"number_of_system_ports,omitempty"` + SystemPortList []uint64 `protobuf:"varint,175,rep,packed,name=system_port_list,json=systemPortList,proto3" json:"system_port_list,omitempty"` + NumberOfFabricPorts *uint32 `protobuf:"varint,176,opt,name=number_of_fabric_ports,json=numberOfFabricPorts,proto3,oneof" json:"number_of_fabric_ports,omitempty"` + FabricPortList []uint64 `protobuf:"varint,177,rep,packed,name=fabric_port_list,json=fabricPortList,proto3" json:"fabric_port_list,omitempty"` + PacketDmaMemoryPoolSize *uint32 `protobuf:"varint,178,opt,name=packet_dma_memory_pool_size,json=packetDmaMemoryPoolSize,proto3,oneof" json:"packet_dma_memory_pool_size,omitempty"` + FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,179,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` + SupportedFailoverMode *bool `protobuf:"varint,180,opt,name=supported_failover_mode,json=supportedFailoverMode,proto3,oneof" json:"supported_failover_mode,omitempty"` + TunnelObjectsList []uint64 `protobuf:"varint,181,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` + PacketAvailableDmaMemoryPoolSize *uint32 `protobuf:"varint,182,opt,name=packet_available_dma_memory_pool_size,json=packetAvailableDmaMemoryPoolSize,proto3,oneof" json:"packet_available_dma_memory_pool_size,omitempty"` + PreIngressAcl *uint64 `protobuf:"varint,183,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` + AvailableSnaptEntry *uint32 `protobuf:"varint,184,opt,name=available_snapt_entry,json=availableSnaptEntry,proto3,oneof" json:"available_snapt_entry,omitempty"` + AvailableDnaptEntry *uint32 `protobuf:"varint,185,opt,name=available_dnapt_entry,json=availableDnaptEntry,proto3,oneof" json:"available_dnapt_entry,omitempty"` + AvailableDoubleNaptEntry *uint32 `protobuf:"varint,186,opt,name=available_double_napt_entry,json=availableDoubleNaptEntry,proto3,oneof" json:"available_double_napt_entry,omitempty"` + SlaveMdioAddrList []uint32 `protobuf:"varint,187,rep,packed,name=slave_mdio_addr_list,json=slaveMdioAddrList,proto3" json:"slave_mdio_addr_list,omitempty"` + MyMacTableMinimumPriority *uint32 `protobuf:"varint,188,opt,name=my_mac_table_minimum_priority,json=myMacTableMinimumPriority,proto3,oneof" json:"my_mac_table_minimum_priority,omitempty"` + MyMacTableMaximumPriority *uint32 `protobuf:"varint,189,opt,name=my_mac_table_maximum_priority,json=myMacTableMaximumPriority,proto3,oneof" json:"my_mac_table_maximum_priority,omitempty"` + MyMacList []uint64 `protobuf:"varint,190,rep,packed,name=my_mac_list,json=myMacList,proto3" json:"my_mac_list,omitempty"` + InstalledMyMacEntries *uint32 `protobuf:"varint,191,opt,name=installed_my_mac_entries,json=installedMyMacEntries,proto3,oneof" json:"installed_my_mac_entries,omitempty"` + AvailableMyMacEntries *uint32 `protobuf:"varint,192,opt,name=available_my_mac_entries,json=availableMyMacEntries,proto3,oneof" json:"available_my_mac_entries,omitempty"` + MaxNumberOfForwardingClasses *uint32 `protobuf:"varint,193,opt,name=max_number_of_forwarding_classes,json=maxNumberOfForwardingClasses,proto3,oneof" json:"max_number_of_forwarding_classes,omitempty"` + QosDscpToForwardingClassMap *uint64 `protobuf:"varint,194,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` + QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,195,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` + IpsecObjectId *uint64 `protobuf:"varint,196,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` + IpsecSaTagTpid *uint32 `protobuf:"varint,197,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` + MaxEcmpMemberCount *uint32 `protobuf:"varint,198,opt,name=max_ecmp_member_count,json=maxEcmpMemberCount,proto3,oneof" json:"max_ecmp_member_count,omitempty"` + EcmpMemberCount *uint32 `protobuf:"varint,199,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,omitempty"` + ArsProfile *uint64 `protobuf:"varint,200,opt,name=ars_profile,json=arsProfile,proto3,oneof" json:"ars_profile,omitempty"` + AclStagePostIngress *ACLCapability `protobuf:"bytes,201,opt,name=acl_stage_post_ingress,json=aclStagePostIngress,proto3,oneof" json:"acl_stage_post_ingress,omitempty"` + CreditWd *bool `protobuf:"varint,202,opt,name=credit_wd,json=creditWd,proto3,oneof" json:"credit_wd,omitempty"` + CreditWdTimer *uint32 `protobuf:"varint,203,opt,name=credit_wd_timer,json=creditWdTimer,proto3,oneof" json:"credit_wd_timer,omitempty"` + SwitchIsolate *bool `protobuf:"varint,204,opt,name=switch_isolate,json=switchIsolate,proto3,oneof" json:"switch_isolate,omitempty"` + HostifOperStatusUpdateMode *SwitchHostifOperStatusUpdateMode `protobuf:"varint,205,opt,name=hostif_oper_status_update_mode,json=hostifOperStatusUpdateMode,proto3,enum=lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode,oneof" json:"hostif_oper_status_update_mode,omitempty"` + RegFatalSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,206,rep,packed,name=reg_fatal_switch_asic_sdk_health_category,json=regFatalSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_fatal_switch_asic_sdk_health_category,omitempty"` + RegWarningSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,207,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,208,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"` + AclChainList []byte `protobuf:"bytes,209,opt,name=acl_chain_list,json=aclChainList,proto3,oneof" json:"acl_chain_list,omitempty"` + TunnelTermTableEntryMinimumPriority *uint32 `protobuf:"varint,210,opt,name=tunnel_term_table_entry_minimum_priority,json=tunnelTermTableEntryMinimumPriority,proto3,oneof" json:"tunnel_term_table_entry_minimum_priority,omitempty"` + TunnelTermTableEntryMaximumPriority *uint32 `protobuf:"varint,211,opt,name=tunnel_term_table_entry_maximum_priority,json=tunnelTermTableEntryMaximumPriority,proto3,oneof" json:"tunnel_term_table_entry_maximum_priority,omitempty"` + AvailableTwampSession *uint32 `protobuf:"varint,212,opt,name=available_twamp_session,json=availableTwampSession,proto3,oneof" json:"available_twamp_session,omitempty"` + MaxTwampSession *uint32 `protobuf:"varint,213,opt,name=max_twamp_session,json=maxTwampSession,proto3,oneof" json:"max_twamp_session,omitempty"` + AvailableIpNextHopGroupMemberEntry *uint32 `protobuf:"varint,214,opt,name=available_ip_next_hop_group_member_entry,json=availableIpNextHopGroupMemberEntry,proto3,oneof" json:"available_ip_next_hop_group_member_entry,omitempty"` + 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SwitchAttribute) Reset() { *x = SwitchAttribute{} - 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) } @@ -25577,7 +27509,7 @@ func (x *SwitchAttribute) String() string { func (*SwitchAttribute) ProtoMessage() {} func (x *SwitchAttribute) 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 { @@ -25590,7 +27522,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{116} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} } func (x *SwitchAttribute) GetNumberOfActivePorts() uint32 { @@ -26986,6 +28918,132 @@ func (x *SwitchAttribute) GetEcmpMemberCount() uint32 { return 0 } +func (x *SwitchAttribute) GetArsProfile() uint64 { + if x != nil && x.ArsProfile != nil { + return *x.ArsProfile + } + return 0 +} + +func (x *SwitchAttribute) GetAclStagePostIngress() *ACLCapability { + if x != nil { + return x.AclStagePostIngress + } + return nil +} + +func (x *SwitchAttribute) GetCreditWd() bool { + if x != nil && x.CreditWd != nil { + return *x.CreditWd + } + return false +} + +func (x *SwitchAttribute) GetCreditWdTimer() uint32 { + if x != nil && x.CreditWdTimer != nil { + return *x.CreditWdTimer + } + return 0 +} + +func (x *SwitchAttribute) GetSwitchIsolate() bool { + if x != nil && x.SwitchIsolate != nil { + return *x.SwitchIsolate + } + return false +} + +func (x *SwitchAttribute) GetHostifOperStatusUpdateMode() SwitchHostifOperStatusUpdateMode { + if x != nil && x.HostifOperStatusUpdateMode != nil { + return *x.HostifOperStatusUpdateMode + } + return SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED +} + +func (x *SwitchAttribute) GetRegFatalSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegFatalSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SwitchAttribute) GetRegWarningSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegWarningSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SwitchAttribute) GetRegNoticeSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegNoticeSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SwitchAttribute) GetAclChainList() []byte { + if x != nil { + return x.AclChainList + } + return nil +} + +func (x *SwitchAttribute) GetTunnelTermTableEntryMinimumPriority() uint32 { + if x != nil && x.TunnelTermTableEntryMinimumPriority != nil { + return *x.TunnelTermTableEntryMinimumPriority + } + return 0 +} + +func (x *SwitchAttribute) GetTunnelTermTableEntryMaximumPriority() uint32 { + if x != nil && x.TunnelTermTableEntryMaximumPriority != nil { + return *x.TunnelTermTableEntryMaximumPriority + } + return 0 +} + +func (x *SwitchAttribute) GetAvailableTwampSession() uint32 { + if x != nil && x.AvailableTwampSession != nil { + return *x.AvailableTwampSession + } + return 0 +} + +func (x *SwitchAttribute) GetMaxTwampSession() uint32 { + if x != nil && x.MaxTwampSession != nil { + return *x.MaxTwampSession + } + return 0 +} + +func (x *SwitchAttribute) GetAvailableIpNextHopGroupMemberEntry() uint32 { + if x != nil && x.AvailableIpNextHopGroupMemberEntry != nil { + return *x.AvailableIpNextHopGroupMemberEntry + } + return 0 +} + +func (x *SwitchAttribute) GetAvailableSystemVoqs() uint32 { + if x != nil && x.AvailableSystemVoqs != nil { + return *x.AvailableSystemVoqs + } + return 0 +} + +func (x *SwitchAttribute) GetAclStagePreIngress() *ACLCapability { + if x != nil { + return x.AclStagePreIngress + } + return nil +} + +func (x *SwitchAttribute) GetPoeDeviceList() []uint64 { + if x != nil { + return x.PoeDeviceList + } + 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"` @@ -27007,7 +29065,7 @@ type SwitchTunnelAttribute struct { func (x *SwitchTunnelAttribute) Reset() { *x = SwitchTunnelAttribute{} - 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) } @@ -27019,7 +29077,7 @@ func (x *SwitchTunnelAttribute) String() string { func (*SwitchTunnelAttribute) ProtoMessage() {} func (x *SwitchTunnelAttribute) 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 { @@ -27032,7 +29090,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{117} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} } func (x *SwitchTunnelAttribute) GetTunnelType() TunnelType { @@ -27141,7 +29199,7 @@ type SystemPortAttribute struct { func (x *SystemPortAttribute) Reset() { *x = SystemPortAttribute{} - 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) } @@ -27153,7 +29211,7 @@ func (x *SystemPortAttribute) String() string { func (*SystemPortAttribute) ProtoMessage() {} func (x *SystemPortAttribute) 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 { @@ -27166,7 +29224,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{118} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} } func (x *SystemPortAttribute) GetType() SystemPortType { @@ -27230,7 +29288,7 @@ type TableBitmapClassificationEntryAttribute struct { func (x *TableBitmapClassificationEntryAttribute) Reset() { *x = TableBitmapClassificationEntryAttribute{} - 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) } @@ -27242,7 +29300,7 @@ func (x *TableBitmapClassificationEntryAttribute) String() string { func (*TableBitmapClassificationEntryAttribute) ProtoMessage() {} func (x *TableBitmapClassificationEntryAttribute) 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 { @@ -27255,7 +29313,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{119} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} } func (x *TableBitmapClassificationEntryAttribute) GetAction() TableBitmapClassificationEntryAction { @@ -27303,7 +29361,7 @@ type TableBitmapRouterEntryAttribute struct { func (x *TableBitmapRouterEntryAttribute) Reset() { *x = TableBitmapRouterEntryAttribute{} - 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) } @@ -27315,7 +29373,7 @@ func (x *TableBitmapRouterEntryAttribute) String() string { func (*TableBitmapRouterEntryAttribute) ProtoMessage() {} func (x *TableBitmapRouterEntryAttribute) 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 { @@ -27328,7 +29386,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{120} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} } func (x *TableBitmapRouterEntryAttribute) GetAction() TableBitmapRouterEntryAction { @@ -27407,7 +29465,7 @@ type TableMetaTunnelEntryAttribute struct { func (x *TableMetaTunnelEntryAttribute) Reset() { *x = TableMetaTunnelEntryAttribute{} - 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) } @@ -27419,7 +29477,7 @@ func (x *TableMetaTunnelEntryAttribute) String() string { func (*TableMetaTunnelEntryAttribute) ProtoMessage() {} func (x *TableMetaTunnelEntryAttribute) 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 { @@ -27432,7 +29490,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{121} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} } func (x *TableMetaTunnelEntryAttribute) GetAction() TableMetaTunnelEntryAction { @@ -27482,7 +29540,7 @@ type TamAttribute struct { func (x *TamAttribute) Reset() { *x = TamAttribute{} - 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) } @@ -27494,7 +29552,7 @@ func (x *TamAttribute) String() string { func (*TamAttribute) ProtoMessage() {} func (x *TamAttribute) 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 { @@ -27507,7 +29565,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{122} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} } func (x *TamAttribute) GetTelemetryObjectsList() []uint64 { @@ -27547,13 +29605,14 @@ type TamCollectorAttribute struct { TruncateSize *uint32 `protobuf:"varint,5,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` Transport *uint64 `protobuf:"varint,6,opt,name=transport,proto3,oneof" json:"transport,omitempty"` DscpValue *uint32 `protobuf:"varint,7,opt,name=dscp_value,json=dscpValue,proto3,oneof" json:"dscp_value,omitempty"` + HostifTrap *uint64 `protobuf:"varint,8,opt,name=hostif_trap,json=hostifTrap,proto3,oneof" json:"hostif_trap,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TamCollectorAttribute) Reset() { *x = TamCollectorAttribute{} - 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) } @@ -27565,7 +29624,7 @@ func (x *TamCollectorAttribute) String() string { func (*TamCollectorAttribute) ProtoMessage() {} func (x *TamCollectorAttribute) 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 { @@ -27578,7 +29637,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{123} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} } func (x *TamCollectorAttribute) GetSrcIp() []byte { @@ -27630,6 +29689,81 @@ func (x *TamCollectorAttribute) GetDscpValue() uint32 { return 0 } +func (x *TamCollectorAttribute) GetHostifTrap() uint64 { + if x != nil && x.HostifTrap != nil { + return *x.HostifTrap + } + return 0 +} + +type TamCounterSubscriptionAttribute struct { + state protoimpl.MessageState `protogen:"open.v1"` + TelType *uint64 `protobuf:"varint,1,opt,name=tel_type,json=telType,proto3,oneof" json:"tel_type,omitempty"` + ObjectId *uint64 `protobuf:"varint,2,opt,name=object_id,json=objectId,proto3,oneof" json:"object_id,omitempty"` + StatId *uint32 `protobuf:"varint,3,opt,name=stat_id,json=statId,proto3,oneof" json:"stat_id,omitempty"` + Label *uint64 `protobuf:"varint,4,opt,name=label,proto3,oneof" json:"label,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TamCounterSubscriptionAttribute) Reset() { + *x = TamCounterSubscriptionAttribute{} + mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TamCounterSubscriptionAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TamCounterSubscriptionAttribute) ProtoMessage() {} + +func (x *TamCounterSubscriptionAttribute) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + 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 TamCounterSubscriptionAttribute.ProtoReflect.Descriptor instead. +func (*TamCounterSubscriptionAttribute) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} +} + +func (x *TamCounterSubscriptionAttribute) GetTelType() uint64 { + if x != nil && x.TelType != nil { + return *x.TelType + } + return 0 +} + +func (x *TamCounterSubscriptionAttribute) GetObjectId() uint64 { + if x != nil && x.ObjectId != nil { + return *x.ObjectId + } + return 0 +} + +func (x *TamCounterSubscriptionAttribute) GetStatId() uint32 { + if x != nil && x.StatId != nil { + return *x.StatId + } + return 0 +} + +func (x *TamCounterSubscriptionAttribute) GetLabel() uint64 { + if x != nil && x.Label != nil { + return *x.Label + } + return 0 +} + type TamEventAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *TamEventType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.TamEventType,oneof" json:"type,omitempty"` @@ -27643,7 +29777,7 @@ type TamEventAttribute struct { func (x *TamEventAttribute) Reset() { *x = TamEventAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27655,7 +29789,7 @@ func (x *TamEventAttribute) String() string { func (*TamEventAttribute) ProtoMessage() {} func (x *TamEventAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27668,7 +29802,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{124} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} } func (x *TamEventAttribute) GetType() TamEventType { @@ -27716,7 +29850,7 @@ type TamEventActionAttribute struct { func (x *TamEventActionAttribute) Reset() { *x = TamEventActionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27728,7 +29862,7 @@ func (x *TamEventActionAttribute) String() string { func (*TamEventActionAttribute) ProtoMessage() {} func (x *TamEventActionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27741,7 +29875,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{125} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} } func (x *TamEventActionAttribute) GetReportType() uint64 { @@ -27772,7 +29906,7 @@ type TamEventThresholdAttribute struct { func (x *TamEventThresholdAttribute) Reset() { *x = TamEventThresholdAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27784,7 +29918,7 @@ func (x *TamEventThresholdAttribute) String() string { func (*TamEventThresholdAttribute) ProtoMessage() {} func (x *TamEventThresholdAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27797,7 +29931,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{126} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} } func (x *TamEventThresholdAttribute) GetHighWatermark() uint32 { @@ -27876,7 +30010,7 @@ type TamIntAttribute struct { func (x *TamIntAttribute) Reset() { *x = TamIntAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27888,7 +30022,7 @@ func (x *TamIntAttribute) String() string { func (*TamIntAttribute) ProtoMessage() {} func (x *TamIntAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27901,7 +30035,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{127} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} } func (x *TamIntAttribute) GetType() TamIntType { @@ -28095,7 +30229,7 @@ type TamMathFuncAttribute struct { func (x *TamMathFuncAttribute) Reset() { *x = TamMathFuncAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28107,7 +30241,7 @@ func (x *TamMathFuncAttribute) String() string { func (*TamMathFuncAttribute) ProtoMessage() {} func (x *TamMathFuncAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28120,7 +30254,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{128} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} } func (x *TamMathFuncAttribute) GetTamTelMathFuncType() TamTelMathFuncType { @@ -28140,13 +30274,14 @@ type TamReportAttribute struct { ReportInterval *uint32 `protobuf:"varint,6,opt,name=report_interval,json=reportInterval,proto3,oneof" json:"report_interval,omitempty"` EnterpriseNumber *uint32 `protobuf:"varint,7,opt,name=enterprise_number,json=enterpriseNumber,proto3,oneof" json:"enterprise_number,omitempty"` TemplateReportInterval *uint32 `protobuf:"varint,8,opt,name=template_report_interval,json=templateReportInterval,proto3,oneof" json:"template_report_interval,omitempty"` + ReportIntervalUnit *TamReportIntervalUnit `protobuf:"varint,9,opt,name=report_interval_unit,json=reportIntervalUnit,proto3,enum=lemming.dataplane.sai.TamReportIntervalUnit,oneof" json:"report_interval_unit,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TamReportAttribute) Reset() { *x = TamReportAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28158,7 +30293,7 @@ func (x *TamReportAttribute) String() string { func (*TamReportAttribute) ProtoMessage() {} func (x *TamReportAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28171,7 +30306,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{129} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} } func (x *TamReportAttribute) GetType() TamReportType { @@ -28230,6 +30365,13 @@ func (x *TamReportAttribute) GetTemplateReportInterval() uint32 { return 0 } +func (x *TamReportAttribute) GetReportIntervalUnit() TamReportIntervalUnit { + if x != nil && x.ReportIntervalUnit != nil { + return *x.ReportIntervalUnit + } + return TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED +} + type TamTelemetryAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` TamTypeList []uint64 `protobuf:"varint,1,rep,packed,name=tam_type_list,json=tamTypeList,proto3" json:"tam_type_list,omitempty"` @@ -28242,7 +30384,7 @@ type TamTelemetryAttribute struct { func (x *TamTelemetryAttribute) Reset() { *x = TamTelemetryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28254,7 +30396,7 @@ func (x *TamTelemetryAttribute) String() string { func (*TamTelemetryAttribute) ProtoMessage() {} func (x *TamTelemetryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28267,7 +30409,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{130} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} } func (x *TamTelemetryAttribute) GetTamTypeList() []uint64 { @@ -28316,13 +30458,14 @@ type TamTelTypeAttribute struct { DscpValue *uint32 `protobuf:"varint,14,opt,name=dscp_value,json=dscpValue,proto3,oneof" json:"dscp_value,omitempty"` MathFunc *uint64 `protobuf:"varint,15,opt,name=math_func,json=mathFunc,proto3,oneof" json:"math_func,omitempty"` ReportId *uint64 `protobuf:"varint,16,opt,name=report_id,json=reportId,proto3,oneof" json:"report_id,omitempty"` + CounterSubscriptionList []uint64 `protobuf:"varint,17,rep,packed,name=counter_subscription_list,json=counterSubscriptionList,proto3" json:"counter_subscription_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TamTelTypeAttribute) Reset() { *x = TamTelTypeAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28334,7 +30477,7 @@ func (x *TamTelTypeAttribute) String() string { func (*TamTelTypeAttribute) ProtoMessage() {} func (x *TamTelTypeAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28347,7 +30490,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{131} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} } func (x *TamTelTypeAttribute) GetTamTelemetryType() TamTelemetryType { @@ -28462,6 +30605,13 @@ func (x *TamTelTypeAttribute) GetReportId() uint64 { return 0 } +func (x *TamTelTypeAttribute) GetCounterSubscriptionList() []uint64 { + if x != nil { + return x.CounterSubscriptionList + } + return nil +} + type TamTransportAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` TransportType *TamTransportType `protobuf:"varint,1,opt,name=transport_type,json=transportType,proto3,enum=lemming.dataplane.sai.TamTransportType,oneof" json:"transport_type,omitempty"` @@ -28475,7 +30625,7 @@ type TamTransportAttribute struct { func (x *TamTransportAttribute) Reset() { *x = TamTransportAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28487,7 +30637,7 @@ func (x *TamTransportAttribute) String() string { func (*TamTransportAttribute) ProtoMessage() {} func (x *TamTransportAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28500,7 +30650,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{132} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} } func (x *TamTransportAttribute) GetTransportType() TamTransportType { @@ -28576,7 +30726,7 @@ type TunnelAttribute struct { func (x *TunnelAttribute) Reset() { *x = TunnelAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28588,7 +30738,7 @@ func (x *TunnelAttribute) String() string { func (*TunnelAttribute) ProtoMessage() {} func (x *TunnelAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28601,7 +30751,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{133} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} } func (x *TunnelAttribute) GetType() TunnelType { @@ -28824,7 +30974,7 @@ type TunnelMapAttribute struct { func (x *TunnelMapAttribute) Reset() { *x = TunnelMapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28836,7 +30986,7 @@ func (x *TunnelMapAttribute) String() string { func (*TunnelMapAttribute) ProtoMessage() {} func (x *TunnelMapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28849,7 +30999,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{134} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} } func (x *TunnelMapAttribute) GetType() TunnelMapType { @@ -28884,13 +31034,15 @@ type TunnelMapEntryAttribute struct { VirtualRouterIdValue *uint64 `protobuf:"varint,14,opt,name=virtual_router_id_value,json=virtualRouterIdValue,proto3,oneof" json:"virtual_router_id_value,omitempty"` VsidIdKey *uint32 `protobuf:"varint,15,opt,name=vsid_id_key,json=vsidIdKey,proto3,oneof" json:"vsid_id_key,omitempty"` VsidIdValue *uint32 `protobuf:"varint,16,opt,name=vsid_id_value,json=vsidIdValue,proto3,oneof" json:"vsid_id_value,omitempty"` + PrefixAggIdKey *uint32 `protobuf:"varint,17,opt,name=prefix_agg_id_key,json=prefixAggIdKey,proto3,oneof" json:"prefix_agg_id_key,omitempty"` + Srv6VpnSidValue []byte `protobuf:"bytes,18,opt,name=srv6_vpn_sid_value,json=srv6VpnSidValue,proto3,oneof" json:"srv6_vpn_sid_value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TunnelMapEntryAttribute) Reset() { *x = TunnelMapEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28902,7 +31054,7 @@ func (x *TunnelMapEntryAttribute) String() string { func (*TunnelMapEntryAttribute) ProtoMessage() {} func (x *TunnelMapEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28915,7 +31067,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{135} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} } func (x *TunnelMapEntryAttribute) GetTunnelMapType() TunnelMapType { @@ -29030,6 +31182,20 @@ func (x *TunnelMapEntryAttribute) GetVsidIdValue() uint32 { return 0 } +func (x *TunnelMapEntryAttribute) GetPrefixAggIdKey() uint32 { + if x != nil && x.PrefixAggIdKey != nil { + return *x.PrefixAggIdKey + } + return 0 +} + +func (x *TunnelMapEntryAttribute) GetSrv6VpnSidValue() []byte { + if x != nil { + return x.Srv6VpnSidValue + } + return nil +} + type TunnelTermTableEntryAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` VrId *uint64 `protobuf:"varint,1,opt,name=vr_id,json=vrId,proto3,oneof" json:"vr_id,omitempty"` @@ -29042,13 +31208,14 @@ type TunnelTermTableEntryAttribute struct { ActionTunnelId *uint64 `protobuf:"varint,8,opt,name=action_tunnel_id,json=actionTunnelId,proto3,oneof" json:"action_tunnel_id,omitempty"` IpAddrFamily *IpAddrFamily `protobuf:"varint,9,opt,name=ip_addr_family,json=ipAddrFamily,proto3,enum=lemming.dataplane.sai.IpAddrFamily,oneof" json:"ip_addr_family,omitempty"` IpsecVerified *bool `protobuf:"varint,10,opt,name=ipsec_verified,json=ipsecVerified,proto3,oneof" json:"ipsec_verified,omitempty"` + Priority *uint32 `protobuf:"varint,11,opt,name=priority,proto3,oneof" json:"priority,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TunnelTermTableEntryAttribute) Reset() { *x = TunnelTermTableEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29060,7 +31227,7 @@ func (x *TunnelTermTableEntryAttribute) String() string { func (*TunnelTermTableEntryAttribute) ProtoMessage() {} func (x *TunnelTermTableEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29073,7 +31240,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{136} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} } func (x *TunnelTermTableEntryAttribute) GetVrId() uint64 { @@ -29146,6 +31313,13 @@ func (x *TunnelTermTableEntryAttribute) GetIpsecVerified() bool { return false } +func (x *TunnelTermTableEntryAttribute) GetPriority() uint32 { + if x != nil && x.Priority != nil { + return *x.Priority + } + return 0 +} + type UdfAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` MatchId *uint64 `protobuf:"varint,1,opt,name=match_id,json=matchId,proto3,oneof" json:"match_id,omitempty"` @@ -29159,7 +31333,7 @@ type UdfAttribute struct { func (x *UdfAttribute) Reset() { *x = UdfAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29171,7 +31345,7 @@ func (x *UdfAttribute) String() string { func (*UdfAttribute) ProtoMessage() {} func (x *UdfAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29184,7 +31358,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{137} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} } func (x *UdfAttribute) GetMatchId() uint64 { @@ -29233,7 +31407,7 @@ type UdfGroupAttribute struct { func (x *UdfGroupAttribute) Reset() { *x = UdfGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29245,7 +31419,7 @@ func (x *UdfGroupAttribute) String() string { func (*UdfGroupAttribute) ProtoMessage() {} func (x *UdfGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29258,7 +31432,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{138} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} } func (x *UdfGroupAttribute) GetUdfList() []uint64 { @@ -29288,13 +31462,14 @@ type UdfMatchAttribute struct { L3Type *AclFieldData `protobuf:"bytes,2,opt,name=l3_type,json=l3Type,proto3,oneof" json:"l3_type,omitempty"` GreType *AclFieldData `protobuf:"bytes,3,opt,name=gre_type,json=greType,proto3,oneof" json:"gre_type,omitempty"` Priority *uint32 `protobuf:"varint,4,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + L4DstPortType *AclFieldData `protobuf:"bytes,5,opt,name=l4_dst_port_type,json=l4DstPortType,proto3,oneof" json:"l4_dst_port_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UdfMatchAttribute) Reset() { *x = UdfMatchAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29306,7 +31481,7 @@ func (x *UdfMatchAttribute) String() string { func (*UdfMatchAttribute) ProtoMessage() {} func (x *UdfMatchAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29319,7 +31494,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{139} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} } func (x *UdfMatchAttribute) GetL2Type() *AclFieldData { @@ -29350,6 +31525,13 @@ func (x *UdfMatchAttribute) GetPriority() uint32 { return 0 } +func (x *UdfMatchAttribute) GetL4DstPortType() *AclFieldData { + if x != nil { + return x.L4DstPortType + } + return nil +} + type VirtualRouterAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` AdminV4State *bool `protobuf:"varint,1,opt,name=admin_v4_state,json=adminV4State,proto3,oneof" json:"admin_v4_state,omitempty"` @@ -29365,7 +31547,7 @@ type VirtualRouterAttribute struct { func (x *VirtualRouterAttribute) Reset() { *x = VirtualRouterAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29377,7 +31559,7 @@ func (x *VirtualRouterAttribute) String() string { func (*VirtualRouterAttribute) ProtoMessage() {} func (x *VirtualRouterAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29390,7 +31572,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{140} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} } func (x *VirtualRouterAttribute) GetAdminV4State() bool { @@ -29472,7 +31654,7 @@ type VlanAttribute struct { func (x *VlanAttribute) Reset() { *x = VlanAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29484,7 +31666,7 @@ func (x *VlanAttribute) String() string { func (*VlanAttribute) ProtoMessage() {} func (x *VlanAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29497,7 +31679,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{141} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} } func (x *VlanAttribute) GetVlanId() uint32 { @@ -29665,7 +31847,7 @@ type VlanMemberAttribute struct { func (x *VlanMemberAttribute) Reset() { *x = VlanMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29677,7 +31859,7 @@ func (x *VlanMemberAttribute) String() string { func (*VlanMemberAttribute) ProtoMessage() {} func (x *VlanMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29690,7 +31872,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{142} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} } func (x *VlanMemberAttribute) GetVlanId() uint64 { @@ -29742,13 +31924,27 @@ type WredAttribute struct { EcnColorUnawareMinThreshold *uint32 `protobuf:"varint,24,opt,name=ecn_color_unaware_min_threshold,json=ecnColorUnawareMinThreshold,proto3,oneof" json:"ecn_color_unaware_min_threshold,omitempty"` EcnColorUnawareMaxThreshold *uint32 `protobuf:"varint,25,opt,name=ecn_color_unaware_max_threshold,json=ecnColorUnawareMaxThreshold,proto3,oneof" json:"ecn_color_unaware_max_threshold,omitempty"` EcnColorUnawareMarkProbability *uint32 `protobuf:"varint,26,opt,name=ecn_color_unaware_mark_probability,json=ecnColorUnawareMarkProbability,proto3,oneof" json:"ecn_color_unaware_mark_probability,omitempty"` + GreenMinThreshold_64 *uint64 `protobuf:"varint,27,opt,name=green_min_threshold_64,json=greenMinThreshold64,proto3,oneof" json:"green_min_threshold_64,omitempty"` + GreenMaxThreshold_64 *uint64 `protobuf:"varint,28,opt,name=green_max_threshold_64,json=greenMaxThreshold64,proto3,oneof" json:"green_max_threshold_64,omitempty"` + YellowMinThreshold_64 *uint64 `protobuf:"varint,29,opt,name=yellow_min_threshold_64,json=yellowMinThreshold64,proto3,oneof" json:"yellow_min_threshold_64,omitempty"` + YellowMaxThreshold_64 *uint64 `protobuf:"varint,30,opt,name=yellow_max_threshold_64,json=yellowMaxThreshold64,proto3,oneof" json:"yellow_max_threshold_64,omitempty"` + RedMinThreshold_64 *uint64 `protobuf:"varint,31,opt,name=red_min_threshold_64,json=redMinThreshold64,proto3,oneof" json:"red_min_threshold_64,omitempty"` + RedMaxThreshold_64 *uint64 `protobuf:"varint,32,opt,name=red_max_threshold_64,json=redMaxThreshold64,proto3,oneof" json:"red_max_threshold_64,omitempty"` + EcnGreenMinThreshold_64 *uint64 `protobuf:"varint,33,opt,name=ecn_green_min_threshold_64,json=ecnGreenMinThreshold64,proto3,oneof" json:"ecn_green_min_threshold_64,omitempty"` + EcnGreenMaxThreshold_64 *uint64 `protobuf:"varint,34,opt,name=ecn_green_max_threshold_64,json=ecnGreenMaxThreshold64,proto3,oneof" json:"ecn_green_max_threshold_64,omitempty"` + EcnYellowMinThreshold_64 *uint64 `protobuf:"varint,35,opt,name=ecn_yellow_min_threshold_64,json=ecnYellowMinThreshold64,proto3,oneof" json:"ecn_yellow_min_threshold_64,omitempty"` + EcnYellowMaxThreshold_64 *uint64 `protobuf:"varint,36,opt,name=ecn_yellow_max_threshold_64,json=ecnYellowMaxThreshold64,proto3,oneof" json:"ecn_yellow_max_threshold_64,omitempty"` + EcnRedMinThreshold_64 *uint64 `protobuf:"varint,37,opt,name=ecn_red_min_threshold_64,json=ecnRedMinThreshold64,proto3,oneof" json:"ecn_red_min_threshold_64,omitempty"` + EcnRedMaxThreshold_64 *uint64 `protobuf:"varint,38,opt,name=ecn_red_max_threshold_64,json=ecnRedMaxThreshold64,proto3,oneof" json:"ecn_red_max_threshold_64,omitempty"` + EcnColorUnawareMinThreshold_64 *uint64 `protobuf:"varint,39,opt,name=ecn_color_unaware_min_threshold_64,json=ecnColorUnawareMinThreshold64,proto3,oneof" json:"ecn_color_unaware_min_threshold_64,omitempty"` + EcnColorUnawareMaxThreshold_64 *uint64 `protobuf:"varint,40,opt,name=ecn_color_unaware_max_threshold_64,json=ecnColorUnawareMaxThreshold64,proto3,oneof" json:"ecn_color_unaware_max_threshold_64,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WredAttribute) Reset() { *x = WredAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29760,7 +31956,7 @@ func (x *WredAttribute) String() string { func (*WredAttribute) ProtoMessage() {} func (x *WredAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29773,7 +31969,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{143} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} } func (x *WredAttribute) GetGreenEnable() bool { @@ -29958,6 +32154,104 @@ func (x *WredAttribute) GetEcnColorUnawareMarkProbability() uint32 { return 0 } +func (x *WredAttribute) GetGreenMinThreshold_64() uint64 { + if x != nil && x.GreenMinThreshold_64 != nil { + return *x.GreenMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetGreenMaxThreshold_64() uint64 { + if x != nil && x.GreenMaxThreshold_64 != nil { + return *x.GreenMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetYellowMinThreshold_64() uint64 { + if x != nil && x.YellowMinThreshold_64 != nil { + return *x.YellowMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetYellowMaxThreshold_64() uint64 { + if x != nil && x.YellowMaxThreshold_64 != nil { + return *x.YellowMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetRedMinThreshold_64() uint64 { + if x != nil && x.RedMinThreshold_64 != nil { + return *x.RedMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetRedMaxThreshold_64() uint64 { + if x != nil && x.RedMaxThreshold_64 != nil { + return *x.RedMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnGreenMinThreshold_64() uint64 { + if x != nil && x.EcnGreenMinThreshold_64 != nil { + return *x.EcnGreenMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnGreenMaxThreshold_64() uint64 { + if x != nil && x.EcnGreenMaxThreshold_64 != nil { + return *x.EcnGreenMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnYellowMinThreshold_64() uint64 { + if x != nil && x.EcnYellowMinThreshold_64 != nil { + return *x.EcnYellowMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnYellowMaxThreshold_64() uint64 { + if x != nil && x.EcnYellowMaxThreshold_64 != nil { + return *x.EcnYellowMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnRedMinThreshold_64() uint64 { + if x != nil && x.EcnRedMinThreshold_64 != nil { + return *x.EcnRedMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnRedMaxThreshold_64() uint64 { + if x != nil && x.EcnRedMaxThreshold_64 != nil { + return *x.EcnRedMaxThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnColorUnawareMinThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMinThreshold_64 != nil { + return *x.EcnColorUnawareMinThreshold_64 + } + return 0 +} + +func (x *WredAttribute) GetEcnColorUnawareMaxThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMaxThreshold_64 != nil { + return *x.EcnColorUnawareMaxThreshold_64 + } + return 0 +} + var file_dataplane_proto_sai_common_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.FieldOptions)(nil), @@ -30379,7 +32673,7 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x95, 0x8f, 0x01, 0x0a, 0x11, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xc2, 0x98, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, @@ -30947,2047 +33241,2513 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, 0x5f, 0x48, 0x5d, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, - 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x18, 0x60, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5e, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, - 0x61, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x61, 0x48, 0x5f, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x62, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x60, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x63, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x61, 0x52, 0x12, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, + 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x60, 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, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x62, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x65, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, - 0x48, 0x63, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x66, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x66, 0x48, 0x64, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x67, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x65, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, + 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5e, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5f, + 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x61, 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, 0x61, 0x48, 0x5f, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x52, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x18, + 0x62, 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, 0x62, 0x48, 0x60, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x72, 0x66, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, + 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, + 0x69, 0x74, 0x18, 0x63, 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, 0x63, 0x48, 0x61, 0x52, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, + 0x6d, 0x63, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x64, 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, 0x64, + 0x48, 0x62, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, + 0x65, 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, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x65, 0x48, 0x63, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x66, + 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, 0x63, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x66, 0x48, 0x64, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x67, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x65, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x63, + 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x68, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x66, 0x52, 0x10, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x69, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x67, 0x52, - 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x6a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x68, 0x52, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, - 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x69, 0x52, 0x14, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x66, 0x52, 0x12, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, + 0x6f, 0x6f, 0x64, 0x18, 0x69, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x6a, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, - 0x6d, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x6d, 0x48, 0x6b, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, - 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x6e, 0x20, 0x01, 0x28, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x67, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x6a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, - 0x6c, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, - 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, + 0x68, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6b, 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, 0x63, 0x6c, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, + 0x48, 0x69, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x6c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x6a, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x5f, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x6d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x6b, 0x52, 0x10, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x63, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x6e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x6c, 0x52, 0x12, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, + 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x6f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x6d, 0x52, 0x0b, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x6d, 0x52, 0x15, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, - 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x70, 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, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x70, 0x48, 0x6e, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x71, - 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x71, 0x48, 0x6f, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, - 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, - 0x72, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x72, 0x48, 0x70, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, - 0x73, 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, 0x63, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x73, 0x48, 0x71, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x74, + 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x6e, 0x52, 0x14, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x71, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x6f, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x72, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x74, 0x48, 0x72, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, - 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x75, 0x20, 0x01, + 0x0f, 0x72, 0x48, 0x70, 0x52, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x69, + 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x73, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x73, 0x48, 0x71, + 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, + 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x74, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, 0x48, 0x72, 0x52, 0x15, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, + 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x75, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, - 0x48, 0x73, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, - 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, - 0x48, 0x74, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, - 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x77, + 0x48, 0x73, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, 0x61, + 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x76, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x76, 0x48, 0x74, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x56, 0x6c, + 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x77, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x77, 0x48, 0x75, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, - 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, - 0x48, 0x76, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x63, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x77, 0x52, 0x0c, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, - 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x78, 0x52, 0x12, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7b, + 0x0f, 0x77, 0x48, 0x75, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, + 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x7b, 0x48, 0x79, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, - 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x22, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x7c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x7a, 0x52, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 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, 0x7c, 0x0a, 0x21, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, - 0x18, 0x7d, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x7b, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 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, 0x69, 0x0a, 0x18, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x7e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x7c, 0x52, 0x14, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x7d, 0x52, 0x19, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x80, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x48, 0x7e, 0x52, 0x13, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x18, - 0x81, 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, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x7f, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, + 0x0f, 0x78, 0x48, 0x76, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, + 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x79, 0x48, 0x77, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, + 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x7a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, - 0x48, 0x80, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6c, 0x44, 0x74, - 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x83, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x81, 0x01, 0x52, - 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, + 0x78, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x74, 0x49, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x7b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, - 0x48, 0x82, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x44, - 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, - 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, + 0x79, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x63, 0x49, + 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x7c, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x7c, 0x48, 0x7a, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, + 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x7d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, - 0x48, 0x83, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x54, - 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, - 0x84, 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, - 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, - 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7d, 0x48, + 0x7b, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x44, 0x73, 0x63, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x18, 0x7e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x85, 0x01, 0x52, 0x1a, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, - 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0d, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x88, 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, 0x63, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x88, 0x01, 0x48, 0x86, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x4e, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x89, 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, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, - 0x01, 0x48, 0x87, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x49, - 0x6e, 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x8a, 0x01, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x7c, 0x52, 0x0c, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x16, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x7f, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x7d, 0x52, 0x12, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x80, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x8a, 0x01, 0x48, 0x88, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x0f, 0x80, 0x01, 0x48, 0x7e, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, + 0x22, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x81, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x7f, 0x52, 0x1f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 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, + 0x7f, 0x0a, 0x21, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x82, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x89, 0x01, 0x52, 0x13, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6c, - 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, - 0x18, 0x8c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, - 0x70, 0x73, 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x69, 0x6c, - 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x8e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, 0x48, 0x80, 0x01, 0x52, 0x1e, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 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, 0x6c, 0x0a, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x83, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x83, 0x01, 0x48, 0x81, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x76, + 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x84, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x8d, 0x01, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x90, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, - 0x48, 0x8e, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x64, 0x18, 0x91, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, + 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, 0x82, 0x01, 0x52, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x85, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, 0x83, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x92, 0x01, + 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x18, 0x86, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x92, 0x01, 0x48, 0x90, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, - 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, + 0x0f, 0x86, 0x01, 0x48, 0x84, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6a, + 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, 0x65, + 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x18, 0x87, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, + 0x85, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6c, 0x44, 0x74, 0x65, + 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x88, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x48, 0x86, 0x01, 0x52, 0x14, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x89, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, + 0x87, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x44, 0x72, + 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x81, 0x01, 0x0a, 0x23, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, + 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x8a, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, 0x01, 0x48, + 0x88, 0x01, 0x52, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x54, 0x61, + 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x1f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x8b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x89, + 0x01, 0x52, 0x1b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, + 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x78, 0x0a, 0x1e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x18, 0x8c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x1a, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, + 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0d, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x18, 0x8d, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x8d, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x4e, + 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x8e, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, + 0x48, 0x8c, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x49, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x8f, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x8f, 0x01, 0x48, 0x8d, 0x01, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, + 0x6c, 0x6f, 0x77, 0x18, 0x90, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x48, 0x8e, 0x01, 0x52, 0x13, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, + 0x77, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, + 0x91, 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, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x73, 0x18, 0x92, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x48, 0x90, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x69, 0x6c, 0x44, + 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x93, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x91, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1b, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x91, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x71, 0x0a, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x94, + 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, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x94, 0x01, 0x48, 0x92, 0x01, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x95, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, - 0x92, 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x1a, - 0x70, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, - 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, - 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, - 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, + 0x93, 0x01, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, + 0x64, 0x18, 0x96, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x94, 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x97, 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, 0x63, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x97, 0x01, 0x48, 0x95, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x45, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, + 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x18, + 0x98, 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, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x98, 0x01, 0x48, 0x96, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x56, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x1b, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x99, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x99, 0x01, 0x48, 0x97, + 0x01, 0x52, 0x18, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x6f, + 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, + 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x9a, 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, 0x63, 0x6c, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, + 0x01, 0x48, 0x98, 0x01, 0x52, 0x16, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, + 0x72, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, + 0x67, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, + 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x9b, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, 0x48, 0x99, + 0x01, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x41, 0x72, 0x73, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x77, 0x0a, 0x1d, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x9c, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9c, 0x01, 0x48, + 0x9a, 0x01, 0x52, 0x1a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x68, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x9d, 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, 0x63, 0x6c, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, + 0x48, 0x9b, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x70, 0x0a, 0x1d, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 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, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, + 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x63, 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, + 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, - 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, - 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, - 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, - 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, + 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, + 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, + 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, + 0x6e, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, + 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, + 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, + 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, + 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, + 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, + 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, + 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, + 0x66, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, + 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, + 0x0a, 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x24, 0x0a, 0x22, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 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, 0x1b, 0x0a, 0x19, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, + 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, + 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, + 0x24, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, + 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, + 0x73, 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, + 0x70, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, + 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, + 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x1c, 0x0a, 0x1a, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x22, 0xb3, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0x41, 0x63, 0x6c, + 0x52, 0x61, 0x6e, 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, 0x45, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 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, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x83, 0x48, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x09, + 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x62, + 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, 0x63, 0x6c, 0x42, + 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x5d, 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 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, 0x41, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x11, 0x61, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, + 0x48, 0x02, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, + 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x11, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, + 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, + 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, + 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x0c, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, + 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, + 0x6f, 0x72, 0x64, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, + 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, + 0x64, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, + 0x48, 0x0a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, + 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0b, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, + 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0c, 0x52, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, + 0x36, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, 0x11, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, + 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x11, 0x48, 0x0e, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x4d, 0x61, + 0x63, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x13, 0x48, 0x10, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x69, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x14, 0x48, 0x11, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x12, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, + 0x48, 0x13, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, + 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x14, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x15, 0x52, 0x0d, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x16, 0x52, + 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, + 0x17, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x1b, 0x48, 0x18, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x19, 0x52, 0x10, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x1b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, + 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, + 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x1f, 0x48, 0x1c, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, + 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, + 0x69, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, + 0x1d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, + 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x1e, 0x52, + 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, + 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, + 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x1f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, + 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, + 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x21, + 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, 0x34, 0x53, 0x72, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x25, 0x48, 0x22, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, + 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x23, 0x52, + 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x48, 0x24, 0x52, 0x13, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x25, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x26, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x43, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2a, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, 0x27, 0x52, 0x15, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x2b, 0x48, 0x28, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x63, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x18, + 0x2c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x29, 0x52, + 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x2a, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x74, 0x6f, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x2e, 0x48, 0x2b, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, + 0x48, 0x2c, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x30, 0x48, 0x2d, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x70, + 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x31, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x31, 0x48, 0x2e, 0x52, 0x0e, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, + 0x5f, 0x66, 0x72, 0x61, 0x67, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x32, 0x48, 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, + 0x70, 0x46, 0x72, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, + 0x30, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x74, 0x63, 0x18, 0x34, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x34, 0x48, 0x31, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, 0x88, 0x01, 0x01, + 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x35, 0x48, 0x32, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, 0x48, 0x33, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x37, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, 0x48, 0x34, 0x52, + 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x54, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, + 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, + 0x36, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, + 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x37, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, + 0x61, 0x67, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, + 0x48, 0x38, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x61, 0x73, 0x56, 0x6c, 0x61, 0x6e, + 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3c, 0x48, 0x39, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x3a, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, 0x3b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x54, 0x74, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x3c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x40, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x48, 0x3d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x42, 0x6f, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x41, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x48, 0x3e, 0x52, 0x14, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x42, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x48, 0x3f, 0x52, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x54, + 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x43, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, 0x40, 0x52, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x45, + 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x44, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x41, 0x52, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x42, + 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x45, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x48, 0x42, + 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x32, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, + 0x48, 0x43, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, + 0x78, 0x70, 0x18, 0x47, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x47, + 0x48, 0x44, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, + 0x6f, 0x73, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, + 0x48, 0x45, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x32, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x18, 0x49, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x49, 0x48, 0x46, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, + 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x47, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, + 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, + 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x48, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, + 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, + 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, + 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x4a, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x4b, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x54, 0x74, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4f, 0x48, 0x4c, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x50, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x4d, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x42, 0x6f, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x51, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x4e, 0x52, 0x13, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x18, 0x52, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, + 0x4f, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1c, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x53, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x50, 0x52, 0x18, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x18, 0x54, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x48, 0x51, + 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x55, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x48, 0x52, 0x52, 0x11, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x56, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x53, 0x52, 0x10, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, + 0x12, 0x46, 0x0a, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, + 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x57, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x54, 0x52, 0x15, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, + 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x55, 0x52, 0x1a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, + 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1c, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x59, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x56, 0x52, 0x17, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, + 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x57, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, + 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x5b, 0x48, 0x58, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x65, 0x74, 0x68, 0x53, + 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8e, 0x01, 0x0a, 0x1c, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x5c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x46, 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, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x5c, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x5c, 0x0a, 0x14, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x5d, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x16, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x5e, 0x48, 0x59, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x5f, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x5a, 0x52, 0x0b, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x60, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, + 0x48, 0x5b, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x61, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x5c, 0x52, 0x10, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x88, + 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5d, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2d, + 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x63, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x5e, 0x52, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x72, 0x66, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, + 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x64, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x5f, 0x52, 0x16, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x49, 0x70, 0x6d, 0x63, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, + 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, + 0x48, 0x60, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x66, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x61, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x3f, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x62, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x66, 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x69, 0x48, 0x63, 0x52, 0x11, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x6a, 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, 0x6a, 0x48, 0x64, 0x52, 0x15, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x69, 0x74, 0x73, 0x53, 0x72, 0x63, 0x49, 0x70, + 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x6b, 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, 0x6b, 0x48, 0x65, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x42, 0x69, 0x74, 0x73, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, + 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, + 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, + 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x30, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, + 0x66, 0x69, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, + 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, + 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, + 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, + 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, + 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, + 0x6c, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, + 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, - 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, - 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, - 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, - 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x69, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x70, 0x72, 0x69, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6e, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, - 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 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, 0x24, 0x0a, 0x22, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, - 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x6f, 0x5f, - 0x6e, 0x6f, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, - 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x74, 0x65, 0x6c, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x6f, 0x5f, 0x6e, 0x61, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, - 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x76, 0x72, 0x66, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, - 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, - 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 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, - 0x45, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 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, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xbb, 0x41, 0x0a, 0x11, 0x41, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x49, 0x0a, 0x09, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, - 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, - 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, - 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x14, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 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, 0x41, 0x63, 0x6c, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x52, 0x11, 0x61, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, - 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x11, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, - 0x33, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x11, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, - 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x53, 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, - 0x72, 0x63, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x31, - 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, - 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, - 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x33, 0x88, 0x01, 0x01, 0x12, - 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, - 0x74, 0x49, 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x32, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, - 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x77, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, - 0x70, 0x76, 0x36, 0x57, 0x6f, 0x72, 0x64, 0x31, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, - 0x72, 0x64, 0x30, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0e, 0x48, 0x0b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, 0x49, 0x70, 0x76, - 0x36, 0x57, 0x6f, 0x72, 0x64, 0x30, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, - 0x0c, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, - 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, - 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, - 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, 0x63, - 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, - 0x74, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x10, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, - 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x14, 0x48, 0x11, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, 0x74, - 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x12, 0x52, 0x0f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x16, 0x48, 0x13, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, - 0x72, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x14, 0x52, 0x0c, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x15, 0x52, - 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, - 0x48, 0x16, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1a, 0x48, 0x17, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x18, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x72, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x1c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x19, 0x52, - 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x1d, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1a, 0x52, 0x11, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, - 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x1b, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1c, 0x52, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, - 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x70, 0x72, 0x69, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x20, 0x48, 0x1d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, - 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, - 0x66, 0x69, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, - 0x48, 0x1e, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, - 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x1f, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x23, 0x48, 0x20, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x34, 0x44, 0x73, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x24, 0x48, 0x21, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4c, - 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x25, 0x48, 0x22, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x4c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, - 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, - 0x48, 0x23, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x27, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x48, 0x24, 0x52, - 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x28, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x25, 0x52, 0x0f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x26, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x2a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, 0x27, 0x52, - 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x28, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x73, - 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, - 0x63, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, - 0x48, 0x29, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x63, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x2d, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x2a, 0x52, 0x08, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x2b, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x2f, 0x48, 0x2c, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x46, 0x6c, - 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x30, 0x48, 0x2d, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x54, 0x63, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x31, 0x48, 0x2e, - 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x32, 0x48, 0x2f, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, - 0x63, 0x6c, 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x33, 0x48, 0x30, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, 0x36, 0x46, - 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x18, 0x34, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x34, 0x48, 0x31, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x63, - 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, - 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x35, 0x48, 0x32, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, 0x48, 0x33, 0x52, 0x0d, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, - 0x48, 0x34, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x54, - 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, 0x35, 0x52, 0x0f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x39, 0x48, 0x36, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x3a, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x37, 0x52, 0x0e, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x3b, 0x48, 0x38, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x61, 0x73, 0x56, - 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, 0x3c, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3c, 0x48, 0x39, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x3d, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x3a, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x3e, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, 0x3b, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x54, 0x74, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x3f, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x3c, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x45, 0x78, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x40, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x48, 0x3d, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x42, 0x6f, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, - 0x41, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x48, 0x3e, 0x52, - 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x31, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, - 0x6c, 0x18, 0x42, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x48, - 0x3f, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x31, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x65, 0x78, - 0x70, 0x18, 0x43, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, - 0x40, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x31, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, - 0x73, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, - 0x41, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x31, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x45, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x45, 0x48, 0x42, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x32, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x32, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x46, 0x48, 0x43, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x32, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x47, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x47, 0x48, 0x44, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x48, 0x48, 0x45, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x33, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x49, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x46, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x47, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x48, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x45, 0x78, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x49, 0x52, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x42, 0x6f, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x4a, 0x52, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4e, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x4b, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x54, 0x74, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x4f, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4f, 0x48, 0x4c, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x45, 0x78, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x18, 0x50, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x4d, 0x52, 0x12, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x42, 0x6f, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x17, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, - 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, - 0x51, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x4e, 0x52, - 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x19, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x18, 0x52, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x52, 0x48, 0x4f, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x53, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x50, 0x52, 0x18, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x18, 0x54, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x54, 0x48, 0x51, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x18, 0x55, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x48, - 0x52, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x6c, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x56, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x53, 0x52, 0x10, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, - 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, - 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, - 0x74, 0x18, 0x57, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, - 0x54, 0x52, 0x15, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x64, 0x62, 0x4e, 0x70, 0x75, 0x4d, 0x65, - 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, - 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x58, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x55, 0x52, 0x1a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4e, 0x70, 0x75, - 0x4d, 0x65, 0x74, 0x61, 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, - 0x1c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x59, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x56, 0x52, 0x17, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x61, - 0x44, 0x73, 0x74, 0x48, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x5a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x57, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x42, 0x74, 0x68, 0x4f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x3b, 0x0a, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, - 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x48, 0x58, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x65, - 0x74, 0x68, 0x53, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8e, 0x01, - 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x5c, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 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, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x5c, 0x52, 0x18, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x5c, - 0x0a, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x5d, 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, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x52, 0x11, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x16, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x59, 0x52, 0x13, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x70, 0x76, - 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x5f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x5a, 0x52, - 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x38, 0x0a, 0x12, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x60, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x60, 0x48, 0x5b, 0x52, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x61, 0x6d, 0x49, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x61, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5c, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, - 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x63, 0x48, 0x5d, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x63, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x4b, - 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x77, 0x6f, 0x72, 0x64, 0x33, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x31, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x30, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, - 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x63, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, - 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x69, 0x70, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, - 0x69, 0x70, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x63, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, - 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x74, 0x61, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x74, 0x74, 0x6c, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x30, 0x5f, - 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, - 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x31, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x32, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, - 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x32, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x32, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x33, 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x33, 0x5f, 0x62, 0x6f, - 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x34, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x65, 0x78, - 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6e, - 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, - 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, - 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, - 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, 0x72, 0x6f, 0x6d, - 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x5f, 0x65, 0x78, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x34, 0x5f, 0x62, 0x6f, 0x73, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x64, + 0x62, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, + 0x69, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x62, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x61, 0x65, 0x74, 0x68, 0x5f, 0x73, 0x79, 0x6e, 0x64, + 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x6d, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6e, 0x70, 0x75, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x16, 0x41, 0x63, 0x6c, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 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, 0x41, 0x63, - 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x08, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, - 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x52, 0x14, 0x61, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 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, 0x41, 0x63, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 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, 0x27, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0a, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, - 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1c, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x38, 0x0a, 0x12, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 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, 0x0f, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, - 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 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, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 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, 0x22, 0x8e, 0x15, 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, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 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, 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, 0x02, 0x48, 0x01, 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, 0x03, 0x48, 0x02, - 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, 0x04, 0x48, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x12, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x3e, 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, - 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x64, 0x70, 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, 0x0a, 0x75, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x02, 0x74, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, - 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 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, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, - 0x48, 0x09, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, - 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 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, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, - 0x0b, 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, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, - 0x48, 0x0c, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x16, 0x62, 0x66, 0x64, 0x5f, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x42, - 0x66, 0x64, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x62, - 0x66, 0x64, 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, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 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, - 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, - 0x03, 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 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, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 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, 0x13, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x12, 0x52, 0x0c, 0x64, 0x73, 0x74, - 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 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, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x12, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x16, 0x52, 0x12, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 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, 0x18, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x17, 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, 0x19, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x18, 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, 0x1a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x19, 0x52, 0x0a, 0x65, - 0x63, 0x68, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x68, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x1a, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x68, - 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x63, 0x62, 0x69, 0x74, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x1b, 0x52, 0x04, 0x63, - 0x62, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, - 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1c, - 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, - 0x6e, 0x5f, 0x72, 0x78, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1e, 0x48, 0x1d, 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, 0x1f, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1e, 0x52, 0x0a, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x20, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1f, 0x52, 0x0b, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x18, 0x21, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x20, 0x52, 0x0b, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 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, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x21, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x63, 0x6c, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x5f, 0x62, 0x69, 0x74, 0x73, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x1c, + 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x62, + 0x69, 0x74, 0x73, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x22, 0xd3, 0x01, 0x0a, + 0x1b, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 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, 0x51, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x22, 0x89, 0x03, 0x0a, 0x16, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x49, 0x0a, + 0x09, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 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, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, 0x6c, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, + 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 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, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x14, 0x61, 0x63, 0x6c, + 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x49, 0x0a, 0x04, 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, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 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, 0x27, 0x0a, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc7, + 0x02, 0x0a, 0x1c, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x38, 0x0a, 0x12, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 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, 0x0f, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x61, 0x63, 0x6c, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x63, 0x6c, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 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, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x43, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x14, 0x61, + 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, + 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, + 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, 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, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x23, 0x48, 0x22, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x23, 0x52, 0x0c, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x6f, - 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, 0x48, 0x24, 0x52, 0x0c, 0x6e, 0x65, 0x67, 0x6f, 0x74, - 0x69, 0x61, 0x74, 0x65, 0x64, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x25, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, - 0x69, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x64, 0x69, 0x61, 0x67, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x27, 0x48, 0x26, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x69, 0x61, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x27, 0x52, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 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, 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, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 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, 0x02, 0x48, 0x01, 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, 0x03, 0x48, 0x02, 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, 0x04, 0x48, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, + 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, + 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x64, 0x70, 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, 0x0a, 0x75, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x02, 0x74, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 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, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, + 0x09, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 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, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, + 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, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0c, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x16, 0x62, 0x66, 0x64, 0x5f, 0x65, 0x6e, 0x63, + 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x42, 0x66, + 0x64, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x62, 0x66, + 0x64, 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, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 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, 0x10, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x03, + 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 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, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 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, 0x13, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x12, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x49, + 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 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, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x12, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x16, 0x52, 0x12, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x44, 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, 0x18, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x18, 0x48, 0x17, 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, 0x19, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x18, 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, 0x1a, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x19, 0x52, 0x0a, 0x65, 0x63, + 0x68, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x68, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x1a, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x68, 0x6f, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x63, 0x62, 0x69, 0x74, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x1b, 0x52, 0x04, 0x63, 0x62, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1c, 0x52, + 0x05, 0x6d, 0x69, 0x6e, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, + 0x5f, 0x72, 0x78, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x1e, 0x48, 0x1d, 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, 0x1f, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1e, 0x52, 0x0a, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x20, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1f, 0x52, 0x0b, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x18, 0x21, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x20, 0x52, 0x0b, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 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, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x21, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x23, 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, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x23, 0x48, 0x22, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x24, 0x48, 0x23, 0x52, 0x0c, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6e, 0x65, 0x67, 0x6f, 0x74, + 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, 0x48, 0x24, 0x52, 0x0c, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x64, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x25, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x69, + 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x64, 0x69, 0x61, 0x67, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x27, 0x48, 0x26, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x69, 0x61, 0x67, + 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x27, 0x52, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 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, 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, + 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, 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, 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, - 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, 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, - 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, + 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, + 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, 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, + 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, + 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, 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, 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, + 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, + 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, 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, + 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, + 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, 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, + 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, 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, + 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, - 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, 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, 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, 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, + 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, - 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, + 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, 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, + 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, + 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, 0x02, 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, 0x69, 0x0a, + 0x12, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 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, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x03, 0x52, 0x0f, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, + 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x73, + 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, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 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, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 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, 0x09, 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, 0x07, 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, 0x0a, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, + 0x73, 0x61, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, + 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 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, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 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, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0c, 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, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 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, 0x10, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 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, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, + 0x48, 0x0f, 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, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 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, 0x13, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 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, 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 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, 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, @@ -32997,43 +35757,112 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, + 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, 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, @@ -33055,5416 +35884,5585 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, + 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, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 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, 0x12, + 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, 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, 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, + 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, + 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, + 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, 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, 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, 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, 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, 0x02, 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, 0x69, 0x0a, 0x12, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x63, 0x74, - 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x03, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, - 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x61, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x73, 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, 0x06, 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, 0x07, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 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, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 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, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 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, 0x49, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 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, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x04, 0x73, 0x61, - 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, - 0x0a, 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, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 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, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, - 0x0c, 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, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, - 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, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x10, 0x48, 0x0e, 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, 0x11, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 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, - 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 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, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, - 0x48, 0x11, 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, 0x14, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 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, 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, 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, 0x83, 0x05, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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, - 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, + 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, 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, 0xdc, 0x09, 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, 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, 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, + 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, - 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, - 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, + 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, + 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, 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, + 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, 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, + 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, 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, 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, 0x94, 0x72, 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, 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, + 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, 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, + 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, + 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, 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, + 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, 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, + 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, 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, + 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, - 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, + 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, - 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, - 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, + 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, 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, 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, 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, + 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, + 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, 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, 0x81, 0x04, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, 0x9b, 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, 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, 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, + 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, 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, 0x22, 0xd9, 0x03, 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, 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, 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, + 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, 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, 0xd7, 0x01, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 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, 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, 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, 0xf9, 0x95, 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, + 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, + 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, + 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, + 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, 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, 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, + 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, 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, 0x57, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 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, 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, 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, + 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, 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, 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, + 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, + 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, 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, 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, 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, + 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, 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, + 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, + 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, 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, + 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, + 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, 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, 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, 0xb5, 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, + 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, 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, 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, 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, + 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, + 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, 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, 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, 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, 0x94, 0x05, 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, + 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, 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, 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, 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, 0x92, 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, + 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, 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, 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, + 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, 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, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 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, 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, + 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, 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, + 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, 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, 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, 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, 0xe3, - 0x08, 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, 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, 0x22, 0xdd, 0x05, 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, - 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, 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, 0xd1, 0x02, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, - 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, 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, + 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, 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, 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, + 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, 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, - 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, 0xd5, 0x12, 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, + 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, 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, 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, + 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, + 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, 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, + 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, + 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, 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, + 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, 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, 0x2a, 0xbe, 0x0f, 0x0a, 0x0d, 0x41, - 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, + 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, 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, 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, + 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, - 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, + 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, - 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, + 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, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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, + 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, 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, 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, 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, 0xa8, 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, 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, 0x80, 0x01, 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, 0x31, 0x12, 0x0d, 0x0a, 0x09, - 0x41, 0x50, 0x49, 0x5f, 0x42, 0x4d, 0x54, 0x4f, 0x52, 0x10, 0x31, 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, 0x32, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xe7, 0x06, - 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, 0x4d, 0x41, 0x58, 0x10, 0x31, 0x2a, 0xae, 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, + 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, 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, 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, + 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, + 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, 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, + 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, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x15, 0x42, 0x66, 0x64, + 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, @@ -38724,2343 +41722,2560 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, - 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, 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, + 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, 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, + 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, + 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, + 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, 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, + 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, 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, 0xcc, 0x13, - 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, + 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, 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, 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, + 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, 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, 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, + 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, - 0x44, 0x4e, 0x41, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x91, 0x40, 0x12, 0x21, 0x0a, 0x1c, + 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, 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, 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, + 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, 0x42, 0x46, 0x44, 0x56, 0x36, 0x10, 0x87, 0x80, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x48, + 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, - 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, 0x31, 0x0a, 0x2b, 0x48, + 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, - 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, 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, 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, 0xd1, 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, 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, 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, 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, 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, + 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, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x10, 0x05, 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, + 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, 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, 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, + 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, + 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, - 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, + 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, 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, 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, + 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, 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, + 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, + 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, + 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, + 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, - 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, - 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, + 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, + 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, 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, + 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, 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, + 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, 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, - 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, + 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, - 0x56, 0x34, 0x10, 0x1e, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, + 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, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1f, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, + 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, 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, + 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, + 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, 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, 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, + 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, 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, + 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, 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, - 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, 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, 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, - 0x9a, 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, 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, 0x97, 0x02, 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, 0x68, 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, 0x68, 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, 0x69, 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, 0x6a, 0x12, 0x24, 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, 0x6b, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x98, 0x18, - 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, 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, + 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, 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, + 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, 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, 0x9a, 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, 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, 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, - 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, + 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, 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, - 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, 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, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x68, 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, + 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, 0x31, 0x5f, 0x4c, 0x41, - 0x4e, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, + 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, - 0x32, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, - 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, 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, 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, 0x93, 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, 0x0a, + 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, 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, 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, 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, 0x53, 0x52, 0x32, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, + 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, 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, 0x4c, 0x52, 0x34, 0x10, 0x09, + 0x45, 0x5f, 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, 0x4b, 0x52, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, + 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, 0x4b, 0x52, 0x34, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, + 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, 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, 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, + 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, 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, 0x4c, 0x52, 0x38, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 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, 0x4d, 0x41, 0x58, 0x10, 0x19, 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, + 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, 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, 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, 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, + 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, 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, 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, 0xae, 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, 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, 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, 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, 0x82, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, - 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, 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, + 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, - 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, 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, + 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, - 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, 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, 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, + 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, - 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, 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, + 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, 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, 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, + 0x10, 0x8b, 0x01, 0x12, 0x29, 0x0a, 0x24, 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, 0x5f, 0x55, 0x53, 0x10, 0x8c, 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, + 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, + 0x49, 0x4f, 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, 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, - 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, 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, 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, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xac, + 0x53, 0x10, 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, - 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, + 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, 0x30, 0x10, 0xb8, 0x01, 0x12, 0x2b, 0x0a, 0x26, + 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, 0x31, 0x10, 0xb9, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, + 0x4f, 0x52, 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, 0x32, 0x10, 0xba, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x5f, 0x53, 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, 0x33, - 0x10, 0xbb, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x44, 0x45, 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, 0x34, 0x10, 0xbc, 0x01, + 0x4f, 0x52, 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, 0x35, 0x10, 0xbd, 0x01, 0x12, 0x2b, 0x0a, + 0x5f, 0x45, 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, 0x36, 0x10, 0xbe, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, + 0x52, 0x4f, 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, 0x37, 0x10, 0xbf, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 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, - 0x38, 0x10, 0xc0, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 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, 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, 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, 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, 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, + 0x57, 0x4f, 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, 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, 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, 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, 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, + 0x41, 0x53, 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, - 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, + 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, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x83, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, + 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, 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, 0x54, 0x5f, 0x53, 0x54, + 0x4f, 0x4e, 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, 0x34, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x20, 0x12, + 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, 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, 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, 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, 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, 0x39, 0x0a, + 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, 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, + 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, 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, + 0x53, 0x5f, 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, 0x36, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x40, 0x12, 0x39, + 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, 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, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x7c, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x74, 0x54, + 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, 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, 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, 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, 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, @@ -41135,7 +44350,7 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, - 0xba, 0x0b, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x0a, + 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, @@ -41224,833 +44439,918 @@ var file_dataplane_proto_sai_common_proto_rawDesc = []byte{ 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, 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, 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, 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, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x52, + 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, 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, - 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, 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, 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, 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, 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, - 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, 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, 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, + 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, 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, 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, - 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xd4, 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, 0xd5, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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, 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, 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, + 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, 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, - 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, 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, 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, 0x93, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 0x40, 0x12, + 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, 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, + 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, 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, 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, + 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, 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, 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, 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, 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, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 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, - 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, 0x80, 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, 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, 0x54, 0x41, 0x42, 0x4c, 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, 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, + 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, 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, 0x48, 0x49, - 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, + 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, - 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, + 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, 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, 0xe6, - 0x01, 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, 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, 0x94, 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, + 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, 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, - 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, 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, + 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, 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, 0xc8, 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, + 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, - 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, + 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, 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, 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, + 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, 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, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, - 0x02, 0x2a, 0xac, 0x04, 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, + 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, - 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, + 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, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x5f, 0x54, 0x4f, 0x5f, 0x56, - 0x53, 0x49, 0x44, 0x10, 0x0c, 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, + 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, 0x4d, 0x50, 0x10, 0x02, 0x12, 0x25, 0x0a, - 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, + 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, 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, + 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, 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, 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, - 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, 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, + 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, 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, 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, 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, + 0x54, 0x59, 0x50, 0x45, 0x5f, 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, 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, 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, + 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, 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, + 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 ( @@ -42065,8 +45365,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, 179) -var file_dataplane_proto_sai_common_proto_msgTypes = make([]protoimpl.MessageInfo, 147) +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_goTypes = []any{ (AclActionType)(0), // 0: lemming.dataplane.sai.AclActionType (AclBindPointType)(0), // 1: lemming.dataplane.sai.AclBindPointType @@ -42075,774 +45375,828 @@ var file_dataplane_proto_sai_common_proto_goTypes = []any{ (AclIpType)(0), // 4: lemming.dataplane.sai.AclIpType (AclRangeType)(0), // 5: lemming.dataplane.sai.AclRangeType (AclStage)(0), // 6: lemming.dataplane.sai.AclStage - (AclTableGroupType)(0), // 7: lemming.dataplane.sai.AclTableGroupType - (ApiExtensions)(0), // 8: lemming.dataplane.sai.ApiExtensions - (Api)(0), // 9: lemming.dataplane.sai.Api - (BfdEncapsulationType)(0), // 10: lemming.dataplane.sai.BfdEncapsulationType - (BfdSessionOffloadType)(0), // 11: lemming.dataplane.sai.BfdSessionOffloadType - (BfdSessionStat)(0), // 12: lemming.dataplane.sai.BfdSessionStat - (BfdSessionState)(0), // 13: lemming.dataplane.sai.BfdSessionState - (BfdSessionType)(0), // 14: lemming.dataplane.sai.BfdSessionType - (BridgeFloodControlType)(0), // 15: lemming.dataplane.sai.BridgeFloodControlType - (BridgePortFdbLearningMode)(0), // 16: lemming.dataplane.sai.BridgePortFdbLearningMode - (BridgePortStat)(0), // 17: lemming.dataplane.sai.BridgePortStat - (BridgePortTaggingMode)(0), // 18: lemming.dataplane.sai.BridgePortTaggingMode - (BridgePortType)(0), // 19: lemming.dataplane.sai.BridgePortType - (BridgeStat)(0), // 20: lemming.dataplane.sai.BridgeStat - (BridgeType)(0), // 21: lemming.dataplane.sai.BridgeType - (BufferPoolStat)(0), // 22: lemming.dataplane.sai.BufferPoolStat - (BufferPoolThresholdMode)(0), // 23: lemming.dataplane.sai.BufferPoolThresholdMode - (BufferPoolType)(0), // 24: lemming.dataplane.sai.BufferPoolType - (BufferProfileThresholdMode)(0), // 25: lemming.dataplane.sai.BufferProfileThresholdMode - (BulkOpErrorMode)(0), // 26: lemming.dataplane.sai.BulkOpErrorMode - (CommonApi)(0), // 27: lemming.dataplane.sai.CommonApi - (CounterStat)(0), // 28: lemming.dataplane.sai.CounterStat - (CounterType)(0), // 29: lemming.dataplane.sai.CounterType - (DebugCounterBindMethod)(0), // 30: lemming.dataplane.sai.DebugCounterBindMethod - (DebugCounterType)(0), // 31: lemming.dataplane.sai.DebugCounterType - (DtelEventType)(0), // 32: lemming.dataplane.sai.DtelEventType - (EcnMarkMode)(0), // 33: lemming.dataplane.sai.EcnMarkMode - (ErspanEncapsulationType)(0), // 34: lemming.dataplane.sai.ErspanEncapsulationType - (FdbEntryType)(0), // 35: lemming.dataplane.sai.FdbEntryType - (FdbEvent)(0), // 36: lemming.dataplane.sai.FdbEvent - (FdbFlushEntryType)(0), // 37: lemming.dataplane.sai.FdbFlushEntryType - (HashAlgorithm)(0), // 38: lemming.dataplane.sai.HashAlgorithm - (HostifTableEntryChannelType)(0), // 39: lemming.dataplane.sai.HostifTableEntryChannelType - (HostifTableEntryType)(0), // 40: lemming.dataplane.sai.HostifTableEntryType - (HostifTrapType)(0), // 41: lemming.dataplane.sai.HostifTrapType - (HostifTxType)(0), // 42: lemming.dataplane.sai.HostifTxType - (HostifType)(0), // 43: lemming.dataplane.sai.HostifType - (HostifUserDefinedTrapType)(0), // 44: lemming.dataplane.sai.HostifUserDefinedTrapType - (HostifVlanTag)(0), // 45: lemming.dataplane.sai.HostifVlanTag - (InDropReason)(0), // 46: lemming.dataplane.sai.InDropReason - (IngressPriorityGroupStat)(0), // 47: lemming.dataplane.sai.IngressPriorityGroupStat - (InsegEntryPopQosMode)(0), // 48: lemming.dataplane.sai.InsegEntryPopQosMode - (InsegEntryPopTtlMode)(0), // 49: lemming.dataplane.sai.InsegEntryPopTtlMode - (InsegEntryPscType)(0), // 50: lemming.dataplane.sai.InsegEntryPscType - (IpAddrFamily)(0), // 51: lemming.dataplane.sai.IpAddrFamily - (IpmcEntryType)(0), // 52: lemming.dataplane.sai.IpmcEntryType - (IpsecCipher)(0), // 53: lemming.dataplane.sai.IpsecCipher - (IpsecDirection)(0), // 54: lemming.dataplane.sai.IpsecDirection - (IpsecPortStat)(0), // 55: lemming.dataplane.sai.IpsecPortStat - (IpsecSaOctetCountStatus)(0), // 56: lemming.dataplane.sai.IpsecSaOctetCountStatus - (IpsecSaStat)(0), // 57: lemming.dataplane.sai.IpsecSaStat - (IsolationGroupType)(0), // 58: lemming.dataplane.sai.IsolationGroupType - (L2McEntryType)(0), // 59: lemming.dataplane.sai.L2mcEntryType - (LogLevel)(0), // 60: lemming.dataplane.sai.LogLevel - (MacsecCipherSuite)(0), // 61: lemming.dataplane.sai.MacsecCipherSuite - (MacsecDirection)(0), // 62: lemming.dataplane.sai.MacsecDirection - (MacsecFlowStat)(0), // 63: lemming.dataplane.sai.MacsecFlowStat - (MacsecMaxSecureAssociationsPerSc)(0), // 64: lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc - (MacsecPortStat)(0), // 65: lemming.dataplane.sai.MacsecPortStat - (MacsecSaStat)(0), // 66: lemming.dataplane.sai.MacsecSaStat - (MacsecScStat)(0), // 67: lemming.dataplane.sai.MacsecScStat - (MeterType)(0), // 68: lemming.dataplane.sai.MeterType - (MirrorSessionCongestionMode)(0), // 69: lemming.dataplane.sai.MirrorSessionCongestionMode - (MirrorSessionType)(0), // 70: lemming.dataplane.sai.MirrorSessionType - (MySidEntryEndpointBehaviorFlavor)(0), // 71: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - (MySidEntryEndpointBehavior)(0), // 72: lemming.dataplane.sai.MySidEntryEndpointBehavior - (NatEvent)(0), // 73: lemming.dataplane.sai.NatEvent - (NatType)(0), // 74: lemming.dataplane.sai.NatType - (NativeHashField)(0), // 75: lemming.dataplane.sai.NativeHashField - (NextHopGroupMapType)(0), // 76: lemming.dataplane.sai.NextHopGroupMapType - (NextHopGroupMemberConfiguredRole)(0), // 77: lemming.dataplane.sai.NextHopGroupMemberConfiguredRole - (NextHopGroupMemberObservedRole)(0), // 78: lemming.dataplane.sai.NextHopGroupMemberObservedRole - (NextHopGroupType)(0), // 79: lemming.dataplane.sai.NextHopGroupType - (NextHopType)(0), // 80: lemming.dataplane.sai.NextHopType - (ObjectStage)(0), // 81: lemming.dataplane.sai.ObjectStage - (ObjectTypeExtensions)(0), // 82: lemming.dataplane.sai.ObjectTypeExtensions - (ObjectType)(0), // 83: lemming.dataplane.sai.ObjectType - (OutDropReason)(0), // 84: lemming.dataplane.sai.OutDropReason - (OutsegExpMode)(0), // 85: lemming.dataplane.sai.OutsegExpMode - (OutsegTtlMode)(0), // 86: lemming.dataplane.sai.OutsegTtlMode - (OutsegType)(0), // 87: lemming.dataplane.sai.OutsegType - (PacketAction)(0), // 88: lemming.dataplane.sai.PacketAction - (PacketColor)(0), // 89: lemming.dataplane.sai.PacketColor - (PacketVlan)(0), // 90: lemming.dataplane.sai.PacketVlan - (PolicerColorSource)(0), // 91: lemming.dataplane.sai.PolicerColorSource - (PolicerMode)(0), // 92: lemming.dataplane.sai.PolicerMode - (PolicerStat)(0), // 93: lemming.dataplane.sai.PolicerStat - (PortAutoNegConfigMode)(0), // 94: lemming.dataplane.sai.PortAutoNegConfigMode - (PortBreakoutModeType)(0), // 95: lemming.dataplane.sai.PortBreakoutModeType - (PortConnectorFailoverMode)(0), // 96: lemming.dataplane.sai.PortConnectorFailoverMode - (PortDualMedia)(0), // 97: lemming.dataplane.sai.PortDualMedia - (PortErrStatus)(0), // 98: lemming.dataplane.sai.PortErrStatus - (PortFecModeExtended)(0), // 99: lemming.dataplane.sai.PortFecModeExtended - (PortFecMode)(0), // 100: lemming.dataplane.sai.PortFecMode - (PortFlowControlMode)(0), // 101: lemming.dataplane.sai.PortFlowControlMode - (PortInterfaceType)(0), // 102: lemming.dataplane.sai.PortInterfaceType - (PortInternalLoopbackMode)(0), // 103: lemming.dataplane.sai.PortInternalLoopbackMode - (PortLinkTrainingFailureStatus)(0), // 104: lemming.dataplane.sai.PortLinkTrainingFailureStatus - (PortLinkTrainingRxStatus)(0), // 105: lemming.dataplane.sai.PortLinkTrainingRxStatus - (PortLoopbackMode)(0), // 106: lemming.dataplane.sai.PortLoopbackMode - (PortMdixModeConfig)(0), // 107: lemming.dataplane.sai.PortMdixModeConfig - (PortMdixModeStatus)(0), // 108: lemming.dataplane.sai.PortMdixModeStatus - (PortMediaType)(0), // 109: lemming.dataplane.sai.PortMediaType - (PortModuleType)(0), // 110: lemming.dataplane.sai.PortModuleType - (PortOperStatus)(0), // 111: lemming.dataplane.sai.PortOperStatus - (PortPoolStat)(0), // 112: lemming.dataplane.sai.PortPoolStat - (PortPrbsConfig)(0), // 113: lemming.dataplane.sai.PortPrbsConfig - (PortPrbsRxStatus)(0), // 114: lemming.dataplane.sai.PortPrbsRxStatus - (PortPriorityFlowControlMode)(0), // 115: lemming.dataplane.sai.PortPriorityFlowControlMode - (PortPtpMode)(0), // 116: lemming.dataplane.sai.PortPtpMode - (PortStat)(0), // 117: lemming.dataplane.sai.PortStat - (PortType)(0), // 118: lemming.dataplane.sai.PortType - (QosMapType)(0), // 119: lemming.dataplane.sai.QosMapType - (QueuePfcContinuousDeadlockState)(0), // 120: lemming.dataplane.sai.QueuePfcContinuousDeadlockState - (QueuePfcDeadlockEventType)(0), // 121: lemming.dataplane.sai.QueuePfcDeadlockEventType - (QueueStat)(0), // 122: lemming.dataplane.sai.QueueStat - (QueueType)(0), // 123: lemming.dataplane.sai.QueueType - (RouterInterfaceStat)(0), // 124: lemming.dataplane.sai.RouterInterfaceStat - (RouterInterfaceType)(0), // 125: lemming.dataplane.sai.RouterInterfaceType - (SamplepacketMode)(0), // 126: lemming.dataplane.sai.SamplepacketMode - (SamplepacketType)(0), // 127: lemming.dataplane.sai.SamplepacketType - (SchedulingType)(0), // 128: lemming.dataplane.sai.SchedulingType - (Srv6SidlistType)(0), // 129: lemming.dataplane.sai.Srv6SidlistType - (StatsMode)(0), // 130: lemming.dataplane.sai.StatsMode - (StpPortState)(0), // 131: lemming.dataplane.sai.StpPortState - (SwitchAttrExtensions)(0), // 132: lemming.dataplane.sai.SwitchAttrExtensions - (SwitchFailoverConfigMode)(0), // 133: lemming.dataplane.sai.SwitchFailoverConfigMode - (SwitchFirmwareLoadMethod)(0), // 134: lemming.dataplane.sai.SwitchFirmwareLoadMethod - (SwitchFirmwareLoadType)(0), // 135: lemming.dataplane.sai.SwitchFirmwareLoadType - (SwitchHardwareAccessBus)(0), // 136: lemming.dataplane.sai.SwitchHardwareAccessBus - (SwitchMcastSnoopingCapability)(0), // 137: lemming.dataplane.sai.SwitchMcastSnoopingCapability - (SwitchOperStatus)(0), // 138: lemming.dataplane.sai.SwitchOperStatus - (SwitchRestartType)(0), // 139: lemming.dataplane.sai.SwitchRestartType - (SwitchStat)(0), // 140: lemming.dataplane.sai.SwitchStat - (SwitchSwitchingMode)(0), // 141: lemming.dataplane.sai.SwitchSwitchingMode - (SwitchType)(0), // 142: lemming.dataplane.sai.SwitchType - (SystemPortType)(0), // 143: lemming.dataplane.sai.SystemPortType - (TableBitmapClassificationEntryAction)(0), // 144: lemming.dataplane.sai.TableBitmapClassificationEntryAction - (TableBitmapClassificationEntryStat)(0), // 145: lemming.dataplane.sai.TableBitmapClassificationEntryStat - (TableBitmapRouterEntryAction)(0), // 146: lemming.dataplane.sai.TableBitmapRouterEntryAction - (TableBitmapRouterEntryStat)(0), // 147: lemming.dataplane.sai.TableBitmapRouterEntryStat - (TableMetaTunnelEntryAction)(0), // 148: lemming.dataplane.sai.TableMetaTunnelEntryAction - (TableMetaTunnelEntryStat)(0), // 149: lemming.dataplane.sai.TableMetaTunnelEntryStat - (TamBindPointType)(0), // 150: lemming.dataplane.sai.TamBindPointType - (TamEventThresholdUnit)(0), // 151: lemming.dataplane.sai.TamEventThresholdUnit - (TamEventType)(0), // 152: lemming.dataplane.sai.TamEventType - (TamIntPresenceType)(0), // 153: lemming.dataplane.sai.TamIntPresenceType - (TamIntType)(0), // 154: lemming.dataplane.sai.TamIntType - (TamReportMode)(0), // 155: lemming.dataplane.sai.TamReportMode - (TamReportType)(0), // 156: lemming.dataplane.sai.TamReportType - (TamReportingUnit)(0), // 157: lemming.dataplane.sai.TamReportingUnit - (TamTelMathFuncType)(0), // 158: lemming.dataplane.sai.TamTelMathFuncType - (TamTelemetryType)(0), // 159: lemming.dataplane.sai.TamTelemetryType - (TamTransportAuthType)(0), // 160: lemming.dataplane.sai.TamTransportAuthType - (TamTransportType)(0), // 161: lemming.dataplane.sai.TamTransportType - (TlvType)(0), // 162: lemming.dataplane.sai.TlvType - (TunnelDecapEcnMode)(0), // 163: lemming.dataplane.sai.TunnelDecapEcnMode - (TunnelDscpMode)(0), // 164: lemming.dataplane.sai.TunnelDscpMode - (TunnelEncapEcnMode)(0), // 165: lemming.dataplane.sai.TunnelEncapEcnMode - (TunnelMapType)(0), // 166: lemming.dataplane.sai.TunnelMapType - (TunnelPeerMode)(0), // 167: lemming.dataplane.sai.TunnelPeerMode - (TunnelStat)(0), // 168: lemming.dataplane.sai.TunnelStat - (TunnelTermTableEntryType)(0), // 169: lemming.dataplane.sai.TunnelTermTableEntryType - (TunnelTtlMode)(0), // 170: lemming.dataplane.sai.TunnelTtlMode - (TunnelType)(0), // 171: lemming.dataplane.sai.TunnelType - (TunnelVxlanUdpSportMode)(0), // 172: lemming.dataplane.sai.TunnelVxlanUdpSportMode - (UdfBase)(0), // 173: lemming.dataplane.sai.UdfBase - (UdfGroupType)(0), // 174: lemming.dataplane.sai.UdfGroupType - (VlanFloodControlType)(0), // 175: lemming.dataplane.sai.VlanFloodControlType - (VlanMcastLookupKeyType)(0), // 176: lemming.dataplane.sai.VlanMcastLookupKeyType - (VlanStat)(0), // 177: lemming.dataplane.sai.VlanStat - (VlanTaggingMode)(0), // 178: lemming.dataplane.sai.VlanTaggingMode - (*AclActionData)(nil), // 179: lemming.dataplane.sai.AclActionData - (*ACLCapability)(nil), // 180: lemming.dataplane.sai.ACLCapability - (*AclFieldData)(nil), // 181: lemming.dataplane.sai.AclFieldData - (*Uint64List)(nil), // 182: lemming.dataplane.sai.Uint64List - (*ACLResource)(nil), // 183: lemming.dataplane.sai.ACLResource - (*BfdSessionStateChangeNotificationData)(nil), // 184: lemming.dataplane.sai.BfdSessionStateChangeNotificationData - (*FabricPortReachability)(nil), // 185: lemming.dataplane.sai.FabricPortReachability - (*FdbEntry)(nil), // 186: lemming.dataplane.sai.FdbEntry - (*FdbEventNotificationData)(nil), // 187: lemming.dataplane.sai.FdbEventNotificationData - (*InsegEntry)(nil), // 188: lemming.dataplane.sai.InsegEntry - (*IpPrefix)(nil), // 189: lemming.dataplane.sai.IpPrefix - (*IpmcEntry)(nil), // 190: lemming.dataplane.sai.IpmcEntry - (*IpsecSaStatusNotificationData)(nil), // 191: lemming.dataplane.sai.IpsecSaStatusNotificationData - (*L2McEntry)(nil), // 192: lemming.dataplane.sai.L2mcEntry - (*LatchStatus)(nil), // 193: lemming.dataplane.sai.LatchStatus - (*UintMap)(nil), // 194: lemming.dataplane.sai.UintMap - (*McastFdbEntry)(nil), // 195: lemming.dataplane.sai.McastFdbEntry - (*MySidEntry)(nil), // 196: lemming.dataplane.sai.MySidEntry - (*NatEntryData)(nil), // 197: lemming.dataplane.sai.NatEntryData - (*NatEntry)(nil), // 198: lemming.dataplane.sai.NatEntry - (*NeighborEntry)(nil), // 199: lemming.dataplane.sai.NeighborEntry - (*PortEyeValues)(nil), // 200: lemming.dataplane.sai.PortEyeValues - (*PortLaneLatchStatus)(nil), // 201: lemming.dataplane.sai.PortLaneLatchStatus - (*PortOperStatusNotification)(nil), // 202: lemming.dataplane.sai.PortOperStatusNotification - (*PRBS_RXState)(nil), // 203: lemming.dataplane.sai.PRBS_RXState - (*QOSMapParams)(nil), // 204: lemming.dataplane.sai.QOSMapParams - (*QOSMap)(nil), // 205: lemming.dataplane.sai.QOSMap - (*QueueDeadlockNotificationData)(nil), // 206: lemming.dataplane.sai.QueueDeadlockNotificationData - (*RouteEntry)(nil), // 207: lemming.dataplane.sai.RouteEntry - (*SystemPortConfig)(nil), // 208: lemming.dataplane.sai.SystemPortConfig - (*HMAC)(nil), // 209: lemming.dataplane.sai.HMAC - (*TLVEntry)(nil), // 210: lemming.dataplane.sai.TLVEntry - (*Uint32Range)(nil), // 211: lemming.dataplane.sai.Uint32Range - (*ObjectTypeQueryRequest)(nil), // 212: lemming.dataplane.sai.ObjectTypeQueryRequest - (*ObjectTypeQueryResponse)(nil), // 213: lemming.dataplane.sai.ObjectTypeQueryResponse - (*InitializeRequest)(nil), // 214: lemming.dataplane.sai.InitializeRequest - (*InitializeResponse)(nil), // 215: lemming.dataplane.sai.InitializeResponse - (*UninitializeRequest)(nil), // 216: lemming.dataplane.sai.UninitializeRequest - (*UninitializeResponse)(nil), // 217: lemming.dataplane.sai.UninitializeResponse - (*AclCounterAttribute)(nil), // 218: lemming.dataplane.sai.AclCounterAttribute - (*AclEntryAttribute)(nil), // 219: lemming.dataplane.sai.AclEntryAttribute - (*AclRangeAttribute)(nil), // 220: lemming.dataplane.sai.AclRangeAttribute - (*AclTableAttribute)(nil), // 221: lemming.dataplane.sai.AclTableAttribute - (*AclTableGroupAttribute)(nil), // 222: lemming.dataplane.sai.AclTableGroupAttribute - (*AclTableGroupMemberAttribute)(nil), // 223: lemming.dataplane.sai.AclTableGroupMemberAttribute - (*BfdSessionAttribute)(nil), // 224: lemming.dataplane.sai.BfdSessionAttribute - (*BridgeAttribute)(nil), // 225: lemming.dataplane.sai.BridgeAttribute - (*BridgePortAttribute)(nil), // 226: lemming.dataplane.sai.BridgePortAttribute - (*BufferPoolAttribute)(nil), // 227: lemming.dataplane.sai.BufferPoolAttribute - (*BufferProfileAttribute)(nil), // 228: lemming.dataplane.sai.BufferProfileAttribute - (*CounterAttribute)(nil), // 229: lemming.dataplane.sai.CounterAttribute - (*DebugCounterAttribute)(nil), // 230: lemming.dataplane.sai.DebugCounterAttribute - (*DtelAttribute)(nil), // 231: lemming.dataplane.sai.DtelAttribute - (*DtelEventAttribute)(nil), // 232: lemming.dataplane.sai.DtelEventAttribute - (*DtelIntSessionAttribute)(nil), // 233: lemming.dataplane.sai.DtelIntSessionAttribute - (*DtelQueueReportAttribute)(nil), // 234: lemming.dataplane.sai.DtelQueueReportAttribute - (*DtelReportSessionAttribute)(nil), // 235: lemming.dataplane.sai.DtelReportSessionAttribute - (*FdbEntryAttribute)(nil), // 236: lemming.dataplane.sai.FdbEntryAttribute - (*FdbFlushAttribute)(nil), // 237: lemming.dataplane.sai.FdbFlushAttribute - (*FineGrainedHashFieldAttribute)(nil), // 238: lemming.dataplane.sai.FineGrainedHashFieldAttribute - (*GenericProgrammableAttribute)(nil), // 239: lemming.dataplane.sai.GenericProgrammableAttribute - (*HashAttribute)(nil), // 240: lemming.dataplane.sai.HashAttribute - (*HostifAttribute)(nil), // 241: lemming.dataplane.sai.HostifAttribute - (*HostifPacketAttribute)(nil), // 242: lemming.dataplane.sai.HostifPacketAttribute - (*HostifTableEntryAttribute)(nil), // 243: lemming.dataplane.sai.HostifTableEntryAttribute - (*HostifTrapAttribute)(nil), // 244: lemming.dataplane.sai.HostifTrapAttribute - (*HostifTrapGroupAttribute)(nil), // 245: lemming.dataplane.sai.HostifTrapGroupAttribute - (*HostifUserDefinedTrapAttribute)(nil), // 246: lemming.dataplane.sai.HostifUserDefinedTrapAttribute - (*IngressPriorityGroupAttribute)(nil), // 247: lemming.dataplane.sai.IngressPriorityGroupAttribute - (*InsegEntryAttribute)(nil), // 248: lemming.dataplane.sai.InsegEntryAttribute - (*IpmcEntryAttribute)(nil), // 249: lemming.dataplane.sai.IpmcEntryAttribute - (*IpmcGroupAttribute)(nil), // 250: lemming.dataplane.sai.IpmcGroupAttribute - (*IpmcGroupMemberAttribute)(nil), // 251: lemming.dataplane.sai.IpmcGroupMemberAttribute - (*IpsecAttribute)(nil), // 252: lemming.dataplane.sai.IpsecAttribute - (*IpsecPortAttribute)(nil), // 253: lemming.dataplane.sai.IpsecPortAttribute - (*IpsecSaAttribute)(nil), // 254: lemming.dataplane.sai.IpsecSaAttribute - (*IsolationGroupAttribute)(nil), // 255: lemming.dataplane.sai.IsolationGroupAttribute - (*IsolationGroupMemberAttribute)(nil), // 256: lemming.dataplane.sai.IsolationGroupMemberAttribute - (*L2McEntryAttribute)(nil), // 257: lemming.dataplane.sai.L2mcEntryAttribute - (*L2McGroupAttribute)(nil), // 258: lemming.dataplane.sai.L2mcGroupAttribute - (*L2McGroupMemberAttribute)(nil), // 259: lemming.dataplane.sai.L2mcGroupMemberAttribute - (*LagAttribute)(nil), // 260: lemming.dataplane.sai.LagAttribute - (*LagMemberAttribute)(nil), // 261: lemming.dataplane.sai.LagMemberAttribute - (*MacsecAttribute)(nil), // 262: lemming.dataplane.sai.MacsecAttribute - (*MacsecFlowAttribute)(nil), // 263: lemming.dataplane.sai.MacsecFlowAttribute - (*MacsecPortAttribute)(nil), // 264: lemming.dataplane.sai.MacsecPortAttribute - (*MacsecSaAttribute)(nil), // 265: lemming.dataplane.sai.MacsecSaAttribute - (*MacsecScAttribute)(nil), // 266: lemming.dataplane.sai.MacsecScAttribute - (*McastFdbEntryAttribute)(nil), // 267: lemming.dataplane.sai.McastFdbEntryAttribute - (*MirrorSessionAttribute)(nil), // 268: lemming.dataplane.sai.MirrorSessionAttribute - (*MyMacAttribute)(nil), // 269: lemming.dataplane.sai.MyMacAttribute - (*MySidEntryAttribute)(nil), // 270: lemming.dataplane.sai.MySidEntryAttribute - (*NatEntryAttribute)(nil), // 271: lemming.dataplane.sai.NatEntryAttribute - (*NatZoneCounterAttribute)(nil), // 272: lemming.dataplane.sai.NatZoneCounterAttribute - (*NeighborEntryAttribute)(nil), // 273: lemming.dataplane.sai.NeighborEntryAttribute - (*NextHopAttribute)(nil), // 274: lemming.dataplane.sai.NextHopAttribute - (*NextHopGroupAttribute)(nil), // 275: lemming.dataplane.sai.NextHopGroupAttribute - (*NextHopGroupMapAttribute)(nil), // 276: lemming.dataplane.sai.NextHopGroupMapAttribute - (*NextHopGroupMemberAttribute)(nil), // 277: lemming.dataplane.sai.NextHopGroupMemberAttribute - (*PolicerAttribute)(nil), // 278: lemming.dataplane.sai.PolicerAttribute - (*PortAttribute)(nil), // 279: lemming.dataplane.sai.PortAttribute - (*PortConnectorAttribute)(nil), // 280: lemming.dataplane.sai.PortConnectorAttribute - (*PortPoolAttribute)(nil), // 281: lemming.dataplane.sai.PortPoolAttribute - (*PortSerdesAttribute)(nil), // 282: lemming.dataplane.sai.PortSerdesAttribute - (*QosMapAttribute)(nil), // 283: lemming.dataplane.sai.QosMapAttribute - (*QueueAttribute)(nil), // 284: lemming.dataplane.sai.QueueAttribute - (*RouterInterfaceAttribute)(nil), // 285: lemming.dataplane.sai.RouterInterfaceAttribute - (*RouteEntryAttribute)(nil), // 286: lemming.dataplane.sai.RouteEntryAttribute - (*RpfGroupAttribute)(nil), // 287: lemming.dataplane.sai.RpfGroupAttribute - (*RpfGroupMemberAttribute)(nil), // 288: lemming.dataplane.sai.RpfGroupMemberAttribute - (*SamplepacketAttribute)(nil), // 289: lemming.dataplane.sai.SamplepacketAttribute - (*SchedulerAttribute)(nil), // 290: lemming.dataplane.sai.SchedulerAttribute - (*SchedulerGroupAttribute)(nil), // 291: lemming.dataplane.sai.SchedulerGroupAttribute - (*Srv6SidlistAttribute)(nil), // 292: lemming.dataplane.sai.Srv6SidlistAttribute - (*StpAttribute)(nil), // 293: lemming.dataplane.sai.StpAttribute - (*StpPortAttribute)(nil), // 294: lemming.dataplane.sai.StpPortAttribute - (*SwitchAttribute)(nil), // 295: lemming.dataplane.sai.SwitchAttribute - (*SwitchTunnelAttribute)(nil), // 296: lemming.dataplane.sai.SwitchTunnelAttribute - (*SystemPortAttribute)(nil), // 297: lemming.dataplane.sai.SystemPortAttribute - (*TableBitmapClassificationEntryAttribute)(nil), // 298: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute - (*TableBitmapRouterEntryAttribute)(nil), // 299: lemming.dataplane.sai.TableBitmapRouterEntryAttribute - (*TableMetaTunnelEntryAttribute)(nil), // 300: lemming.dataplane.sai.TableMetaTunnelEntryAttribute - (*TamAttribute)(nil), // 301: lemming.dataplane.sai.TamAttribute - (*TamCollectorAttribute)(nil), // 302: lemming.dataplane.sai.TamCollectorAttribute - (*TamEventAttribute)(nil), // 303: lemming.dataplane.sai.TamEventAttribute - (*TamEventActionAttribute)(nil), // 304: lemming.dataplane.sai.TamEventActionAttribute - (*TamEventThresholdAttribute)(nil), // 305: lemming.dataplane.sai.TamEventThresholdAttribute - (*TamIntAttribute)(nil), // 306: lemming.dataplane.sai.TamIntAttribute - (*TamMathFuncAttribute)(nil), // 307: lemming.dataplane.sai.TamMathFuncAttribute - (*TamReportAttribute)(nil), // 308: lemming.dataplane.sai.TamReportAttribute - (*TamTelemetryAttribute)(nil), // 309: lemming.dataplane.sai.TamTelemetryAttribute - (*TamTelTypeAttribute)(nil), // 310: lemming.dataplane.sai.TamTelTypeAttribute - (*TamTransportAttribute)(nil), // 311: lemming.dataplane.sai.TamTransportAttribute - (*TunnelAttribute)(nil), // 312: lemming.dataplane.sai.TunnelAttribute - (*TunnelMapAttribute)(nil), // 313: lemming.dataplane.sai.TunnelMapAttribute - (*TunnelMapEntryAttribute)(nil), // 314: lemming.dataplane.sai.TunnelMapEntryAttribute - (*TunnelTermTableEntryAttribute)(nil), // 315: lemming.dataplane.sai.TunnelTermTableEntryAttribute - (*UdfAttribute)(nil), // 316: lemming.dataplane.sai.UdfAttribute - (*UdfGroupAttribute)(nil), // 317: lemming.dataplane.sai.UdfGroupAttribute - (*UdfMatchAttribute)(nil), // 318: lemming.dataplane.sai.UdfMatchAttribute - (*VirtualRouterAttribute)(nil), // 319: lemming.dataplane.sai.VirtualRouterAttribute - (*VlanAttribute)(nil), // 320: lemming.dataplane.sai.VlanAttribute - (*VlanMemberAttribute)(nil), // 321: lemming.dataplane.sai.VlanMemberAttribute - (*WredAttribute)(nil), // 322: lemming.dataplane.sai.WredAttribute - nil, // 323: lemming.dataplane.sai.UintMap.UintmapEntry - nil, // 324: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry - nil, // 325: lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry - (*timestamppb.Timestamp)(nil), // 326: google.protobuf.Timestamp - (*descriptorpb.FieldOptions)(nil), // 327: google.protobuf.FieldOptions - (*descriptorpb.MessageOptions)(nil), // 328: google.protobuf.MessageOptions + (AclTableChainGroupStage)(0), // 7: lemming.dataplane.sai.AclTableChainGroupStage + (AclTableChainGroupType)(0), // 8: lemming.dataplane.sai.AclTableChainGroupType + (AclTableGroupType)(0), // 9: lemming.dataplane.sai.AclTableGroupType + (AclTableMatchType)(0), // 10: lemming.dataplane.sai.AclTableMatchType + (AclTableSupportedMatchType)(0), // 11: lemming.dataplane.sai.AclTableSupportedMatchType + (ApiExtensions)(0), // 12: lemming.dataplane.sai.ApiExtensions + (Api)(0), // 13: lemming.dataplane.sai.Api + (BfdEncapsulationType)(0), // 14: lemming.dataplane.sai.BfdEncapsulationType + (BfdSessionOffloadType)(0), // 15: lemming.dataplane.sai.BfdSessionOffloadType + (BfdSessionStat)(0), // 16: lemming.dataplane.sai.BfdSessionStat + (BfdSessionState)(0), // 17: lemming.dataplane.sai.BfdSessionState + (BfdSessionType)(0), // 18: lemming.dataplane.sai.BfdSessionType + (BridgeFloodControlType)(0), // 19: lemming.dataplane.sai.BridgeFloodControlType + (BridgePortFdbLearningMode)(0), // 20: lemming.dataplane.sai.BridgePortFdbLearningMode + (BridgePortStat)(0), // 21: lemming.dataplane.sai.BridgePortStat + (BridgePortTaggingMode)(0), // 22: lemming.dataplane.sai.BridgePortTaggingMode + (BridgePortType)(0), // 23: lemming.dataplane.sai.BridgePortType + (BridgeStat)(0), // 24: lemming.dataplane.sai.BridgeStat + (BridgeType)(0), // 25: lemming.dataplane.sai.BridgeType + (BufferPoolStat)(0), // 26: lemming.dataplane.sai.BufferPoolStat + (BufferPoolThresholdMode)(0), // 27: lemming.dataplane.sai.BufferPoolThresholdMode + (BufferPoolType)(0), // 28: lemming.dataplane.sai.BufferPoolType + (BufferProfileThresholdMode)(0), // 29: lemming.dataplane.sai.BufferProfileThresholdMode + (BulkOpErrorMode)(0), // 30: lemming.dataplane.sai.BulkOpErrorMode + (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 } var file_dataplane_proto_sai_common_proto_depIdxs = []int32{ - 182, // 0: lemming.dataplane.sai.AclActionData.objlist:type_name -> lemming.dataplane.sai.Uint64List - 88, // 1: lemming.dataplane.sai.AclActionData.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 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 0, // 2: lemming.dataplane.sai.ACLCapability.action_list:type_name -> lemming.dataplane.sai.AclActionType - 182, // 3: lemming.dataplane.sai.AclFieldData.mask_list:type_name -> lemming.dataplane.sai.Uint64List - 182, // 4: lemming.dataplane.sai.AclFieldData.data_list:type_name -> lemming.dataplane.sai.Uint64List + 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 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 - 13, // 8: lemming.dataplane.sai.BfdSessionStateChangeNotificationData.session_state:type_name -> lemming.dataplane.sai.BfdSessionState - 36, // 9: lemming.dataplane.sai.FdbEventNotificationData.event_type:type_name -> lemming.dataplane.sai.FdbEvent - 186, // 10: lemming.dataplane.sai.FdbEventNotificationData.fdb_entry:type_name -> lemming.dataplane.sai.FdbEntry - 236, // 11: lemming.dataplane.sai.FdbEventNotificationData.attrs:type_name -> lemming.dataplane.sai.FdbEntryAttribute - 52, // 12: lemming.dataplane.sai.IpmcEntry.type:type_name -> lemming.dataplane.sai.IpmcEntryType - 56, // 13: lemming.dataplane.sai.IpsecSaStatusNotificationData.ipsec_sa_octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus - 59, // 14: lemming.dataplane.sai.L2mcEntry.type:type_name -> lemming.dataplane.sai.L2mcEntryType - 323, // 15: lemming.dataplane.sai.UintMap.uintmap:type_name -> lemming.dataplane.sai.UintMap.UintmapEntry - 74, // 16: lemming.dataplane.sai.NatEntry.nat_type:type_name -> lemming.dataplane.sai.NatType - 197, // 17: lemming.dataplane.sai.NatEntry.data:type_name -> lemming.dataplane.sai.NatEntryData - 193, // 18: lemming.dataplane.sai.PortLaneLatchStatus.value:type_name -> lemming.dataplane.sai.LatchStatus - 111, // 19: lemming.dataplane.sai.PortOperStatusNotification.port_state:type_name -> lemming.dataplane.sai.PortOperStatus - 114, // 20: lemming.dataplane.sai.PRBS_RXState.rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus - 89, // 21: lemming.dataplane.sai.QOSMapParams.color:type_name -> lemming.dataplane.sai.PacketColor - 204, // 22: lemming.dataplane.sai.QOSMap.key:type_name -> lemming.dataplane.sai.QOSMapParams - 204, // 23: lemming.dataplane.sai.QOSMap.value:type_name -> lemming.dataplane.sai.QOSMapParams - 121, // 24: lemming.dataplane.sai.QueueDeadlockNotificationData.event:type_name -> lemming.dataplane.sai.QueuePfcDeadlockEventType - 189, // 25: lemming.dataplane.sai.RouteEntry.destination:type_name -> lemming.dataplane.sai.IpPrefix - 209, // 26: lemming.dataplane.sai.TLVEntry.hmac:type_name -> lemming.dataplane.sai.HMAC - 83, // 27: lemming.dataplane.sai.ObjectTypeQueryResponse.type:type_name -> lemming.dataplane.sai.ObjectType - 181, // 28: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 29: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 30: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 31: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 32: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 33: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 34: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 35: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 36: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 37: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 38: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 39: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 40: lemming.dataplane.sai.AclEntryAttribute.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 41: lemming.dataplane.sai.AclEntryAttribute.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 42: lemming.dataplane.sai.AclEntryAttribute.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 43: lemming.dataplane.sai.AclEntryAttribute.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 44: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 45: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 46: lemming.dataplane.sai.AclEntryAttribute.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 47: lemming.dataplane.sai.AclEntryAttribute.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 48: lemming.dataplane.sai.AclEntryAttribute.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 49: lemming.dataplane.sai.AclEntryAttribute.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 50: lemming.dataplane.sai.AclEntryAttribute.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 51: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 52: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 53: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 54: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 55: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 56: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 57: lemming.dataplane.sai.AclEntryAttribute.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 58: lemming.dataplane.sai.AclEntryAttribute.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 59: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 60: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 61: lemming.dataplane.sai.AclEntryAttribute.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 62: lemming.dataplane.sai.AclEntryAttribute.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 63: lemming.dataplane.sai.AclEntryAttribute.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 64: lemming.dataplane.sai.AclEntryAttribute.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 65: lemming.dataplane.sai.AclEntryAttribute.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 66: lemming.dataplane.sai.AclEntryAttribute.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 67: lemming.dataplane.sai.AclEntryAttribute.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 68: lemming.dataplane.sai.AclEntryAttribute.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 69: lemming.dataplane.sai.AclEntryAttribute.field_tos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 70: lemming.dataplane.sai.AclEntryAttribute.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 71: lemming.dataplane.sai.AclEntryAttribute.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 72: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 73: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 74: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 75: lemming.dataplane.sai.AclEntryAttribute.field_tc:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 76: lemming.dataplane.sai.AclEntryAttribute.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 77: lemming.dataplane.sai.AclEntryAttribute.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 78: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 79: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 80: lemming.dataplane.sai.AclEntryAttribute.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 81: lemming.dataplane.sai.AclEntryAttribute.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 82: lemming.dataplane.sai.AclEntryAttribute.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 83: lemming.dataplane.sai.AclEntryAttribute.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 84: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 85: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 86: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 87: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 88: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 89: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 90: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 91: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 92: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 93: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 94: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 95: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 96: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 97: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 98: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 99: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 100: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 101: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 102: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 103: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 104: lemming.dataplane.sai.AclEntryAttribute.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 105: lemming.dataplane.sai.AclEntryAttribute.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 106: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 107: lemming.dataplane.sai.AclEntryAttribute.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 108: lemming.dataplane.sai.AclEntryAttribute.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 109: lemming.dataplane.sai.AclEntryAttribute.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 110: lemming.dataplane.sai.AclEntryAttribute.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 111: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 112: lemming.dataplane.sai.AclEntryAttribute.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 113: lemming.dataplane.sai.AclEntryAttribute.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 114: lemming.dataplane.sai.AclEntryAttribute.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData - 324, // 115: lemming.dataplane.sai.AclEntryAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry - 181, // 116: lemming.dataplane.sai.AclEntryAttribute.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 117: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 118: lemming.dataplane.sai.AclEntryAttribute.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 119: lemming.dataplane.sai.AclEntryAttribute.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData - 179, // 120: lemming.dataplane.sai.AclEntryAttribute.action_redirect:type_name -> lemming.dataplane.sai.AclActionData - 179, // 121: lemming.dataplane.sai.AclEntryAttribute.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData - 179, // 122: lemming.dataplane.sai.AclEntryAttribute.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData - 179, // 123: lemming.dataplane.sai.AclEntryAttribute.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData - 179, // 124: lemming.dataplane.sai.AclEntryAttribute.action_flood:type_name -> lemming.dataplane.sai.AclActionData - 179, // 125: lemming.dataplane.sai.AclEntryAttribute.action_counter:type_name -> lemming.dataplane.sai.AclActionData - 179, // 126: lemming.dataplane.sai.AclEntryAttribute.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData - 179, // 127: lemming.dataplane.sai.AclEntryAttribute.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData - 179, // 128: lemming.dataplane.sai.AclEntryAttribute.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData - 179, // 129: lemming.dataplane.sai.AclEntryAttribute.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData - 179, // 130: lemming.dataplane.sai.AclEntryAttribute.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData - 179, // 131: lemming.dataplane.sai.AclEntryAttribute.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData - 179, // 132: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 133: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 179, // 134: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 135: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 179, // 136: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 137: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 179, // 138: lemming.dataplane.sai.AclEntryAttribute.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData - 179, // 139: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData - 179, // 140: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData - 179, // 141: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData - 179, // 142: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 179, // 143: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 179, // 144: lemming.dataplane.sai.AclEntryAttribute.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData - 179, // 145: lemming.dataplane.sai.AclEntryAttribute.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData - 179, // 146: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData - 179, // 147: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData - 179, // 148: lemming.dataplane.sai.AclEntryAttribute.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 179, // 149: lemming.dataplane.sai.AclEntryAttribute.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 179, // 150: lemming.dataplane.sai.AclEntryAttribute.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData - 179, // 151: lemming.dataplane.sai.AclEntryAttribute.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData - 179, // 152: lemming.dataplane.sai.AclEntryAttribute.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 153: lemming.dataplane.sai.AclEntryAttribute.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData - 179, // 154: lemming.dataplane.sai.AclEntryAttribute.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData - 179, // 155: lemming.dataplane.sai.AclEntryAttribute.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData - 179, // 156: lemming.dataplane.sai.AclEntryAttribute.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 179, // 157: lemming.dataplane.sai.AclEntryAttribute.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 179, // 158: lemming.dataplane.sai.AclEntryAttribute.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData - 179, // 159: lemming.dataplane.sai.AclEntryAttribute.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData - 179, // 160: lemming.dataplane.sai.AclEntryAttribute.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData - 179, // 161: lemming.dataplane.sai.AclEntryAttribute.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData - 179, // 162: lemming.dataplane.sai.AclEntryAttribute.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData - 179, // 163: lemming.dataplane.sai.AclEntryAttribute.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData - 179, // 164: lemming.dataplane.sai.AclEntryAttribute.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData - 179, // 165: lemming.dataplane.sai.AclEntryAttribute.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData - 179, // 166: lemming.dataplane.sai.AclEntryAttribute.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData - 179, // 167: lemming.dataplane.sai.AclEntryAttribute.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData - 179, // 168: lemming.dataplane.sai.AclEntryAttribute.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData - 179, // 169: lemming.dataplane.sai.AclEntryAttribute.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 170: lemming.dataplane.sai.AclEntryAttribute.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 179, // 171: lemming.dataplane.sai.AclEntryAttribute.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData - 179, // 172: lemming.dataplane.sai.AclEntryAttribute.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData - 5, // 173: lemming.dataplane.sai.AclRangeAttribute.type:type_name -> lemming.dataplane.sai.AclRangeType - 211, // 174: lemming.dataplane.sai.AclRangeAttribute.limit:type_name -> lemming.dataplane.sai.Uint32Range - 6, // 175: lemming.dataplane.sai.AclTableAttribute.acl_stage:type_name -> lemming.dataplane.sai.AclStage - 1, // 176: lemming.dataplane.sai.AclTableAttribute.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType - 0, // 177: lemming.dataplane.sai.AclTableAttribute.acl_action_type_list:type_name -> lemming.dataplane.sai.AclActionType - 325, // 178: lemming.dataplane.sai.AclTableAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry - 5, // 179: lemming.dataplane.sai.AclTableAttribute.field_acl_range_type:type_name -> lemming.dataplane.sai.AclRangeType - 6, // 180: lemming.dataplane.sai.AclTableGroupAttribute.acl_stage:type_name -> lemming.dataplane.sai.AclStage - 1, // 181: lemming.dataplane.sai.AclTableGroupAttribute.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType - 7, // 182: lemming.dataplane.sai.AclTableGroupAttribute.type:type_name -> lemming.dataplane.sai.AclTableGroupType - 14, // 183: lemming.dataplane.sai.BfdSessionAttribute.type:type_name -> lemming.dataplane.sai.BfdSessionType - 10, // 184: lemming.dataplane.sai.BfdSessionAttribute.bfd_encapsulation_type:type_name -> lemming.dataplane.sai.BfdEncapsulationType - 13, // 185: lemming.dataplane.sai.BfdSessionAttribute.state:type_name -> lemming.dataplane.sai.BfdSessionState - 11, // 186: lemming.dataplane.sai.BfdSessionAttribute.offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 21, // 187: lemming.dataplane.sai.BridgeAttribute.type:type_name -> lemming.dataplane.sai.BridgeType - 15, // 188: lemming.dataplane.sai.BridgeAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 15, // 189: lemming.dataplane.sai.BridgeAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 15, // 190: lemming.dataplane.sai.BridgeAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 19, // 191: lemming.dataplane.sai.BridgePortAttribute.type:type_name -> lemming.dataplane.sai.BridgePortType - 18, // 192: lemming.dataplane.sai.BridgePortAttribute.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode - 16, // 193: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode - 88, // 194: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 24, // 195: lemming.dataplane.sai.BufferPoolAttribute.type:type_name -> lemming.dataplane.sai.BufferPoolType - 23, // 196: lemming.dataplane.sai.BufferPoolAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferPoolThresholdMode - 25, // 197: lemming.dataplane.sai.BufferProfileAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferProfileThresholdMode - 29, // 198: lemming.dataplane.sai.CounterAttribute.type:type_name -> lemming.dataplane.sai.CounterType - 31, // 199: lemming.dataplane.sai.DebugCounterAttribute.type:type_name -> lemming.dataplane.sai.DebugCounterType - 30, // 200: lemming.dataplane.sai.DebugCounterAttribute.bind_method:type_name -> lemming.dataplane.sai.DebugCounterBindMethod - 46, // 201: lemming.dataplane.sai.DebugCounterAttribute.in_drop_reason_list:type_name -> lemming.dataplane.sai.InDropReason - 84, // 202: lemming.dataplane.sai.DebugCounterAttribute.out_drop_reason_list:type_name -> lemming.dataplane.sai.OutDropReason - 181, // 203: lemming.dataplane.sai.DtelAttribute.int_l4_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 32, // 204: lemming.dataplane.sai.DtelEventAttribute.type:type_name -> lemming.dataplane.sai.DtelEventType - 35, // 205: lemming.dataplane.sai.FdbEntryAttribute.type:type_name -> lemming.dataplane.sai.FdbEntryType - 88, // 206: lemming.dataplane.sai.FdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 37, // 207: lemming.dataplane.sai.FdbFlushAttribute.entry_type:type_name -> lemming.dataplane.sai.FdbFlushEntryType - 75, // 208: lemming.dataplane.sai.FineGrainedHashFieldAttribute.native_hash_field:type_name -> lemming.dataplane.sai.NativeHashField - 75, // 209: lemming.dataplane.sai.HashAttribute.native_hash_field_list:type_name -> lemming.dataplane.sai.NativeHashField - 43, // 210: lemming.dataplane.sai.HostifAttribute.type:type_name -> lemming.dataplane.sai.HostifType - 45, // 211: lemming.dataplane.sai.HostifAttribute.vlan_tag:type_name -> lemming.dataplane.sai.HostifVlanTag - 42, // 212: lemming.dataplane.sai.HostifPacketAttribute.hostif_tx_type:type_name -> lemming.dataplane.sai.HostifTxType - 326, // 213: lemming.dataplane.sai.HostifPacketAttribute.timestamp:type_name -> google.protobuf.Timestamp - 40, // 214: lemming.dataplane.sai.HostifTableEntryAttribute.type:type_name -> lemming.dataplane.sai.HostifTableEntryType - 39, // 215: lemming.dataplane.sai.HostifTableEntryAttribute.channel_type:type_name -> lemming.dataplane.sai.HostifTableEntryChannelType - 41, // 216: lemming.dataplane.sai.HostifTrapAttribute.trap_type:type_name -> lemming.dataplane.sai.HostifTrapType - 88, // 217: lemming.dataplane.sai.HostifTrapAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 81, // 218: lemming.dataplane.sai.HostifTrapGroupAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage - 44, // 219: lemming.dataplane.sai.HostifUserDefinedTrapAttribute.type:type_name -> lemming.dataplane.sai.HostifUserDefinedTrapType - 88, // 220: lemming.dataplane.sai.InsegEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 50, // 221: lemming.dataplane.sai.InsegEntryAttribute.psc_type:type_name -> lemming.dataplane.sai.InsegEntryPscType - 49, // 222: lemming.dataplane.sai.InsegEntryAttribute.pop_ttl_mode:type_name -> lemming.dataplane.sai.InsegEntryPopTtlMode - 48, // 223: lemming.dataplane.sai.InsegEntryAttribute.pop_qos_mode:type_name -> lemming.dataplane.sai.InsegEntryPopQosMode - 88, // 224: lemming.dataplane.sai.IpmcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 53, // 225: lemming.dataplane.sai.IpsecAttribute.supported_cipher_list:type_name -> lemming.dataplane.sai.IpsecCipher - 130, // 226: lemming.dataplane.sai.IpsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 141, // 227: lemming.dataplane.sai.IpsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 54, // 228: lemming.dataplane.sai.IpsecSaAttribute.ipsec_direction:type_name -> lemming.dataplane.sai.IpsecDirection - 56, // 229: lemming.dataplane.sai.IpsecSaAttribute.octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus - 53, // 230: lemming.dataplane.sai.IpsecSaAttribute.ipsec_cipher:type_name -> lemming.dataplane.sai.IpsecCipher - 58, // 231: lemming.dataplane.sai.IsolationGroupAttribute.type:type_name -> lemming.dataplane.sai.IsolationGroupType - 88, // 232: lemming.dataplane.sai.L2mcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 62, // 233: lemming.dataplane.sai.MacsecAttribute.direction:type_name -> lemming.dataplane.sai.MacsecDirection - 61, // 234: lemming.dataplane.sai.MacsecAttribute.supported_cipher_suite_list:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 130, // 235: lemming.dataplane.sai.MacsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 64, // 236: lemming.dataplane.sai.MacsecAttribute.max_secure_associations_per_sc:type_name -> lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc - 62, // 237: lemming.dataplane.sai.MacsecFlowAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 62, // 238: lemming.dataplane.sai.MacsecPortAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 141, // 239: lemming.dataplane.sai.MacsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 62, // 240: lemming.dataplane.sai.MacsecSaAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 62, // 241: lemming.dataplane.sai.MacsecScAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 61, // 242: lemming.dataplane.sai.MacsecScAttribute.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 88, // 243: lemming.dataplane.sai.McastFdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 70, // 244: lemming.dataplane.sai.MirrorSessionAttribute.type:type_name -> lemming.dataplane.sai.MirrorSessionType - 69, // 245: lemming.dataplane.sai.MirrorSessionAttribute.congestion_mode:type_name -> lemming.dataplane.sai.MirrorSessionCongestionMode - 34, // 246: lemming.dataplane.sai.MirrorSessionAttribute.erspan_encapsulation_type:type_name -> lemming.dataplane.sai.ErspanEncapsulationType - 72, // 247: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 71, // 248: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 88, // 249: lemming.dataplane.sai.MySidEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 74, // 250: lemming.dataplane.sai.NatEntryAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType - 74, // 251: lemming.dataplane.sai.NatZoneCounterAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType - 88, // 252: lemming.dataplane.sai.NeighborEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 51, // 253: lemming.dataplane.sai.NeighborEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 80, // 254: lemming.dataplane.sai.NextHopAttribute.type:type_name -> lemming.dataplane.sai.NextHopType - 87, // 255: lemming.dataplane.sai.NextHopAttribute.outseg_type:type_name -> lemming.dataplane.sai.OutsegType - 86, // 256: lemming.dataplane.sai.NextHopAttribute.outseg_ttl_mode:type_name -> lemming.dataplane.sai.OutsegTtlMode - 85, // 257: lemming.dataplane.sai.NextHopAttribute.outseg_exp_mode:type_name -> lemming.dataplane.sai.OutsegExpMode - 79, // 258: lemming.dataplane.sai.NextHopGroupAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupType - 76, // 259: lemming.dataplane.sai.NextHopGroupMapAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupMapType - 194, // 260: lemming.dataplane.sai.NextHopGroupMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.UintMap - 77, // 261: lemming.dataplane.sai.NextHopGroupMemberAttribute.configured_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberConfiguredRole - 78, // 262: lemming.dataplane.sai.NextHopGroupMemberAttribute.observed_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberObservedRole - 68, // 263: lemming.dataplane.sai.PolicerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType - 92, // 264: lemming.dataplane.sai.PolicerAttribute.mode:type_name -> lemming.dataplane.sai.PolicerMode - 91, // 265: lemming.dataplane.sai.PolicerAttribute.color_source:type_name -> lemming.dataplane.sai.PolicerColorSource - 88, // 266: lemming.dataplane.sai.PolicerAttribute.green_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 267: lemming.dataplane.sai.PolicerAttribute.yellow_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 268: lemming.dataplane.sai.PolicerAttribute.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 269: lemming.dataplane.sai.PolicerAttribute.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction - 81, // 270: lemming.dataplane.sai.PolicerAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage - 118, // 271: lemming.dataplane.sai.PortAttribute.type:type_name -> lemming.dataplane.sai.PortType - 111, // 272: lemming.dataplane.sai.PortAttribute.oper_status:type_name -> lemming.dataplane.sai.PortOperStatus - 95, // 273: lemming.dataplane.sai.PortAttribute.supported_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType - 95, // 274: lemming.dataplane.sai.PortAttribute.current_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType - 100, // 275: lemming.dataplane.sai.PortAttribute.supported_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 99, // 276: lemming.dataplane.sai.PortAttribute.supported_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 101, // 277: lemming.dataplane.sai.PortAttribute.supported_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 109, // 278: lemming.dataplane.sai.PortAttribute.supported_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 100, // 279: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 99, // 280: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 101, // 281: lemming.dataplane.sai.PortAttribute.remote_advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 109, // 282: lemming.dataplane.sai.PortAttribute.remote_advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 200, // 283: lemming.dataplane.sai.PortAttribute.eye_values:type_name -> lemming.dataplane.sai.PortEyeValues - 109, // 284: lemming.dataplane.sai.PortAttribute.media_type:type_name -> lemming.dataplane.sai.PortMediaType - 100, // 285: lemming.dataplane.sai.PortAttribute.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 99, // 286: lemming.dataplane.sai.PortAttribute.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 101, // 287: lemming.dataplane.sai.PortAttribute.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 109, // 288: lemming.dataplane.sai.PortAttribute.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 103, // 289: lemming.dataplane.sai.PortAttribute.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode - 100, // 290: lemming.dataplane.sai.PortAttribute.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 99, // 291: lemming.dataplane.sai.PortAttribute.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 101, // 292: lemming.dataplane.sai.PortAttribute.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 115, // 293: lemming.dataplane.sai.PortAttribute.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode - 116, // 294: lemming.dataplane.sai.PortAttribute.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode - 102, // 295: lemming.dataplane.sai.PortAttribute.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 102, // 296: lemming.dataplane.sai.PortAttribute.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 104, // 297: lemming.dataplane.sai.PortAttribute.link_training_failure_status:type_name -> lemming.dataplane.sai.PortLinkTrainingFailureStatus - 105, // 298: lemming.dataplane.sai.PortAttribute.link_training_rx_status:type_name -> lemming.dataplane.sai.PortLinkTrainingRxStatus - 113, // 299: lemming.dataplane.sai.PortAttribute.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig - 114, // 300: lemming.dataplane.sai.PortAttribute.prbs_rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus - 203, // 301: lemming.dataplane.sai.PortAttribute.prbs_rx_state:type_name -> lemming.dataplane.sai.PRBS_RXState - 98, // 302: lemming.dataplane.sai.PortAttribute.err_status_list:type_name -> lemming.dataplane.sai.PortErrStatus - 142, // 303: lemming.dataplane.sai.PortAttribute.fabric_attached_switch_type:type_name -> lemming.dataplane.sai.SwitchType - 185, // 304: lemming.dataplane.sai.PortAttribute.fabric_reachability:type_name -> lemming.dataplane.sai.FabricPortReachability - 106, // 305: lemming.dataplane.sai.PortAttribute.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode - 108, // 306: lemming.dataplane.sai.PortAttribute.mdix_mode_status:type_name -> lemming.dataplane.sai.PortMdixModeStatus - 107, // 307: lemming.dataplane.sai.PortAttribute.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig - 94, // 308: lemming.dataplane.sai.PortAttribute.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode - 110, // 309: lemming.dataplane.sai.PortAttribute.module_type:type_name -> lemming.dataplane.sai.PortModuleType - 97, // 310: lemming.dataplane.sai.PortAttribute.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia - 99, // 311: lemming.dataplane.sai.PortAttribute.auto_neg_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 211, // 312: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 194, // 313: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 211, // 314: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 194, // 315: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 201, // 316: lemming.dataplane.sai.PortAttribute.rx_signal_detect:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 201, // 317: lemming.dataplane.sai.PortAttribute.rx_lock_status:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 193, // 318: lemming.dataplane.sai.PortAttribute.pcs_rx_link_status:type_name -> lemming.dataplane.sai.LatchStatus - 201, // 319: lemming.dataplane.sai.PortAttribute.fec_alignment_lock:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 96, // 320: lemming.dataplane.sai.PortConnectorAttribute.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 119, // 321: lemming.dataplane.sai.QosMapAttribute.type:type_name -> lemming.dataplane.sai.QosMapType - 205, // 322: lemming.dataplane.sai.QosMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.QOSMap - 123, // 323: lemming.dataplane.sai.QueueAttribute.type:type_name -> lemming.dataplane.sai.QueueType - 88, // 324: lemming.dataplane.sai.QueueAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 120, // 325: lemming.dataplane.sai.QueueAttribute.pfc_continuous_deadlock_state:type_name -> lemming.dataplane.sai.QueuePfcContinuousDeadlockState - 125, // 326: lemming.dataplane.sai.RouterInterfaceAttribute.type:type_name -> lemming.dataplane.sai.RouterInterfaceType - 88, // 327: lemming.dataplane.sai.RouterInterfaceAttribute.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 328: lemming.dataplane.sai.RouterInterfaceAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 329: lemming.dataplane.sai.RouteEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 51, // 330: lemming.dataplane.sai.RouteEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 127, // 331: lemming.dataplane.sai.SamplepacketAttribute.type:type_name -> lemming.dataplane.sai.SamplepacketType - 126, // 332: lemming.dataplane.sai.SamplepacketAttribute.mode:type_name -> lemming.dataplane.sai.SamplepacketMode - 128, // 333: lemming.dataplane.sai.SchedulerAttribute.scheduling_type:type_name -> lemming.dataplane.sai.SchedulingType - 68, // 334: lemming.dataplane.sai.SchedulerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType - 129, // 335: lemming.dataplane.sai.Srv6SidlistAttribute.type:type_name -> lemming.dataplane.sai.Srv6SidlistType - 210, // 336: lemming.dataplane.sai.Srv6SidlistAttribute.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry - 131, // 337: lemming.dataplane.sai.StpPortAttribute.state:type_name -> lemming.dataplane.sai.StpPortState - 138, // 338: lemming.dataplane.sai.SwitchAttribute.oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus - 211, // 339: lemming.dataplane.sai.SwitchAttribute.fdb_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 340: lemming.dataplane.sai.SwitchAttribute.route_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 341: lemming.dataplane.sai.SwitchAttribute.neighbor_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 342: lemming.dataplane.sai.SwitchAttribute.port_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 343: lemming.dataplane.sai.SwitchAttribute.vlan_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 344: lemming.dataplane.sai.SwitchAttribute.acl_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 211, // 345: lemming.dataplane.sai.SwitchAttribute.acl_user_trap_id_range:type_name -> lemming.dataplane.sai.Uint32Range - 183, // 346: lemming.dataplane.sai.SwitchAttribute.available_acl_table:type_name -> lemming.dataplane.sai.ACLResource - 183, // 347: lemming.dataplane.sai.SwitchAttribute.available_acl_table_group:type_name -> lemming.dataplane.sai.ACLResource - 139, // 348: lemming.dataplane.sai.SwitchAttribute.restart_type:type_name -> lemming.dataplane.sai.SwitchRestartType - 180, // 349: lemming.dataplane.sai.SwitchAttribute.acl_capability:type_name -> lemming.dataplane.sai.ACLCapability - 137, // 350: lemming.dataplane.sai.SwitchAttribute.mcast_snooping_capability:type_name -> lemming.dataplane.sai.SwitchMcastSnoopingCapability - 141, // 351: lemming.dataplane.sai.SwitchAttribute.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 88, // 352: lemming.dataplane.sai.SwitchAttribute.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 353: lemming.dataplane.sai.SwitchAttribute.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 354: lemming.dataplane.sai.SwitchAttribute.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 38, // 355: lemming.dataplane.sai.SwitchAttribute.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 38, // 356: lemming.dataplane.sai.SwitchAttribute.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 180, // 357: lemming.dataplane.sai.SwitchAttribute.acl_stage_ingress:type_name -> lemming.dataplane.sai.ACLCapability - 180, // 358: lemming.dataplane.sai.SwitchAttribute.acl_stage_egress:type_name -> lemming.dataplane.sai.ACLCapability - 162, // 359: lemming.dataplane.sai.SwitchAttribute.srv6_tlv_type:type_name -> lemming.dataplane.sai.TlvType - 88, // 360: lemming.dataplane.sai.SwitchAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 211, // 361: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 194, // 362: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 211, // 363: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 194, // 364: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 83, // 365: lemming.dataplane.sai.SwitchAttribute.supported_protected_object_type:type_name -> lemming.dataplane.sai.ObjectType - 11, // 366: lemming.dataplane.sai.SwitchAttribute.supported_ipv4_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 11, // 367: lemming.dataplane.sai.SwitchAttribute.supported_ipv6_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 130, // 368: lemming.dataplane.sai.SwitchAttribute.supported_extended_stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 83, // 369: lemming.dataplane.sai.SwitchAttribute.supported_object_type_list:type_name -> lemming.dataplane.sai.ObjectType - 136, // 370: lemming.dataplane.sai.SwitchAttribute.hardware_access_bus:type_name -> lemming.dataplane.sai.SwitchHardwareAccessBus - 134, // 371: lemming.dataplane.sai.SwitchAttribute.firmware_load_method:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadMethod - 135, // 372: lemming.dataplane.sai.SwitchAttribute.firmware_load_type:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadType - 142, // 373: lemming.dataplane.sai.SwitchAttribute.type:type_name -> lemming.dataplane.sai.SwitchType - 208, // 374: lemming.dataplane.sai.SwitchAttribute.system_port_config_list:type_name -> lemming.dataplane.sai.SystemPortConfig - 133, // 375: lemming.dataplane.sai.SwitchAttribute.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode - 171, // 376: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 88, // 377: lemming.dataplane.sai.SwitchTunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 165, // 378: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 163, // 379: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 172, // 380: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 143, // 381: lemming.dataplane.sai.SystemPortAttribute.type:type_name -> lemming.dataplane.sai.SystemPortType - 208, // 382: lemming.dataplane.sai.SystemPortAttribute.config_info:type_name -> lemming.dataplane.sai.SystemPortConfig - 144, // 383: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapClassificationEntryAction - 146, // 384: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapRouterEntryAction - 189, // 385: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.dst_ip_key:type_name -> lemming.dataplane.sai.IpPrefix - 148, // 386: lemming.dataplane.sai.TableMetaTunnelEntryAttribute.action:type_name -> lemming.dataplane.sai.TableMetaTunnelEntryAction - 150, // 387: lemming.dataplane.sai.TamAttribute.tam_bind_point_type_list:type_name -> lemming.dataplane.sai.TamBindPointType - 152, // 388: lemming.dataplane.sai.TamEventAttribute.type:type_name -> lemming.dataplane.sai.TamEventType - 151, // 389: lemming.dataplane.sai.TamEventThresholdAttribute.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit - 154, // 390: lemming.dataplane.sai.TamIntAttribute.type:type_name -> lemming.dataplane.sai.TamIntType - 153, // 391: lemming.dataplane.sai.TamIntAttribute.int_presence_type:type_name -> lemming.dataplane.sai.TamIntPresenceType - 158, // 392: lemming.dataplane.sai.TamMathFuncAttribute.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType - 156, // 393: lemming.dataplane.sai.TamReportAttribute.type:type_name -> lemming.dataplane.sai.TamReportType - 155, // 394: lemming.dataplane.sai.TamReportAttribute.report_mode:type_name -> lemming.dataplane.sai.TamReportMode - 157, // 395: lemming.dataplane.sai.TamTelemetryAttribute.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit - 159, // 396: lemming.dataplane.sai.TamTelTypeAttribute.tam_telemetry_type:type_name -> lemming.dataplane.sai.TamTelemetryType - 161, // 397: lemming.dataplane.sai.TamTransportAttribute.transport_type:type_name -> lemming.dataplane.sai.TamTransportType - 160, // 398: lemming.dataplane.sai.TamTransportAttribute.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType - 171, // 399: lemming.dataplane.sai.TunnelAttribute.type:type_name -> lemming.dataplane.sai.TunnelType - 167, // 400: lemming.dataplane.sai.TunnelAttribute.peer_mode:type_name -> lemming.dataplane.sai.TunnelPeerMode - 170, // 401: lemming.dataplane.sai.TunnelAttribute.encap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 164, // 402: lemming.dataplane.sai.TunnelAttribute.encap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 165, // 403: lemming.dataplane.sai.TunnelAttribute.encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 163, // 404: lemming.dataplane.sai.TunnelAttribute.decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 170, // 405: lemming.dataplane.sai.TunnelAttribute.decap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 164, // 406: lemming.dataplane.sai.TunnelAttribute.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 88, // 407: lemming.dataplane.sai.TunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 172, // 408: lemming.dataplane.sai.TunnelAttribute.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 166, // 409: lemming.dataplane.sai.TunnelMapAttribute.type:type_name -> lemming.dataplane.sai.TunnelMapType - 166, // 410: lemming.dataplane.sai.TunnelMapEntryAttribute.tunnel_map_type:type_name -> lemming.dataplane.sai.TunnelMapType - 169, // 411: lemming.dataplane.sai.TunnelTermTableEntryAttribute.type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryType - 171, // 412: lemming.dataplane.sai.TunnelTermTableEntryAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 51, // 413: lemming.dataplane.sai.TunnelTermTableEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 173, // 414: lemming.dataplane.sai.UdfAttribute.base:type_name -> lemming.dataplane.sai.UdfBase - 174, // 415: lemming.dataplane.sai.UdfGroupAttribute.type:type_name -> lemming.dataplane.sai.UdfGroupType - 181, // 416: lemming.dataplane.sai.UdfMatchAttribute.l2_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 417: lemming.dataplane.sai.UdfMatchAttribute.l3_type:type_name -> lemming.dataplane.sai.AclFieldData - 181, // 418: lemming.dataplane.sai.UdfMatchAttribute.gre_type:type_name -> lemming.dataplane.sai.AclFieldData - 88, // 419: lemming.dataplane.sai.VirtualRouterAttribute.violation_ttl1_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 420: lemming.dataplane.sai.VirtualRouterAttribute.violation_ip_options_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 88, // 421: lemming.dataplane.sai.VirtualRouterAttribute.unknown_l3_multicast_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 176, // 422: lemming.dataplane.sai.VlanAttribute.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 176, // 423: lemming.dataplane.sai.VlanAttribute.ipv6_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 175, // 424: lemming.dataplane.sai.VlanAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 175, // 425: lemming.dataplane.sai.VlanAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 175, // 426: lemming.dataplane.sai.VlanAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 178, // 427: lemming.dataplane.sai.VlanMemberAttribute.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode - 33, // 428: lemming.dataplane.sai.WredAttribute.ecn_mark_mode:type_name -> lemming.dataplane.sai.EcnMarkMode - 181, // 429: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData - 327, // 430: lemming.dataplane.sai.attr_enum_value:extendee -> google.protobuf.FieldOptions - 328, // 431: lemming.dataplane.sai.sai_type:extendee -> google.protobuf.MessageOptions - 83, // 432: lemming.dataplane.sai.sai_type:type_name -> lemming.dataplane.sai.ObjectType - 212, // 433: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:input_type -> lemming.dataplane.sai.ObjectTypeQueryRequest - 214, // 434: lemming.dataplane.sai.Entrypoint.Initialize:input_type -> lemming.dataplane.sai.InitializeRequest - 216, // 435: lemming.dataplane.sai.Entrypoint.Uninitialize:input_type -> lemming.dataplane.sai.UninitializeRequest - 213, // 436: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:output_type -> lemming.dataplane.sai.ObjectTypeQueryResponse - 215, // 437: lemming.dataplane.sai.Entrypoint.Initialize:output_type -> lemming.dataplane.sai.InitializeResponse - 217, // 438: lemming.dataplane.sai.Entrypoint.Uninitialize:output_type -> lemming.dataplane.sai.UninitializeResponse - 436, // [436:439] is the sub-list for method output_type - 433, // [433:436] is the sub-list for method input_type - 432, // [432:433] is the sub-list for extension type_name - 430, // [430:432] is the sub-list for extension extendee - 0, // [0:430] is the sub-list for field type_name + 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 + 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 + 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 + 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 + 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 + 1, // 195: lemming.dataplane.sai.AclTableGroupAttribute.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType + 9, // 196: lemming.dataplane.sai.AclTableGroupAttribute.type:type_name -> lemming.dataplane.sai.AclTableGroupType + 18, // 197: lemming.dataplane.sai.BfdSessionAttribute.type:type_name -> lemming.dataplane.sai.BfdSessionType + 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 } func init() { file_dataplane_proto_sai_common_proto_init() } @@ -42917,7 +46271,7 @@ func file_dataplane_proto_sai_common_proto_init() { file_dataplane_proto_sai_common_proto_msgTypes[58].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[59].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[60].OneofWrappers = []any{} - file_dataplane_proto_sai_common_proto_msgTypes[62].OneofWrappers = []any{} + file_dataplane_proto_sai_common_proto_msgTypes[61].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[63].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[64].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[65].OneofWrappers = []any{} @@ -42977,7 +46331,7 @@ func file_dataplane_proto_sai_common_proto_init() { file_dataplane_proto_sai_common_proto_msgTypes[119].OneofWrappers = []any{} 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[123].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[125].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[126].OneofWrappers = []any{} @@ -42998,13 +46352,15 @@ func file_dataplane_proto_sai_common_proto_init() { file_dataplane_proto_sai_common_proto_msgTypes[141].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[142].OneofWrappers = []any{} 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{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dataplane_proto_sai_common_proto_rawDesc, - NumEnums: 179, - NumMessages: 147, + NumEnums: 202, + NumMessages: 149, NumExtensions: 2, NumServices: 1, }, diff --git a/dataplane/proto/sai/common.proto b/dataplane/proto/sai/common.proto index 5f6c51e7..38999ae1 100644 --- a/dataplane/proto/sai/common.proto +++ b/dataplane/proto/sai/common.proto @@ -2,4323 +2,4517 @@ 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_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_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; +} + +enum AclTableChainGroupType { + 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; +} + +enum AclTableSupportedMatchType { + 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 = 49; - API_BMTOR = 49; - API_EXTENSIONS_RANGE_END = 50; + 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; } 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_MAX = 49; + 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; } 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_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; +} + +enum DashDirection { + 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; +} + +enum DashTunnelDscpMode { + 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 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; } 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_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_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_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 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_ECMP_WITH_MEMBERS = 6; } 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_UNSPECIFIED = 0; + NEXT_HOP_TYPE_IP = 1; + NEXT_HOP_TYPE_MPLS = 2; + NEXT_HOP_TYPE_TUNNEL_ENCAP = 3; + NEXT_HOP_TYPE_SRV6_SIDLIST = 4; } 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 = 104; - OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY = 104; - OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY = 105; - OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY = 106; - OBJECT_TYPE_EXTENSIONS_RANGE_END = 107; + 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; } 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_MAX = 104; + 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; } 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; +} + +enum PoePortClassMethodType { + 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; } 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; } 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_MAX = 4; +} + +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; +} + +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; } 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; } 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 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; } 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_MAX = 25; + 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_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; } 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; } enum PortStat { - option allow_alias = true; - PORT_STAT_UNSPECIFIED = 0; - 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_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; + 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; } 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_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 Srv6SidlistStat { + 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 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; +} + +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; } enum SwitchAttrExtensions { - SWITCH_ATTR_EXTENSIONS_UNSPECIFIED = 0; - SWITCH_ATTR_EXTENSIONS_RANGE_START = 212; - SWITCH_ATTR_EXTENSIONS_RANGE_END = 213; + SWITCH_ATTR_EXTENSIONS_UNSPECIFIED = 0; + SWITCH_ATTR_EXTENSIONS_RANGE_START = 233; + SWITCH_ATTR_EXTENSIONS_RANGE_END = 234; } 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; } 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_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_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_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; } 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_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_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_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 AclActionData action_redirect = 96 [(attr_enum_value) = 96]; - optional AclActionData action_endpoint_ip = 97 [(attr_enum_value) = 97]; - optional AclActionData action_redirect_list = 98 [(attr_enum_value) = 98]; - optional AclActionData action_packet_action = 99 [(attr_enum_value) = 99]; - optional AclActionData action_flood = 100 [(attr_enum_value) = 100]; - optional AclActionData action_counter = 101 [(attr_enum_value) = 101]; - optional AclActionData action_mirror_ingress = 102 [(attr_enum_value) = 102]; - optional AclActionData action_mirror_egress = 103 [(attr_enum_value) = 103]; - optional AclActionData action_set_policer = 104 [(attr_enum_value) = 104]; - optional AclActionData action_decrement_ttl = 105 [(attr_enum_value) = 105]; - optional AclActionData action_set_tc = 106 [(attr_enum_value) = 106]; - optional AclActionData action_set_packet_color = 107 - [(attr_enum_value) = 107]; - optional AclActionData action_set_inner_vlan_id = 108 - [(attr_enum_value) = 108]; - optional AclActionData action_set_inner_vlan_pri = 109 - [(attr_enum_value) = 109]; - optional AclActionData action_set_outer_vlan_id = 110 - [(attr_enum_value) = 110]; - optional AclActionData action_set_outer_vlan_pri = 111 - [(attr_enum_value) = 111]; - optional AclActionData action_add_vlan_id = 112 [(attr_enum_value) = 112]; - optional AclActionData action_add_vlan_pri = 113 [(attr_enum_value) = 113]; - optional AclActionData action_set_src_mac = 114 [(attr_enum_value) = 114]; - optional AclActionData action_set_dst_mac = 115 [(attr_enum_value) = 115]; - optional AclActionData action_set_src_ip = 116 [(attr_enum_value) = 116]; - optional AclActionData action_set_dst_ip = 117 [(attr_enum_value) = 117]; - optional AclActionData action_set_src_ipv6 = 118 [(attr_enum_value) = 118]; - optional AclActionData action_set_dst_ipv6 = 119 [(attr_enum_value) = 119]; - optional AclActionData action_set_dscp = 120 [(attr_enum_value) = 120]; - optional AclActionData action_set_ecn = 121 [(attr_enum_value) = 121]; - optional AclActionData action_set_l4_src_port = 122 [(attr_enum_value) = 122]; - optional AclActionData action_set_l4_dst_port = 123 [(attr_enum_value) = 123]; - optional AclActionData action_ingress_samplepacket_enable = 124 - [(attr_enum_value) = 124]; - optional AclActionData action_egress_samplepacket_enable = 125 - [(attr_enum_value) = 125]; - optional AclActionData action_set_acl_meta_data = 126 - [(attr_enum_value) = 126]; - optional AclActionData action_egress_block_port_list = 127 - [(attr_enum_value) = 127]; - optional AclActionData action_set_user_trap_id = 128 - [(attr_enum_value) = 128]; - optional AclActionData action_set_do_not_learn = 129 - [(attr_enum_value) = 129]; - optional AclActionData action_acl_dtel_flow_op = 130 - [(attr_enum_value) = 130]; - optional AclActionData action_dtel_int_session = 131 - [(attr_enum_value) = 131]; - optional AclActionData action_dtel_drop_report_enable = 132 - [(attr_enum_value) = 132]; - optional AclActionData action_dtel_tail_drop_report_enable = 133 - [(attr_enum_value) = 133]; - optional AclActionData action_dtel_flow_sample_percent = 134 - [(attr_enum_value) = 134]; - optional AclActionData action_dtel_report_all_packets = 135 - [(attr_enum_value) = 135]; - optional AclActionData action_no_nat = 136 [(attr_enum_value) = 136]; - optional AclActionData action_int_insert = 137 [(attr_enum_value) = 137]; - optional AclActionData action_int_delete = 138 [(attr_enum_value) = 138]; - optional AclActionData action_int_report_flow = 139 [(attr_enum_value) = 139]; - optional AclActionData action_int_report_drops = 140 - [(attr_enum_value) = 140]; - optional AclActionData action_int_report_tail_drops = 141 - [(attr_enum_value) = 141]; - optional AclActionData action_tam_int_object = 142 [(attr_enum_value) = 142]; - optional AclActionData action_set_isolation_group = 143 - [(attr_enum_value) = 143]; - optional AclActionData action_macsec_flow = 144 [(attr_enum_value) = 144]; - optional AclActionData action_set_lag_hash_id = 145 [(attr_enum_value) = 145]; - optional AclActionData action_set_ecmp_hash_id = 146 - [(attr_enum_value) = 146]; - optional AclActionData action_set_vrf = 147 [(attr_enum_value) = 147]; - optional AclActionData action_set_forwarding_class = 148 - [(attr_enum_value) = 148]; + 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]; - repeated uint64 entry_list = 97 [(attr_enum_value) = 97]; - optional uint32 available_acl_entry = 98 [(attr_enum_value) = 98]; - optional uint32 available_acl_counter = 99 [(attr_enum_value) = 99]; + 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]; } 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]; + 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_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 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]; } 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]; } 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]; } 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]; } 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]; } 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 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]; } 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]; } 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]; } 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]; + 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]; } 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]; } 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 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]; } 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 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]; } 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]; + 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]; } 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 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]; } 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 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]; } 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 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]; } 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 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]; } 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 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]; } 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 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]; + 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]; } 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 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 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 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]; } 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 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.proto b/dataplane/proto/sai/counter.proto index fb472358..2ec3253d 100644 --- a/dataplane/proto/sai/counter.proto +++ b/dataplane/proto/sai/counter.proto @@ -7,61 +7,62 @@ 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; } 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]; } 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]; } -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.pb.go b/dataplane/proto/sai/dash_acl.pb.go new file mode 100755 index 00000000..2b8050f6 --- /dev/null +++ b/dataplane/proto/sai/dash_acl.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_acl.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_acl_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_acl_proto_rawDesc = []byte{ + 0x0a, 0x22, 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, 0x63, 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, 0x09, 0x0a, + 0x07, 0x44, 0x61, 0x73, 0x68, 0x41, 0x63, 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_acl_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_acl_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_acl_proto_init() } +func file_dataplane_proto_sai_dash_acl_proto_init() { + if File_dataplane_proto_sai_dash_acl_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: file_dataplane_proto_sai_dash_acl_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_acl_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_acl_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_acl_proto = out.File + file_dataplane_proto_sai_dash_acl_proto_rawDesc = nil + file_dataplane_proto_sai_dash_acl_proto_goTypes = nil + file_dataplane_proto_sai_dash_acl_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashAclClient is the client API for DashAcl service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashAclClient interface { +} + +type dashAclClient struct { + cc grpc.ClientConnInterface +} + +func NewDashAclClient(cc grpc.ClientConnInterface) DashAclClient { + return &dashAclClient{cc} +} + +// DashAclServer is the server API for DashAcl service. +type DashAclServer interface { +} + +// UnimplementedDashAclServer can be embedded to have forward compatible implementations. +type UnimplementedDashAclServer struct { +} + +func RegisterDashAclServer(s *grpc.Server, srv DashAclServer) { + s.RegisterService(&_DashAcl_serviceDesc, srv) +} + +var _DashAcl_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashAcl", + HandlerType: (*DashAclServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_acl.proto", +} diff --git a/dataplane/proto/sai/dash_acl.proto b/dataplane/proto/sai/dash_acl.proto new file mode 100644 index 00000000..8bb14e90 --- /dev/null +++ b/dataplane/proto/sai/dash_acl.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashAcl { +} diff --git a/dataplane/proto/sai/dash_direction_lookup.pb.go b/dataplane/proto/sai/dash_direction_lookup.pb.go new file mode 100755 index 00000000..d29ca27b --- /dev/null +++ b/dataplane/proto/sai/dash_direction_lookup.pb.go @@ -0,0 +1,115 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_direction_lookup.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_direction_lookup_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_direction_lookup_proto_rawDesc = []byte{ + 0x0a, 0x2f, 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, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 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, 0x15, 0x0a, 0x13, 0x44, 0x61, + 0x73, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 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_direction_lookup_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_direction_lookup_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_direction_lookup_proto_init() } +func file_dataplane_proto_sai_dash_direction_lookup_proto_init() { + if File_dataplane_proto_sai_dash_direction_lookup_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: file_dataplane_proto_sai_dash_direction_lookup_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_direction_lookup_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_direction_lookup_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_direction_lookup_proto = out.File + file_dataplane_proto_sai_dash_direction_lookup_proto_rawDesc = nil + file_dataplane_proto_sai_dash_direction_lookup_proto_goTypes = nil + file_dataplane_proto_sai_dash_direction_lookup_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashDirectionLookupClient is the client API for DashDirectionLookup service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashDirectionLookupClient interface { +} + +type dashDirectionLookupClient struct { + cc grpc.ClientConnInterface +} + +func NewDashDirectionLookupClient(cc grpc.ClientConnInterface) DashDirectionLookupClient { + return &dashDirectionLookupClient{cc} +} + +// DashDirectionLookupServer is the server API for DashDirectionLookup service. +type DashDirectionLookupServer interface { +} + +// UnimplementedDashDirectionLookupServer can be embedded to have forward compatible implementations. +type UnimplementedDashDirectionLookupServer struct { +} + +func RegisterDashDirectionLookupServer(s *grpc.Server, srv DashDirectionLookupServer) { + s.RegisterService(&_DashDirectionLookup_serviceDesc, srv) +} + +var _DashDirectionLookup_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashDirectionLookup", + HandlerType: (*DashDirectionLookupServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_direction_lookup.proto", +} diff --git a/dataplane/proto/sai/dash_direction_lookup.proto b/dataplane/proto/sai/dash_direction_lookup.proto new file mode 100644 index 00000000..c4dfbba8 --- /dev/null +++ b/dataplane/proto/sai/dash_direction_lookup.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashDirectionLookup { +} diff --git a/dataplane/proto/sai/dash_eni.pb.go b/dataplane/proto/sai/dash_eni.pb.go new file mode 100755 index 00000000..eb900d48 --- /dev/null +++ b/dataplane/proto/sai/dash_eni.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_eni.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_eni_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_eni_proto_rawDesc = []byte{ + 0x0a, 0x22, 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, 0x65, 0x6e, 0x69, 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, 0x09, 0x0a, + 0x07, 0x44, 0x61, 0x73, 0x68, 0x45, 0x6e, 0x69, 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_eni_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_eni_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_eni_proto_init() } +func file_dataplane_proto_sai_dash_eni_proto_init() { + if File_dataplane_proto_sai_dash_eni_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: file_dataplane_proto_sai_dash_eni_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_eni_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_eni_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_eni_proto = out.File + file_dataplane_proto_sai_dash_eni_proto_rawDesc = nil + file_dataplane_proto_sai_dash_eni_proto_goTypes = nil + file_dataplane_proto_sai_dash_eni_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashEniClient is the client API for DashEni service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashEniClient interface { +} + +type dashEniClient struct { + cc grpc.ClientConnInterface +} + +func NewDashEniClient(cc grpc.ClientConnInterface) DashEniClient { + return &dashEniClient{cc} +} + +// DashEniServer is the server API for DashEni service. +type DashEniServer interface { +} + +// UnimplementedDashEniServer can be embedded to have forward compatible implementations. +type UnimplementedDashEniServer struct { +} + +func RegisterDashEniServer(s *grpc.Server, srv DashEniServer) { + s.RegisterService(&_DashEni_serviceDesc, srv) +} + +var _DashEni_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashEni", + HandlerType: (*DashEniServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_eni.proto", +} diff --git a/dataplane/proto/sai/dash_eni.proto b/dataplane/proto/sai/dash_eni.proto new file mode 100644 index 00000000..4c205f23 --- /dev/null +++ b/dataplane/proto/sai/dash_eni.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashEni { +} diff --git a/dataplane/proto/sai/dash_inbound_routing.pb.go b/dataplane/proto/sai/dash_inbound_routing.pb.go new file mode 100755 index 00000000..e1c46e5b --- /dev/null +++ b/dataplane/proto/sai/dash_inbound_routing.pb.go @@ -0,0 +1,115 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_inbound_routing.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_inbound_routing_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_inbound_routing_proto_rawDesc = []byte{ + 0x0a, 0x2e, 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, 0x69, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 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, 0x14, 0x0a, 0x12, 0x44, 0x61, 0x73, + 0x68, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 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_inbound_routing_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_inbound_routing_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_inbound_routing_proto_init() } +func file_dataplane_proto_sai_dash_inbound_routing_proto_init() { + if File_dataplane_proto_sai_dash_inbound_routing_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: file_dataplane_proto_sai_dash_inbound_routing_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_inbound_routing_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_inbound_routing_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_inbound_routing_proto = out.File + file_dataplane_proto_sai_dash_inbound_routing_proto_rawDesc = nil + file_dataplane_proto_sai_dash_inbound_routing_proto_goTypes = nil + file_dataplane_proto_sai_dash_inbound_routing_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashInboundRoutingClient is the client API for DashInboundRouting service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashInboundRoutingClient interface { +} + +type dashInboundRoutingClient struct { + cc grpc.ClientConnInterface +} + +func NewDashInboundRoutingClient(cc grpc.ClientConnInterface) DashInboundRoutingClient { + return &dashInboundRoutingClient{cc} +} + +// DashInboundRoutingServer is the server API for DashInboundRouting service. +type DashInboundRoutingServer interface { +} + +// UnimplementedDashInboundRoutingServer can be embedded to have forward compatible implementations. +type UnimplementedDashInboundRoutingServer struct { +} + +func RegisterDashInboundRoutingServer(s *grpc.Server, srv DashInboundRoutingServer) { + s.RegisterService(&_DashInboundRouting_serviceDesc, srv) +} + +var _DashInboundRouting_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashInboundRouting", + HandlerType: (*DashInboundRoutingServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_inbound_routing.proto", +} diff --git a/dataplane/proto/sai/dash_inbound_routing.proto b/dataplane/proto/sai/dash_inbound_routing.proto new file mode 100644 index 00000000..01ebde3a --- /dev/null +++ b/dataplane/proto/sai/dash_inbound_routing.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashInboundRouting { +} diff --git a/dataplane/proto/sai/dash_meter.pb.go b/dataplane/proto/sai/dash_meter.pb.go new file mode 100755 index 00000000..f19761b7 --- /dev/null +++ b/dataplane/proto/sai/dash_meter.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_meter.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_meter_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_meter_proto_rawDesc = []byte{ + 0x0a, 0x24, 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, 0x6d, 0x65, 0x74, 0x65, 0x72, + 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, + 0x0b, 0x0a, 0x09, 0x44, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x65, 0x72, 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_meter_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_meter_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_meter_proto_init() } +func file_dataplane_proto_sai_dash_meter_proto_init() { + if File_dataplane_proto_sai_dash_meter_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: file_dataplane_proto_sai_dash_meter_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_meter_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_meter_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_meter_proto = out.File + file_dataplane_proto_sai_dash_meter_proto_rawDesc = nil + file_dataplane_proto_sai_dash_meter_proto_goTypes = nil + file_dataplane_proto_sai_dash_meter_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashMeterClient is the client API for DashMeter service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashMeterClient interface { +} + +type dashMeterClient struct { + cc grpc.ClientConnInterface +} + +func NewDashMeterClient(cc grpc.ClientConnInterface) DashMeterClient { + return &dashMeterClient{cc} +} + +// DashMeterServer is the server API for DashMeter service. +type DashMeterServer interface { +} + +// UnimplementedDashMeterServer can be embedded to have forward compatible implementations. +type UnimplementedDashMeterServer struct { +} + +func RegisterDashMeterServer(s *grpc.Server, srv DashMeterServer) { + s.RegisterService(&_DashMeter_serviceDesc, srv) +} + +var _DashMeter_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashMeter", + HandlerType: (*DashMeterServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_meter.proto", +} diff --git a/dataplane/proto/sai/dash_meter.proto b/dataplane/proto/sai/dash_meter.proto new file mode 100644 index 00000000..38c7eaf3 --- /dev/null +++ b/dataplane/proto/sai/dash_meter.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashMeter { +} diff --git a/dataplane/proto/sai/dash_outbound_ca_to_pa.pb.go b/dataplane/proto/sai/dash_outbound_ca_to_pa.pb.go new file mode 100755 index 00000000..710e723d --- /dev/null +++ b/dataplane/proto/sai/dash_outbound_ca_to_pa.pb.go @@ -0,0 +1,115 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_outbound_ca_to_pa.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_outbound_ca_to_pa_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_rawDesc = []byte{ + 0x0a, 0x30, 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, 0x6f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 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, 0x14, 0x0a, 0x12, 0x44, + 0x61, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x54, 0x6f, 0x50, + 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_outbound_ca_to_pa_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_outbound_ca_to_pa_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_outbound_ca_to_pa_proto_init() } +func file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_init() { + if File_dataplane_proto_sai_dash_outbound_ca_to_pa_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: file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_outbound_ca_to_pa_proto = out.File + file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_rawDesc = nil + file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_goTypes = nil + file_dataplane_proto_sai_dash_outbound_ca_to_pa_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashOutboundCaToPaClient is the client API for DashOutboundCaToPa service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashOutboundCaToPaClient interface { +} + +type dashOutboundCaToPaClient struct { + cc grpc.ClientConnInterface +} + +func NewDashOutboundCaToPaClient(cc grpc.ClientConnInterface) DashOutboundCaToPaClient { + return &dashOutboundCaToPaClient{cc} +} + +// DashOutboundCaToPaServer is the server API for DashOutboundCaToPa service. +type DashOutboundCaToPaServer interface { +} + +// UnimplementedDashOutboundCaToPaServer can be embedded to have forward compatible implementations. +type UnimplementedDashOutboundCaToPaServer struct { +} + +func RegisterDashOutboundCaToPaServer(s *grpc.Server, srv DashOutboundCaToPaServer) { + s.RegisterService(&_DashOutboundCaToPa_serviceDesc, srv) +} + +var _DashOutboundCaToPa_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashOutboundCaToPa", + HandlerType: (*DashOutboundCaToPaServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_outbound_ca_to_pa.proto", +} diff --git a/dataplane/proto/sai/dash_outbound_ca_to_pa.proto b/dataplane/proto/sai/dash_outbound_ca_to_pa.proto new file mode 100644 index 00000000..8d7b351d --- /dev/null +++ b/dataplane/proto/sai/dash_outbound_ca_to_pa.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashOutboundCaToPa { +} diff --git a/dataplane/proto/sai/dash_outbound_routing.pb.go b/dataplane/proto/sai/dash_outbound_routing.pb.go new file mode 100755 index 00000000..c1ebe8a1 --- /dev/null +++ b/dataplane/proto/sai/dash_outbound_routing.pb.go @@ -0,0 +1,115 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_outbound_routing.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_outbound_routing_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_outbound_routing_proto_rawDesc = []byte{ + 0x0a, 0x2f, 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, 0x6f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 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, 0x15, 0x0a, 0x13, 0x44, 0x61, + 0x73, 0x68, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 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_outbound_routing_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_outbound_routing_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_outbound_routing_proto_init() } +func file_dataplane_proto_sai_dash_outbound_routing_proto_init() { + if File_dataplane_proto_sai_dash_outbound_routing_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: file_dataplane_proto_sai_dash_outbound_routing_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_outbound_routing_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_outbound_routing_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_outbound_routing_proto = out.File + file_dataplane_proto_sai_dash_outbound_routing_proto_rawDesc = nil + file_dataplane_proto_sai_dash_outbound_routing_proto_goTypes = nil + file_dataplane_proto_sai_dash_outbound_routing_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashOutboundRoutingClient is the client API for DashOutboundRouting service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashOutboundRoutingClient interface { +} + +type dashOutboundRoutingClient struct { + cc grpc.ClientConnInterface +} + +func NewDashOutboundRoutingClient(cc grpc.ClientConnInterface) DashOutboundRoutingClient { + return &dashOutboundRoutingClient{cc} +} + +// DashOutboundRoutingServer is the server API for DashOutboundRouting service. +type DashOutboundRoutingServer interface { +} + +// UnimplementedDashOutboundRoutingServer can be embedded to have forward compatible implementations. +type UnimplementedDashOutboundRoutingServer struct { +} + +func RegisterDashOutboundRoutingServer(s *grpc.Server, srv DashOutboundRoutingServer) { + s.RegisterService(&_DashOutboundRouting_serviceDesc, srv) +} + +var _DashOutboundRouting_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashOutboundRouting", + HandlerType: (*DashOutboundRoutingServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_outbound_routing.proto", +} diff --git a/dataplane/proto/sai/dash_outbound_routing.proto b/dataplane/proto/sai/dash_outbound_routing.proto new file mode 100644 index 00000000..e88b509a --- /dev/null +++ b/dataplane/proto/sai/dash_outbound_routing.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashOutboundRouting { +} diff --git a/dataplane/proto/sai/dash_pa_validation.pb.go b/dataplane/proto/sai/dash_pa_validation.pb.go new file mode 100755 index 00000000..bde4ab2b --- /dev/null +++ b/dataplane/proto/sai/dash_pa_validation.pb.go @@ -0,0 +1,115 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_pa_validation.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_pa_validation_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_pa_validation_proto_rawDesc = []byte{ + 0x0a, 0x2c, 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, 0x70, 0x61, 0x5f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x50, + 0x61, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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_pa_validation_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_pa_validation_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_pa_validation_proto_init() } +func file_dataplane_proto_sai_dash_pa_validation_proto_init() { + if File_dataplane_proto_sai_dash_pa_validation_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: file_dataplane_proto_sai_dash_pa_validation_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_pa_validation_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_pa_validation_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_pa_validation_proto = out.File + file_dataplane_proto_sai_dash_pa_validation_proto_rawDesc = nil + file_dataplane_proto_sai_dash_pa_validation_proto_goTypes = nil + file_dataplane_proto_sai_dash_pa_validation_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashPaValidationClient is the client API for DashPaValidation service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashPaValidationClient interface { +} + +type dashPaValidationClient struct { + cc grpc.ClientConnInterface +} + +func NewDashPaValidationClient(cc grpc.ClientConnInterface) DashPaValidationClient { + return &dashPaValidationClient{cc} +} + +// DashPaValidationServer is the server API for DashPaValidation service. +type DashPaValidationServer interface { +} + +// UnimplementedDashPaValidationServer can be embedded to have forward compatible implementations. +type UnimplementedDashPaValidationServer struct { +} + +func RegisterDashPaValidationServer(s *grpc.Server, srv DashPaValidationServer) { + s.RegisterService(&_DashPaValidation_serviceDesc, srv) +} + +var _DashPaValidation_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashPaValidation", + HandlerType: (*DashPaValidationServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_pa_validation.proto", +} diff --git a/dataplane/proto/sai/dash_pa_validation.proto b/dataplane/proto/sai/dash_pa_validation.proto new file mode 100644 index 00000000..dbbb94ca --- /dev/null +++ b/dataplane/proto/sai/dash_pa_validation.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashPaValidation { +} diff --git a/dataplane/proto/sai/dash_vip.pb.go b/dataplane/proto/sai/dash_vip.pb.go new file mode 100755 index 00000000..b85947b1 --- /dev/null +++ b/dataplane/proto/sai/dash_vip.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_vip.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_vip_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_vip_proto_rawDesc = []byte{ + 0x0a, 0x22, 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, 0x76, 0x69, 0x70, 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, 0x09, 0x0a, + 0x07, 0x44, 0x61, 0x73, 0x68, 0x56, 0x69, 0x70, 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_vip_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_vip_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_vip_proto_init() } +func file_dataplane_proto_sai_dash_vip_proto_init() { + if File_dataplane_proto_sai_dash_vip_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: file_dataplane_proto_sai_dash_vip_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_vip_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_vip_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_vip_proto = out.File + file_dataplane_proto_sai_dash_vip_proto_rawDesc = nil + file_dataplane_proto_sai_dash_vip_proto_goTypes = nil + file_dataplane_proto_sai_dash_vip_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashVipClient is the client API for DashVip service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashVipClient interface { +} + +type dashVipClient struct { + cc grpc.ClientConnInterface +} + +func NewDashVipClient(cc grpc.ClientConnInterface) DashVipClient { + return &dashVipClient{cc} +} + +// DashVipServer is the server API for DashVip service. +type DashVipServer interface { +} + +// UnimplementedDashVipServer can be embedded to have forward compatible implementations. +type UnimplementedDashVipServer struct { +} + +func RegisterDashVipServer(s *grpc.Server, srv DashVipServer) { + s.RegisterService(&_DashVip_serviceDesc, srv) +} + +var _DashVip_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashVip", + HandlerType: (*DashVipServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_vip.proto", +} diff --git a/dataplane/proto/sai/dash_vip.proto b/dataplane/proto/sai/dash_vip.proto new file mode 100644 index 00000000..162836f0 --- /dev/null +++ b/dataplane/proto/sai/dash_vip.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashVip { +} diff --git a/dataplane/proto/sai/dash_vnet.pb.go b/dataplane/proto/sai/dash_vnet.pb.go new file mode 100755 index 00000000..2eb081cf --- /dev/null +++ b/dataplane/proto/sai/dash_vnet.pb.go @@ -0,0 +1,114 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_vnet.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_vnet_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_vnet_proto_rawDesc = []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, 0x76, 0x6e, 0x65, 0x74, 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, 0x56, 0x6e, 0x65, 0x74, 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_vnet_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_vnet_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_vnet_proto_init() } +func file_dataplane_proto_sai_dash_vnet_proto_init() { + if File_dataplane_proto_sai_dash_vnet_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: file_dataplane_proto_sai_dash_vnet_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_vnet_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_vnet_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_vnet_proto = out.File + file_dataplane_proto_sai_dash_vnet_proto_rawDesc = nil + file_dataplane_proto_sai_dash_vnet_proto_goTypes = nil + file_dataplane_proto_sai_dash_vnet_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// DashVnetClient is the client API for DashVnet service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DashVnetClient interface { +} + +type dashVnetClient struct { + cc grpc.ClientConnInterface +} + +func NewDashVnetClient(cc grpc.ClientConnInterface) DashVnetClient { + return &dashVnetClient{cc} +} + +// DashVnetServer is the server API for DashVnet service. +type DashVnetServer interface { +} + +// UnimplementedDashVnetServer can be embedded to have forward compatible implementations. +type UnimplementedDashVnetServer struct { +} + +func RegisterDashVnetServer(s *grpc.Server, srv DashVnetServer) { + s.RegisterService(&_DashVnet_serviceDesc, srv) +} + +var _DashVnet_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashVnet", + HandlerType: (*DashVnetServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_vnet.proto", +} diff --git a/dataplane/proto/sai/dash_vnet.proto b/dataplane/proto/sai/dash_vnet.proto new file mode 100644 index 00000000..f254796c --- /dev/null +++ b/dataplane/proto/sai/dash_vnet.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service DashVnet { +} diff --git a/dataplane/proto/sai/debug_counter.proto b/dataplane/proto/sai/debug_counter.proto index bd00bac6..e150dd08 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 8413e617..3a6ae918 100644 --- a/dataplane/proto/sai/dtel.proto +++ b/dataplane/proto/sai/dtel.proto @@ -7,298 +7,292 @@ 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 1a26f89a..ca3427c7 100644 --- a/dataplane/proto/sai/fdb.proto +++ b/dataplane/proto/sai/fdb.proto @@ -7,87 +7,88 @@ 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; } 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 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 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 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 0fc40751..a46b7f95 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 05d984bb..5fcc6312 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 24a59898..001887d7 100644 --- a/dataplane/proto/sai/hostif.proto +++ b/dataplane/proto/sai/hostif.proto @@ -7,273 +7,265 @@ 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/ipmc.proto b/dataplane/proto/sai/ipmc.proto index 49d47ca8..b08df8f9 100644 --- a/dataplane/proto/sai/ipmc.proto +++ b/dataplane/proto/sai/ipmc.proto @@ -7,57 +7,58 @@ 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 e470adf8..1558de52 100644 --- a/dataplane/proto/sai/ipmc_group.proto +++ b/dataplane/proto/sai/ipmc_group.proto @@ -7,79 +7,77 @@ 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.proto b/dataplane/proto/sai/ipsec.proto index 5a144d0c..9ed07c6e 100644 --- a/dataplane/proto/sai/ipsec.proto +++ b/dataplane/proto/sai/ipsec.proto @@ -7,248 +7,244 @@ 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; } 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; } 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]; } 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]; } -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]; } 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]; } -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 2bed0ba4..a6852860 100644 --- a/dataplane/proto/sai/isolation_group.proto +++ b/dataplane/proto/sai/isolation_group.proto @@ -7,80 +7,78 @@ 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 8de842f3..fdf000ce 100644 --- a/dataplane/proto/sai/l2mc.proto +++ b/dataplane/proto/sai/l2mc.proto @@ -7,51 +7,52 @@ 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 bc546323..43c45f42 100644 --- a/dataplane/proto/sai/l2mc_group.proto +++ b/dataplane/proto/sai/l2mc_group.proto @@ -7,81 +7,79 @@ 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.pb.go b/dataplane/proto/sai/lag.pb.go index 9c16af12..d0019a5c 100644 --- a/dataplane/proto/sai/lag.pb.go +++ b/dataplane/proto/sai/lag.pb.go @@ -38,6 +38,9 @@ const ( LagAttr_LAG_ATTR_TPID LagAttr = 8 LagAttr_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID LagAttr = 9 LagAttr_LAG_ATTR_LABEL LagAttr = 10 + LagAttr_LAG_ATTR_ARS_OBJECT_ID LagAttr = 11 + LagAttr_LAG_ATTR_ARS_PACKET_DROPS LagAttr = 12 + LagAttr_LAG_ATTR_ARS_PORT_REASSIGNMENTS LagAttr = 13 ) // Enum value maps for LagAttr. @@ -54,6 +57,9 @@ var ( 8: "LAG_ATTR_TPID", 9: "LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID", 10: "LAG_ATTR_LABEL", + 11: "LAG_ATTR_ARS_OBJECT_ID", + 12: "LAG_ATTR_ARS_PACKET_DROPS", + 13: "LAG_ATTR_ARS_PORT_REASSIGNMENTS", } LagAttr_value = map[string]int32{ "LAG_ATTR_UNSPECIFIED": 0, @@ -67,6 +73,9 @@ var ( "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, } ) @@ -164,6 +173,7 @@ type CreateLagRequest struct { Tpid *uint32 `protobuf:"varint,8,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` SystemPortAggregateId *uint32 `protobuf:"varint,9,opt,name=system_port_aggregate_id,json=systemPortAggregateId,proto3,oneof" json:"system_port_aggregate_id,omitempty"` Label []byte `protobuf:"bytes,10,opt,name=label,proto3,oneof" json:"label,omitempty"` + ArsObjectId *uint64 `protobuf:"varint,11,opt,name=ars_object_id,json=arsObjectId,proto3,oneof" json:"ars_object_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -268,6 +278,13 @@ func (x *CreateLagRequest) GetLabel() []byte { return nil } +func (x *CreateLagRequest) GetArsObjectId() uint64 { + if x != nil && x.ArsObjectId != nil { + return *x.ArsObjectId + } + return 0 +} + type CreateLagResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -403,6 +420,7 @@ type SetLagAttributeRequest struct { DropTagged *bool `protobuf:"varint,7,opt,name=drop_tagged,json=dropTagged,proto3,oneof" json:"drop_tagged,omitempty"` Tpid *uint32 `protobuf:"varint,8,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` Label []byte `protobuf:"bytes,9,opt,name=label,proto3,oneof" json:"label,omitempty"` + ArsObjectId *uint64 `protobuf:"varint,10,opt,name=ars_object_id,json=arsObjectId,proto3,oneof" json:"ars_object_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -500,6 +518,13 @@ func (x *SetLagAttributeRequest) GetLabel() []byte { return nil } +func (x *SetLagAttributeRequest) GetArsObjectId() uint64 { + if x != nil && x.ArsObjectId != nil { + return *x.ArsObjectId + } + return 0 +} + type SetLagAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1208,7 +1233,7 @@ var file_dataplane_proto_sai_lag_proto_rawDesc = []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, 0x82, 0x05, 0x0a, 0x10, 0x43, 0x72, 0x65, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x05, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, @@ -1238,256 +1263,270 @@ var file_dataplane_proto_sai_lag_proto_rawDesc = []byte{ 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x03, 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, 0x22, 0x25, 0x0a, - 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x24, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, - 0x67, 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, 0x13, 0x0a, 0x11, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x97, 0x04, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, 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, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 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, - 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74, - 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, 0x3b, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x4c, 0x61, 0x67, 0x41, - 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x52, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, - 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, 0x4c, - 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x22, 0x0a, 0x06, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, - 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, 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, 0x32, - 0x0a, 0x0e, 0x65, 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, 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, 0x05, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x1c, - 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, 0x2b, - 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x2a, 0x0a, 0x16, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 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, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, 0x32, 0x0a, 0x0e, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 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, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0e, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 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, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x67, 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, 0x41, 0x0a, 0x09, 0x61, 0x74, 0x74, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x03, 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, + 0x22, 0x25, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x24, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4c, 0x61, 0x67, 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, 0x13, 0x0a, + 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xda, 0x04, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, 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, 0x21, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x07, 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, 0x0a, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x0b, + 0x61, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 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, 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, 0x22, + 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x67, 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, 0x3b, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x52, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, + 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4c, 0x61, 0x67, 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, 0x22, 0x0a, 0x06, 0x6c, 0x61, + 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 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, 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, 0x32, 0x0a, 0x0e, 0x65, 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, 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, 0x05, 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, 0x3a, 0x06, + 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x1c, 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, 0x2b, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, + 0x67, 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, 0x2a, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 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, 0x19, 0x0a, + 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, + 0x4c, 0x61, 0x67, 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, 0x32, 0x0a, 0x0e, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 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, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 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, 0x1f, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, + 0x1c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, + 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x22, 0x5c, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, + 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x5c, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, - 0x01, 0x20, 0x03, 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, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x60, 0x0a, 0x18, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x5c, 0x0a, 0x17, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, - 0x01, 0x20, 0x03, 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, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x60, 0x0a, 0x18, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xb1, 0x02, 0x0a, - 0x07, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x47, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, - 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, - 0x43, 0x4c, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x03, 0x12, 0x19, 0x0a, - 0x15, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x47, 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, 0x05, 0x12, 0x1a, 0x0a, 0x16, - 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x55, 0x4e, - 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x47, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, - 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x50, 0x49, 0x44, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x47, - 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, - 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x0a, - 0x2a, 0xb2, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x41, 0x47, 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, 0x1a, 0x0a, 0x16, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, - 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, - 0x1b, 0x0a, 0x17, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, - 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, - 0x12, 0x23, 0x0a, 0x1f, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x04, 0x32, 0x95, 0x09, 0x0a, 0x03, 0x4c, 0x61, 0x67, 0x12, 0x60, 0x0a, - 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x12, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x12, 0x27, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, - 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x4c, - 0x61, 0x67, 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, 0x4c, 0x61, 0x67, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 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, 0x4c, 0x61, 0x67, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, + 0x22, 0x60, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, + 0x72, 0x65, 0x73, 0x70, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, - 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 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, 0x4c, - 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, - 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, + 0x70, 0x73, 0x22, 0x5c, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, + 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 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, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 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, 0x4c, 0x61, 0x67, 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, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, - 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 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, - 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, + 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, + 0x22, 0x60, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, + 0x72, 0x65, 0x73, 0x70, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, + 0x70, 0x73, 0x2a, 0x91, 0x03, 0x0a, 0x07, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x12, 0x18, + 0x0a, 0x14, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x41, 0x47, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x41, + 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, + 0x4c, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x22, + 0x0a, 0x1e, 0x4c, 0x41, 0x47, 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, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x06, 0x12, 0x18, + 0x0a, 0x14, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x41, 0x47, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x4c, + 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x44, + 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, + 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x52, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, + 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x4c, 0x41, 0x47, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, + 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x53, 0x49, 0x47, 0x4e, 0x4d, + 0x45, 0x4e, 0x54, 0x53, 0x10, 0x0d, 0x2a, 0xb2, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x67, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x41, 0x47, 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, 0x1a, 0x0a, 0x16, 0x4c, 0x41, 0x47, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, + 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, + 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, + 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x32, 0x95, 0x09, 0x0a, 0x03, + 0x4c, 0x61, 0x67, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x67, + 0x12, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, + 0x61, 0x67, 0x12, 0x27, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x4c, 0x61, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x4c, 0x61, + 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 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, + 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x67, 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, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x4c, 0x61, 0x67, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, + 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x4c, + 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 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, 0x84, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 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, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 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, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x4c, + 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, + 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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 ( diff --git a/dataplane/proto/sai/lag.proto b/dataplane/proto/sai/lag.proto index 683283d5..9eada4c3 100644 --- a/dataplane/proto/sai/lag.proto +++ b/dataplane/proto/sai/lag.proto @@ -7,144 +7,147 @@ 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_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]; + 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]; + 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.proto b/dataplane/proto/sai/macsec.proto index 3c8f6505..03cdf0b7 100644 --- a/dataplane/proto/sai/macsec.proto +++ b/dataplane/proto/sai/macsec.proto @@ -7,350 +7,342 @@ 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; } 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; } 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]; } 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]; } -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]; } message CreateMacsecFlowResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecFlowRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecFlowResponse {} +message RemoveMacsecFlowResponse { +} 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 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/mcast_fdb.proto b/dataplane/proto/sai/mcast_fdb.proto index 2e142efc..b8e9850f 100644 --- a/dataplane/proto/sai/mcast_fdb.proto +++ b/dataplane/proto/sai/mcast_fdb.proto @@ -7,54 +7,55 @@ 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 646a96ff..3b14b949 100644 --- a/dataplane/proto/sai/mirror.proto +++ b/dataplane/proto/sai/mirror.proto @@ -7,125 +7,122 @@ 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 3bc42d95..ad2b9f1c 100644 --- a/dataplane/proto/sai/mpls.proto +++ b/dataplane/proto/sai/mpls.proto @@ -7,98 +7,97 @@ 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 cc95455e..86eac57e 100644 --- a/dataplane/proto/sai/my_mac.proto +++ b/dataplane/proto/sai/my_mac.proto @@ -7,56 +7,58 @@ 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 4e078b74..2a10854e 100644 --- a/dataplane/proto/sai/nat.proto +++ b/dataplane/proto/sai/nat.proto @@ -7,171 +7,170 @@ 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 15236927..38f360fc 100644 --- a/dataplane/proto/sai/neighbor.proto +++ b/dataplane/proto/sai/neighbor.proto @@ -7,93 +7,92 @@ 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.pb.go b/dataplane/proto/sai/next_hop.pb.go index a7ffaecf..6423038e 100644 --- a/dataplane/proto/sai/next_hop.pb.go +++ b/dataplane/proto/sai/next_hop.pb.go @@ -44,6 +44,9 @@ const ( NextHopAttr_NEXT_HOP_ATTR_OUTSEG_EXP_MODE NextHopAttr = 14 NextHopAttr_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE NextHopAttr = 15 NextHopAttr_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP NextHopAttr = 16 + NextHopAttr_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE NextHopAttr = 17 + NextHopAttr_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE NextHopAttr = 18 + NextHopAttr_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE NextHopAttr = 19 ) // Enum value maps for NextHopAttr. @@ -66,6 +69,9 @@ var ( 14: "NEXT_HOP_ATTR_OUTSEG_EXP_MODE", 15: "NEXT_HOP_ATTR_OUTSEG_EXP_VALUE", 16: "NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP", + 17: "NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE", + 18: "NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE", + 19: "NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE", } NextHopAttr_value = map[string]int32{ "NEXT_HOP_ATTR_UNSPECIFIED": 0, @@ -85,6 +91,9 @@ var ( "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, } ) @@ -134,6 +143,9 @@ type CreateNextHopRequest struct { OutsegExpMode *OutsegExpMode `protobuf:"varint,15,opt,name=outseg_exp_mode,json=outsegExpMode,proto3,enum=lemming.dataplane.sai.OutsegExpMode,oneof" json:"outseg_exp_mode,omitempty"` OutsegExpValue *uint32 `protobuf:"varint,16,opt,name=outseg_exp_value,json=outsegExpValue,proto3,oneof" json:"outseg_exp_value,omitempty"` QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,17,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + DisableSrcMacRewrite *bool `protobuf:"varint,18,opt,name=disable_src_mac_rewrite,json=disableSrcMacRewrite,proto3,oneof" json:"disable_src_mac_rewrite,omitempty"` + DisableDstMacRewrite *bool `protobuf:"varint,19,opt,name=disable_dst_mac_rewrite,json=disableDstMacRewrite,proto3,oneof" json:"disable_dst_mac_rewrite,omitempty"` + DisableVlanRewrite *bool `protobuf:"varint,20,opt,name=disable_vlan_rewrite,json=disableVlanRewrite,proto3,oneof" json:"disable_vlan_rewrite,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -287,6 +299,27 @@ func (x *CreateNextHopRequest) GetQosTcAndColorToMplsExpMap() uint64 { return 0 } +func (x *CreateNextHopRequest) GetDisableSrcMacRewrite() bool { + if x != nil && x.DisableSrcMacRewrite != nil { + return *x.DisableSrcMacRewrite + } + return false +} + +func (x *CreateNextHopRequest) GetDisableDstMacRewrite() bool { + if x != nil && x.DisableDstMacRewrite != nil { + return *x.DisableDstMacRewrite + } + return false +} + +func (x *CreateNextHopRequest) GetDisableVlanRewrite() bool { + if x != nil && x.DisableVlanRewrite != nil { + return *x.DisableVlanRewrite + } + return false +} + type CreateNextHopResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -424,6 +457,9 @@ type SetNextHopAttributeRequest struct { OutsegExpMode *OutsegExpMode `protobuf:"varint,9,opt,name=outseg_exp_mode,json=outsegExpMode,proto3,enum=lemming.dataplane.sai.OutsegExpMode,oneof" json:"outseg_exp_mode,omitempty"` OutsegExpValue *uint32 `protobuf:"varint,10,opt,name=outseg_exp_value,json=outsegExpValue,proto3,oneof" json:"outseg_exp_value,omitempty"` QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,11,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + DisableSrcMacRewrite *bool `protobuf:"varint,12,opt,name=disable_src_mac_rewrite,json=disableSrcMacRewrite,proto3,oneof" json:"disable_src_mac_rewrite,omitempty"` + DisableDstMacRewrite *bool `protobuf:"varint,13,opt,name=disable_dst_mac_rewrite,json=disableDstMacRewrite,proto3,oneof" json:"disable_dst_mac_rewrite,omitempty"` + DisableVlanRewrite *bool `protobuf:"varint,14,opt,name=disable_vlan_rewrite,json=disableVlanRewrite,proto3,oneof" json:"disable_vlan_rewrite,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -535,6 +571,27 @@ func (x *SetNextHopAttributeRequest) GetQosTcAndColorToMplsExpMap() uint64 { return 0 } +func (x *SetNextHopAttributeRequest) GetDisableSrcMacRewrite() bool { + if x != nil && x.DisableSrcMacRewrite != nil { + return *x.DisableSrcMacRewrite + } + return false +} + +func (x *SetNextHopAttributeRequest) GetDisableDstMacRewrite() bool { + if x != nil && x.DisableDstMacRewrite != nil { + return *x.DisableDstMacRewrite + } + return false +} + +func (x *SetNextHopAttributeRequest) GetDisableVlanRewrite() bool { + if x != nil && x.DisableVlanRewrite != nil { + return *x.DisableVlanRewrite + } + return false +} + type SetNextHopAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -851,7 +908,7 @@ var file_dataplane_proto_sai_next_hop_proto_rawDesc = []byte{ 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, 0x80, 0x0a, + 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x0c, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 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, 0x43, @@ -914,88 +971,123 @@ var file_dataplane_proto_sai_next_hop_proto_rawDesc = []byte{ 0x61, 0x70, 0x18, 0x11, 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, - 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x05, 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, - 0x22, 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 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, 0x28, 0x0a, 0x14, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 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, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, - 0x07, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 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, - 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x00, 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, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x01, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x63, 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, 0x09, 0x48, 0x02, 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, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x03, 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, 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, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x04, 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, 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, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x05, 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, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0d, 0x48, 0x06, 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, 0x09, 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, 0x07, - 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, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x08, 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, 0x0b, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x09, 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, 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, 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, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x65, 0x74, + 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, 0x12, 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, + 0x13, 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, 0x14, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x05, 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, 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 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, 0x28, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 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, 0x17, 0x0a, + 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x09, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 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, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x00, 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, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x01, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x63, 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, 0x09, 0x48, 0x02, 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, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0a, 0x48, 0x03, 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, 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, 0x75, 0x74, 0x73, 0x65, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x04, 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, 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, 0x4f, + 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x05, 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, 0x08, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x06, 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, 0x09, 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, 0x07, 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, 0x0a, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x08, 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, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x10, 0x48, 0x09, 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, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0a, 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, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, + 0x48, 0x0b, 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, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x13, 0x48, 0x0c, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6c, 0x61, 0x6e, + 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 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, 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, 0x1d, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, @@ -1033,7 +1125,7 @@ var file_dataplane_proto_sai_next_hop_proto_rawDesc = []byte{ 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, - 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xc3, 0x04, 0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xc1, 0x05, 0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, @@ -1069,56 +1161,63 @@ var file_dataplane_proto_sai_next_hop_proto_rawDesc = []byte{ 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0f, 0x12, 0x32, 0x0a, 0x2e, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 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, 0x10, 0x32, 0xc7, 0x05, 0x0a, 0x07, - 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, + 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x10, 0x12, 0x29, 0x0a, 0x25, 0x4e, + 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x57, + 0x52, 0x49, 0x54, 0x45, 0x10, 0x11, 0x12, 0x29, 0x0a, 0x25, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, + 0x4f, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, + 0x12, 0x12, 0x26, 0x0a, 0x22, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x52, 0x45, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x13, 0x32, 0xc7, 0x05, 0x0a, 0x07, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, - 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, - 0x74, 0x48, 0x6f, 0x70, 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, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, + 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 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, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 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, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 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 ( diff --git a/dataplane/proto/sai/next_hop.proto b/dataplane/proto/sai/next_hop.proto index ae377f6f..4e4c8eec 100644 --- a/dataplane/proto/sai/next_hop.proto +++ b/dataplane/proto/sai/next_hop.proto @@ -7,107 +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_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]; + 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]; + 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 f584f8fb..c049ba99 100644 --- a/dataplane/proto/sai/next_hop_group.proto +++ b/dataplane/proto/sai/next_hop_group.proto @@ -7,235 +7,226 @@ 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.pb.go b/dataplane/proto/sai/poe.pb.go new file mode 100755 index 00000000..d3b88199 --- /dev/null +++ b/dataplane/proto/sai/poe.pb.go @@ -0,0 +1,113 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/poe.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_poe_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_poe_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x70, 0x6f, 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, 0x05, 0x0a, 0x03, 0x50, 0x6f, 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_poe_proto_goTypes = []any{} +var file_dataplane_proto_sai_poe_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_poe_proto_init() } +func file_dataplane_proto_sai_poe_proto_init() { + if File_dataplane_proto_sai_poe_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: file_dataplane_proto_sai_poe_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_poe_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_poe_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_poe_proto = out.File + file_dataplane_proto_sai_poe_proto_rawDesc = nil + file_dataplane_proto_sai_poe_proto_goTypes = nil + file_dataplane_proto_sai_poe_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// PoeClient is the client API for Poe service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type PoeClient interface { +} + +type poeClient struct { + cc grpc.ClientConnInterface +} + +func NewPoeClient(cc grpc.ClientConnInterface) PoeClient { + return &poeClient{cc} +} + +// PoeServer is the server API for Poe service. +type PoeServer interface { +} + +// UnimplementedPoeServer can be embedded to have forward compatible implementations. +type UnimplementedPoeServer struct { +} + +func RegisterPoeServer(s *grpc.Server, srv PoeServer) { + s.RegisterService(&_Poe_serviceDesc, srv) +} + +var _Poe_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.Poe", + HandlerType: (*PoeServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/poe.proto", +} diff --git a/dataplane/proto/sai/poe.proto b/dataplane/proto/sai/poe.proto new file mode 100644 index 00000000..97c80acf --- /dev/null +++ b/dataplane/proto/sai/poe.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service Poe { +} diff --git a/dataplane/proto/sai/policer.proto b/dataplane/proto/sai/policer.proto index ea5e65ff..d45966c7 100644 --- a/dataplane/proto/sai/policer.proto +++ b/dataplane/proto/sai/policer.proto @@ -7,90 +7,89 @@ 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; } 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]; } 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]; } -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 f2dfeb8b..7007aef0 100644 --- a/dataplane/proto/sai/port.pb.go +++ b/dataplane/proto/sai/port.pb.go @@ -183,6 +183,29 @@ const ( PortAttr_PORT_ATTR_FEC_ALIGNMENT_LOCK PortAttr = 153 PortAttr_PORT_ATTR_FABRIC_ISOLATE PortAttr = 154 PortAttr_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE PortAttr = 155 + PortAttr_PORT_ATTR_ARS_ENABLE PortAttr = 156 + PortAttr_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR PortAttr = 157 + PortAttr_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE PortAttr = 158 + PortAttr_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE PortAttr = 159 + PortAttr_PORT_ATTR_ARS_ALTERNATE_PATH PortAttr = 160 + PortAttr_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA PortAttr = 161 + PortAttr_PORT_ATTR_ECMP_HASH_ALGORITHM PortAttr = 162 + PortAttr_PORT_ATTR_ECMP_HASH_SEED PortAttr = 163 + PortAttr_PORT_ATTR_ECMP_HASH_OFFSET PortAttr = 164 + PortAttr_PORT_ATTR_OPER_PORT_FEC_MODE PortAttr = 165 + PortAttr_PORT_ATTR_HOST_TX_SIGNAL_ENABLE PortAttr = 166 + PortAttr_PORT_ATTR_HOST_TX_READY_STATUS PortAttr = 167 + PortAttr_PORT_ATTR_PATH_TRACING_INTF PortAttr = 168 + PortAttr_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE PortAttr = 169 + PortAttr_PORT_ATTR_RX_FREQUENCY_OFFSET_PPM PortAttr = 170 + PortAttr_PORT_ATTR_RX_SNR PortAttr = 171 + PortAttr_PORT_ATTR_DATAPATH_ENABLE PortAttr = 172 + PortAttr_PORT_ATTR_CABLE_PAIR_STATE PortAttr = 173 + PortAttr_PORT_ATTR_CABLE_PAIR_LENGTH PortAttr = 174 + PortAttr_PORT_ATTR_CABLE_TYPE PortAttr = 175 + 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 ) // Enum value maps for PortAttr. @@ -344,6 +367,29 @@ var ( 153: "PORT_ATTR_FEC_ALIGNMENT_LOCK", 154: "PORT_ATTR_FABRIC_ISOLATE", 155: "PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE", + 156: "PORT_ATTR_ARS_ENABLE", + 157: "PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR", + 158: "PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE", + 159: "PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE", + 160: "PORT_ATTR_ARS_ALTERNATE_PATH", + 161: "PORT_ATTR_JSON_FORMATTED_DEBUG_DATA", + 162: "PORT_ATTR_ECMP_HASH_ALGORITHM", + 163: "PORT_ATTR_ECMP_HASH_SEED", + 164: "PORT_ATTR_ECMP_HASH_OFFSET", + 165: "PORT_ATTR_OPER_PORT_FEC_MODE", + 166: "PORT_ATTR_HOST_TX_SIGNAL_ENABLE", + 167: "PORT_ATTR_HOST_TX_READY_STATUS", + 168: "PORT_ATTR_PATH_TRACING_INTF", + 169: "PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE", + 170: "PORT_ATTR_RX_FREQUENCY_OFFSET_PPM", + 171: "PORT_ATTR_RX_SNR", + 172: "PORT_ATTR_DATAPATH_ENABLE", + 173: "PORT_ATTR_CABLE_PAIR_STATE", + 174: "PORT_ATTR_CABLE_PAIR_LENGTH", + 175: "PORT_ATTR_CABLE_TYPE", + 176: "PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT", + 177: "PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT", + 178: "PORT_ATTR_POE_PORT_ID", } PortAttr_value = map[string]int32{ "PORT_ATTR_UNSPECIFIED": 0, @@ -502,6 +548,29 @@ var ( "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, } ) @@ -645,19 +714,27 @@ func (PortConnectorAttr) EnumDescriptor() ([]byte, []int) { type PortSerdesAttr int32 const ( - PortSerdesAttr_PORT_SERDES_ATTR_UNSPECIFIED PortSerdesAttr = 0 - PortSerdesAttr_PORT_SERDES_ATTR_PORT_ID PortSerdesAttr = 1 - PortSerdesAttr_PORT_SERDES_ATTR_PREEMPHASIS PortSerdesAttr = 2 - PortSerdesAttr_PORT_SERDES_ATTR_IDRIVER PortSerdesAttr = 3 - PortSerdesAttr_PORT_SERDES_ATTR_IPREDRIVER PortSerdesAttr = 4 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE1 PortSerdesAttr = 5 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE2 PortSerdesAttr = 6 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE3 PortSerdesAttr = 7 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_MAIN PortSerdesAttr = 8 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST1 PortSerdesAttr = 9 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST2 PortSerdesAttr = 10 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST3 PortSerdesAttr = 11 - PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_ATTN PortSerdesAttr = 12 + PortSerdesAttr_PORT_SERDES_ATTR_UNSPECIFIED PortSerdesAttr = 0 + PortSerdesAttr_PORT_SERDES_ATTR_PORT_ID PortSerdesAttr = 1 + PortSerdesAttr_PORT_SERDES_ATTR_PREEMPHASIS PortSerdesAttr = 2 + PortSerdesAttr_PORT_SERDES_ATTR_IDRIVER PortSerdesAttr = 3 + PortSerdesAttr_PORT_SERDES_ATTR_IPREDRIVER PortSerdesAttr = 4 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE1 PortSerdesAttr = 5 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE2 PortSerdesAttr = 6 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_PRE3 PortSerdesAttr = 7 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_MAIN PortSerdesAttr = 8 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST1 PortSerdesAttr = 9 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST2 PortSerdesAttr = 10 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_POST3 PortSerdesAttr = 11 + PortSerdesAttr_PORT_SERDES_ATTR_TX_FIR_ATTN PortSerdesAttr = 12 + PortSerdesAttr_PORT_SERDES_ATTR_TX_PAM4_RATIO PortSerdesAttr = 13 + PortSerdesAttr_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE PortSerdesAttr = 14 + PortSerdesAttr_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE PortSerdesAttr = 15 + PortSerdesAttr_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE PortSerdesAttr = 16 + PortSerdesAttr_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG PortSerdesAttr = 17 + PortSerdesAttr_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG PortSerdesAttr = 18 + PortSerdesAttr_PORT_SERDES_ATTR_TX_PRECODING PortSerdesAttr = 19 + PortSerdesAttr_PORT_SERDES_ATTR_RX_PRECODING PortSerdesAttr = 20 ) // Enum value maps for PortSerdesAttr. @@ -676,21 +753,37 @@ var ( 10: "PORT_SERDES_ATTR_TX_FIR_POST2", 11: "PORT_SERDES_ATTR_TX_FIR_POST3", 12: "PORT_SERDES_ATTR_TX_FIR_ATTN", + 13: "PORT_SERDES_ATTR_TX_PAM4_RATIO", + 14: "PORT_SERDES_ATTR_TX_OUT_COMMON_MODE", + 15: "PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE", + 16: "PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE", + 17: "PORT_SERDES_ATTR_TX_PMOS_VLTG_REG", + 18: "PORT_SERDES_ATTR_TX_NMOS_VLTG_REG", + 19: "PORT_SERDES_ATTR_TX_PRECODING", + 20: "PORT_SERDES_ATTR_RX_PRECODING", } PortSerdesAttr_value = map[string]int32{ - "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_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, } ) @@ -722,105 +815,120 @@ func (PortSerdesAttr) EnumDescriptor() ([]byte, []int) { } type CreatePortRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - HwLaneList []uint32 `protobuf:"varint,2,rep,packed,name=hw_lane_list,json=hwLaneList,proto3" json:"hw_lane_list,omitempty"` - Speed *uint32 `protobuf:"varint,3,opt,name=speed,proto3,oneof" json:"speed,omitempty"` - FullDuplexMode *bool `protobuf:"varint,4,opt,name=full_duplex_mode,json=fullDuplexMode,proto3,oneof" json:"full_duplex_mode,omitempty"` - AutoNegMode *bool `protobuf:"varint,5,opt,name=auto_neg_mode,json=autoNegMode,proto3,oneof" json:"auto_neg_mode,omitempty"` - AdminState *bool `protobuf:"varint,6,opt,name=admin_state,json=adminState,proto3,oneof" json:"admin_state,omitempty"` - MediaType *PortMediaType `protobuf:"varint,7,opt,name=media_type,json=mediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"media_type,omitempty"` - AdvertisedSpeed []uint32 `protobuf:"varint,8,rep,packed,name=advertised_speed,json=advertisedSpeed,proto3" json:"advertised_speed,omitempty"` - AdvertisedFecMode []PortFecMode `protobuf:"varint,9,rep,packed,name=advertised_fec_mode,json=advertisedFecMode,proto3,enum=lemming.dataplane.sai.PortFecMode" json:"advertised_fec_mode,omitempty"` - AdvertisedFecModeExtended []PortFecModeExtended `protobuf:"varint,10,rep,packed,name=advertised_fec_mode_extended,json=advertisedFecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended" json:"advertised_fec_mode_extended,omitempty"` - AdvertisedHalfDuplexSpeed []uint32 `protobuf:"varint,11,rep,packed,name=advertised_half_duplex_speed,json=advertisedHalfDuplexSpeed,proto3" json:"advertised_half_duplex_speed,omitempty"` - AdvertisedAutoNegMode *bool `protobuf:"varint,12,opt,name=advertised_auto_neg_mode,json=advertisedAutoNegMode,proto3,oneof" json:"advertised_auto_neg_mode,omitempty"` - AdvertisedFlowControlMode *PortFlowControlMode `protobuf:"varint,13,opt,name=advertised_flow_control_mode,json=advertisedFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"advertised_flow_control_mode,omitempty"` - AdvertisedAsymmetricPauseMode *bool `protobuf:"varint,14,opt,name=advertised_asymmetric_pause_mode,json=advertisedAsymmetricPauseMode,proto3,oneof" json:"advertised_asymmetric_pause_mode,omitempty"` - AdvertisedMediaType *PortMediaType `protobuf:"varint,15,opt,name=advertised_media_type,json=advertisedMediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"advertised_media_type,omitempty"` - AdvertisedOuiCode *uint32 `protobuf:"varint,16,opt,name=advertised_oui_code,json=advertisedOuiCode,proto3,oneof" json:"advertised_oui_code,omitempty"` - PortVlanId *uint32 `protobuf:"varint,17,opt,name=port_vlan_id,json=portVlanId,proto3,oneof" json:"port_vlan_id,omitempty"` - DefaultVlanPriority *uint32 `protobuf:"varint,18,opt,name=default_vlan_priority,json=defaultVlanPriority,proto3,oneof" json:"default_vlan_priority,omitempty"` - DropUntagged *bool `protobuf:"varint,19,opt,name=drop_untagged,json=dropUntagged,proto3,oneof" json:"drop_untagged,omitempty"` - DropTagged *bool `protobuf:"varint,20,opt,name=drop_tagged,json=dropTagged,proto3,oneof" json:"drop_tagged,omitempty"` - InternalLoopbackMode *PortInternalLoopbackMode `protobuf:"varint,21,opt,name=internal_loopback_mode,json=internalLoopbackMode,proto3,enum=lemming.dataplane.sai.PortInternalLoopbackMode,oneof" json:"internal_loopback_mode,omitempty"` - UseExtendedFec *bool `protobuf:"varint,22,opt,name=use_extended_fec,json=useExtendedFec,proto3,oneof" json:"use_extended_fec,omitempty"` - FecMode *PortFecMode `protobuf:"varint,23,opt,name=fec_mode,json=fecMode,proto3,enum=lemming.dataplane.sai.PortFecMode,oneof" json:"fec_mode,omitempty"` - FecModeExtended *PortFecModeExtended `protobuf:"varint,24,opt,name=fec_mode_extended,json=fecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended,oneof" json:"fec_mode_extended,omitempty"` - UpdateDscp *bool `protobuf:"varint,25,opt,name=update_dscp,json=updateDscp,proto3,oneof" json:"update_dscp,omitempty"` - Mtu *uint32 `protobuf:"varint,26,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` - FloodStormControlPolicerId *uint64 `protobuf:"varint,27,opt,name=flood_storm_control_policer_id,json=floodStormControlPolicerId,proto3,oneof" json:"flood_storm_control_policer_id,omitempty"` - BroadcastStormControlPolicerId *uint64 `protobuf:"varint,28,opt,name=broadcast_storm_control_policer_id,json=broadcastStormControlPolicerId,proto3,oneof" json:"broadcast_storm_control_policer_id,omitempty"` - MulticastStormControlPolicerId *uint64 `protobuf:"varint,29,opt,name=multicast_storm_control_policer_id,json=multicastStormControlPolicerId,proto3,oneof" json:"multicast_storm_control_policer_id,omitempty"` - GlobalFlowControlMode *PortFlowControlMode `protobuf:"varint,30,opt,name=global_flow_control_mode,json=globalFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"global_flow_control_mode,omitempty"` - IngressAcl *uint64 `protobuf:"varint,31,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` - EgressAcl *uint64 `protobuf:"varint,32,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` - IngressMacsecAcl *uint64 `protobuf:"varint,33,opt,name=ingress_macsec_acl,json=ingressMacsecAcl,proto3,oneof" json:"ingress_macsec_acl,omitempty"` - EgressMacsecAcl *uint64 `protobuf:"varint,34,opt,name=egress_macsec_acl,json=egressMacsecAcl,proto3,oneof" json:"egress_macsec_acl,omitempty"` - IngressMirrorSession []uint64 `protobuf:"varint,35,rep,packed,name=ingress_mirror_session,json=ingressMirrorSession,proto3" json:"ingress_mirror_session,omitempty"` - EgressMirrorSession []uint64 `protobuf:"varint,36,rep,packed,name=egress_mirror_session,json=egressMirrorSession,proto3" json:"egress_mirror_session,omitempty"` - IngressSamplepacketEnable *uint64 `protobuf:"varint,37,opt,name=ingress_samplepacket_enable,json=ingressSamplepacketEnable,proto3,oneof" json:"ingress_samplepacket_enable,omitempty"` - EgressSamplepacketEnable *uint64 `protobuf:"varint,38,opt,name=egress_samplepacket_enable,json=egressSamplepacketEnable,proto3,oneof" json:"egress_samplepacket_enable,omitempty"` - IngressSampleMirrorSession []uint64 `protobuf:"varint,39,rep,packed,name=ingress_sample_mirror_session,json=ingressSampleMirrorSession,proto3" json:"ingress_sample_mirror_session,omitempty"` - EgressSampleMirrorSession []uint64 `protobuf:"varint,40,rep,packed,name=egress_sample_mirror_session,json=egressSampleMirrorSession,proto3" json:"egress_sample_mirror_session,omitempty"` - PolicerId *uint64 `protobuf:"varint,41,opt,name=policer_id,json=policerId,proto3,oneof" json:"policer_id,omitempty"` - QosDefaultTc *uint32 `protobuf:"varint,42,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` - QosDot1PToTcMap *uint64 `protobuf:"varint,43,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` - QosDot1PToColorMap *uint64 `protobuf:"varint,44,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` - QosDscpToTcMap *uint64 `protobuf:"varint,45,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` - QosDscpToColorMap *uint64 `protobuf:"varint,46,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` - QosTcToQueueMap *uint64 `protobuf:"varint,47,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` - QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,48,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` - QosTcAndColorToDscpMap *uint64 `protobuf:"varint,49,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` - QosTcToPriorityGroupMap *uint64 `protobuf:"varint,50,opt,name=qos_tc_to_priority_group_map,json=qosTcToPriorityGroupMap,proto3,oneof" json:"qos_tc_to_priority_group_map,omitempty"` - QosPfcPriorityToPriorityGroupMap *uint64 `protobuf:"varint,51,opt,name=qos_pfc_priority_to_priority_group_map,json=qosPfcPriorityToPriorityGroupMap,proto3,oneof" json:"qos_pfc_priority_to_priority_group_map,omitempty"` - QosPfcPriorityToQueueMap *uint64 `protobuf:"varint,52,opt,name=qos_pfc_priority_to_queue_map,json=qosPfcPriorityToQueueMap,proto3,oneof" json:"qos_pfc_priority_to_queue_map,omitempty"` - QosSchedulerProfileId *uint64 `protobuf:"varint,53,opt,name=qos_scheduler_profile_id,json=qosSchedulerProfileId,proto3,oneof" json:"qos_scheduler_profile_id,omitempty"` - QosIngressBufferProfileList []uint64 `protobuf:"varint,54,rep,packed,name=qos_ingress_buffer_profile_list,json=qosIngressBufferProfileList,proto3" json:"qos_ingress_buffer_profile_list,omitempty"` - QosEgressBufferProfileList []uint64 `protobuf:"varint,55,rep,packed,name=qos_egress_buffer_profile_list,json=qosEgressBufferProfileList,proto3" json:"qos_egress_buffer_profile_list,omitempty"` - PriorityFlowControlMode *PortPriorityFlowControlMode `protobuf:"varint,56,opt,name=priority_flow_control_mode,json=priorityFlowControlMode,proto3,enum=lemming.dataplane.sai.PortPriorityFlowControlMode,oneof" json:"priority_flow_control_mode,omitempty"` - PriorityFlowControl *uint32 `protobuf:"varint,57,opt,name=priority_flow_control,json=priorityFlowControl,proto3,oneof" json:"priority_flow_control,omitempty"` - PriorityFlowControlRx *uint32 `protobuf:"varint,58,opt,name=priority_flow_control_rx,json=priorityFlowControlRx,proto3,oneof" json:"priority_flow_control_rx,omitempty"` - PriorityFlowControlTx *uint32 `protobuf:"varint,59,opt,name=priority_flow_control_tx,json=priorityFlowControlTx,proto3,oneof" json:"priority_flow_control_tx,omitempty"` - MetaData *uint32 `protobuf:"varint,60,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` - EgressBlockPortList []uint64 `protobuf:"varint,61,rep,packed,name=egress_block_port_list,json=egressBlockPortList,proto3" json:"egress_block_port_list,omitempty"` - HwProfileId *uint64 `protobuf:"varint,62,opt,name=hw_profile_id,json=hwProfileId,proto3,oneof" json:"hw_profile_id,omitempty"` - EeeEnable *bool `protobuf:"varint,63,opt,name=eee_enable,json=eeeEnable,proto3,oneof" json:"eee_enable,omitempty"` - EeeIdleTime *uint32 `protobuf:"varint,64,opt,name=eee_idle_time,json=eeeIdleTime,proto3,oneof" json:"eee_idle_time,omitempty"` - EeeWakeTime *uint32 `protobuf:"varint,65,opt,name=eee_wake_time,json=eeeWakeTime,proto3,oneof" json:"eee_wake_time,omitempty"` - IsolationGroup *uint64 `protobuf:"varint,66,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` - PktTxEnable *bool `protobuf:"varint,67,opt,name=pkt_tx_enable,json=pktTxEnable,proto3,oneof" json:"pkt_tx_enable,omitempty"` - TamObject []uint64 `protobuf:"varint,68,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` - SerdesPreemphasis []uint32 `protobuf:"varint,69,rep,packed,name=serdes_preemphasis,json=serdesPreemphasis,proto3" json:"serdes_preemphasis,omitempty"` - SerdesIdriver []uint32 `protobuf:"varint,70,rep,packed,name=serdes_idriver,json=serdesIdriver,proto3" json:"serdes_idriver,omitempty"` - SerdesIpredriver []uint32 `protobuf:"varint,71,rep,packed,name=serdes_ipredriver,json=serdesIpredriver,proto3" json:"serdes_ipredriver,omitempty"` - LinkTrainingEnable *bool `protobuf:"varint,72,opt,name=link_training_enable,json=linkTrainingEnable,proto3,oneof" json:"link_training_enable,omitempty"` - PtpMode *PortPtpMode `protobuf:"varint,73,opt,name=ptp_mode,json=ptpMode,proto3,enum=lemming.dataplane.sai.PortPtpMode,oneof" json:"ptp_mode,omitempty"` - InterfaceType *PortInterfaceType `protobuf:"varint,74,opt,name=interface_type,json=interfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType,oneof" json:"interface_type,omitempty"` - AdvertisedInterfaceType []PortInterfaceType `protobuf:"varint,75,rep,packed,name=advertised_interface_type,json=advertisedInterfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType" json:"advertised_interface_type,omitempty"` - ReferenceClock *uint64 `protobuf:"varint,76,opt,name=reference_clock,json=referenceClock,proto3,oneof" json:"reference_clock,omitempty"` - PrbsPolynomial *uint32 `protobuf:"varint,77,opt,name=prbs_polynomial,json=prbsPolynomial,proto3,oneof" json:"prbs_polynomial,omitempty"` - PrbsConfig *PortPrbsConfig `protobuf:"varint,78,opt,name=prbs_config,json=prbsConfig,proto3,enum=lemming.dataplane.sai.PortPrbsConfig,oneof" json:"prbs_config,omitempty"` - DisableDecrementTtl *bool `protobuf:"varint,79,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` - QosMplsExpToTcMap *uint64 `protobuf:"varint,80,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` - QosMplsExpToColorMap *uint64 `protobuf:"varint,81,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` - QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,82,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` - Tpid *uint32 `protobuf:"varint,83,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` - AutoNegFecModeOverride *bool `protobuf:"varint,84,opt,name=auto_neg_fec_mode_override,json=autoNegFecModeOverride,proto3,oneof" json:"auto_neg_fec_mode_override,omitempty"` - LoopbackMode *PortLoopbackMode `protobuf:"varint,85,opt,name=loopback_mode,json=loopbackMode,proto3,enum=lemming.dataplane.sai.PortLoopbackMode,oneof" json:"loopback_mode,omitempty"` - MdixModeConfig *PortMdixModeConfig `protobuf:"varint,86,opt,name=mdix_mode_config,json=mdixModeConfig,proto3,enum=lemming.dataplane.sai.PortMdixModeConfig,oneof" json:"mdix_mode_config,omitempty"` - AutoNegConfigMode *PortAutoNegConfigMode `protobuf:"varint,87,opt,name=auto_neg_config_mode,json=autoNegConfigMode,proto3,enum=lemming.dataplane.sai.PortAutoNegConfigMode,oneof" json:"auto_neg_config_mode,omitempty"` - X1000XSgmiiSlaveAutodetect *bool `protobuf:"varint,88,opt,name=_1000x_sgmii_slave_autodetect,json=1000xSgmiiSlaveAutodetect,proto3,oneof" json:"_1000x_sgmii_slave_autodetect,omitempty"` - ModuleType *PortModuleType `protobuf:"varint,89,opt,name=module_type,json=moduleType,proto3,enum=lemming.dataplane.sai.PortModuleType,oneof" json:"module_type,omitempty"` - DualMedia *PortDualMedia `protobuf:"varint,90,opt,name=dual_media,json=dualMedia,proto3,enum=lemming.dataplane.sai.PortDualMedia,oneof" json:"dual_media,omitempty"` - Ipg *uint32 `protobuf:"varint,91,opt,name=ipg,proto3,oneof" json:"ipg,omitempty"` - GlobalFlowControlForward *bool `protobuf:"varint,92,opt,name=global_flow_control_forward,json=globalFlowControlForward,proto3,oneof" json:"global_flow_control_forward,omitempty"` - PriorityFlowControlForward *bool `protobuf:"varint,93,opt,name=priority_flow_control_forward,json=priorityFlowControlForward,proto3,oneof" json:"priority_flow_control_forward,omitempty"` - QosDscpToForwardingClassMap *uint64 `protobuf:"varint,94,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` - QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,95,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` - PfcTcDldInterval []*UintMap `protobuf:"bytes,96,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` - PfcTcDlrInterval []*UintMap `protobuf:"bytes,97,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` - FabricIsolate *bool `protobuf:"varint,98,opt,name=fabric_isolate,json=fabricIsolate,proto3,oneof" json:"fabric_isolate,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + HwLaneList []uint32 `protobuf:"varint,2,rep,packed,name=hw_lane_list,json=hwLaneList,proto3" json:"hw_lane_list,omitempty"` + Speed *uint32 `protobuf:"varint,3,opt,name=speed,proto3,oneof" json:"speed,omitempty"` + FullDuplexMode *bool `protobuf:"varint,4,opt,name=full_duplex_mode,json=fullDuplexMode,proto3,oneof" json:"full_duplex_mode,omitempty"` + AutoNegMode *bool `protobuf:"varint,5,opt,name=auto_neg_mode,json=autoNegMode,proto3,oneof" json:"auto_neg_mode,omitempty"` + AdminState *bool `protobuf:"varint,6,opt,name=admin_state,json=adminState,proto3,oneof" json:"admin_state,omitempty"` + MediaType *PortMediaType `protobuf:"varint,7,opt,name=media_type,json=mediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"media_type,omitempty"` + AdvertisedSpeed []uint32 `protobuf:"varint,8,rep,packed,name=advertised_speed,json=advertisedSpeed,proto3" json:"advertised_speed,omitempty"` + AdvertisedFecMode []PortFecMode `protobuf:"varint,9,rep,packed,name=advertised_fec_mode,json=advertisedFecMode,proto3,enum=lemming.dataplane.sai.PortFecMode" json:"advertised_fec_mode,omitempty"` + AdvertisedFecModeExtended []PortFecModeExtended `protobuf:"varint,10,rep,packed,name=advertised_fec_mode_extended,json=advertisedFecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended" json:"advertised_fec_mode_extended,omitempty"` + AdvertisedHalfDuplexSpeed []uint32 `protobuf:"varint,11,rep,packed,name=advertised_half_duplex_speed,json=advertisedHalfDuplexSpeed,proto3" json:"advertised_half_duplex_speed,omitempty"` + AdvertisedAutoNegMode *bool `protobuf:"varint,12,opt,name=advertised_auto_neg_mode,json=advertisedAutoNegMode,proto3,oneof" json:"advertised_auto_neg_mode,omitempty"` + AdvertisedFlowControlMode *PortFlowControlMode `protobuf:"varint,13,opt,name=advertised_flow_control_mode,json=advertisedFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"advertised_flow_control_mode,omitempty"` + AdvertisedAsymmetricPauseMode *bool `protobuf:"varint,14,opt,name=advertised_asymmetric_pause_mode,json=advertisedAsymmetricPauseMode,proto3,oneof" json:"advertised_asymmetric_pause_mode,omitempty"` + AdvertisedMediaType *PortMediaType `protobuf:"varint,15,opt,name=advertised_media_type,json=advertisedMediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"advertised_media_type,omitempty"` + AdvertisedOuiCode *uint32 `protobuf:"varint,16,opt,name=advertised_oui_code,json=advertisedOuiCode,proto3,oneof" json:"advertised_oui_code,omitempty"` + PortVlanId *uint32 `protobuf:"varint,17,opt,name=port_vlan_id,json=portVlanId,proto3,oneof" json:"port_vlan_id,omitempty"` + DefaultVlanPriority *uint32 `protobuf:"varint,18,opt,name=default_vlan_priority,json=defaultVlanPriority,proto3,oneof" json:"default_vlan_priority,omitempty"` + DropUntagged *bool `protobuf:"varint,19,opt,name=drop_untagged,json=dropUntagged,proto3,oneof" json:"drop_untagged,omitempty"` + DropTagged *bool `protobuf:"varint,20,opt,name=drop_tagged,json=dropTagged,proto3,oneof" json:"drop_tagged,omitempty"` + InternalLoopbackMode *PortInternalLoopbackMode `protobuf:"varint,21,opt,name=internal_loopback_mode,json=internalLoopbackMode,proto3,enum=lemming.dataplane.sai.PortInternalLoopbackMode,oneof" json:"internal_loopback_mode,omitempty"` + UseExtendedFec *bool `protobuf:"varint,22,opt,name=use_extended_fec,json=useExtendedFec,proto3,oneof" json:"use_extended_fec,omitempty"` + FecMode *PortFecMode `protobuf:"varint,23,opt,name=fec_mode,json=fecMode,proto3,enum=lemming.dataplane.sai.PortFecMode,oneof" json:"fec_mode,omitempty"` + FecModeExtended *PortFecModeExtended `protobuf:"varint,24,opt,name=fec_mode_extended,json=fecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended,oneof" json:"fec_mode_extended,omitempty"` + UpdateDscp *bool `protobuf:"varint,25,opt,name=update_dscp,json=updateDscp,proto3,oneof" json:"update_dscp,omitempty"` + Mtu *uint32 `protobuf:"varint,26,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` + FloodStormControlPolicerId *uint64 `protobuf:"varint,27,opt,name=flood_storm_control_policer_id,json=floodStormControlPolicerId,proto3,oneof" json:"flood_storm_control_policer_id,omitempty"` + BroadcastStormControlPolicerId *uint64 `protobuf:"varint,28,opt,name=broadcast_storm_control_policer_id,json=broadcastStormControlPolicerId,proto3,oneof" json:"broadcast_storm_control_policer_id,omitempty"` + MulticastStormControlPolicerId *uint64 `protobuf:"varint,29,opt,name=multicast_storm_control_policer_id,json=multicastStormControlPolicerId,proto3,oneof" json:"multicast_storm_control_policer_id,omitempty"` + GlobalFlowControlMode *PortFlowControlMode `protobuf:"varint,30,opt,name=global_flow_control_mode,json=globalFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"global_flow_control_mode,omitempty"` + IngressAcl *uint64 `protobuf:"varint,31,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` + EgressAcl *uint64 `protobuf:"varint,32,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` + IngressMacsecAcl *uint64 `protobuf:"varint,33,opt,name=ingress_macsec_acl,json=ingressMacsecAcl,proto3,oneof" json:"ingress_macsec_acl,omitempty"` + EgressMacsecAcl *uint64 `protobuf:"varint,34,opt,name=egress_macsec_acl,json=egressMacsecAcl,proto3,oneof" json:"egress_macsec_acl,omitempty"` + IngressMirrorSession []uint64 `protobuf:"varint,35,rep,packed,name=ingress_mirror_session,json=ingressMirrorSession,proto3" json:"ingress_mirror_session,omitempty"` + EgressMirrorSession []uint64 `protobuf:"varint,36,rep,packed,name=egress_mirror_session,json=egressMirrorSession,proto3" json:"egress_mirror_session,omitempty"` + IngressSamplepacketEnable *uint64 `protobuf:"varint,37,opt,name=ingress_samplepacket_enable,json=ingressSamplepacketEnable,proto3,oneof" json:"ingress_samplepacket_enable,omitempty"` + EgressSamplepacketEnable *uint64 `protobuf:"varint,38,opt,name=egress_samplepacket_enable,json=egressSamplepacketEnable,proto3,oneof" json:"egress_samplepacket_enable,omitempty"` + IngressSampleMirrorSession []uint64 `protobuf:"varint,39,rep,packed,name=ingress_sample_mirror_session,json=ingressSampleMirrorSession,proto3" json:"ingress_sample_mirror_session,omitempty"` + EgressSampleMirrorSession []uint64 `protobuf:"varint,40,rep,packed,name=egress_sample_mirror_session,json=egressSampleMirrorSession,proto3" json:"egress_sample_mirror_session,omitempty"` + PolicerId *uint64 `protobuf:"varint,41,opt,name=policer_id,json=policerId,proto3,oneof" json:"policer_id,omitempty"` + QosDefaultTc *uint32 `protobuf:"varint,42,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` + QosDot1PToTcMap *uint64 `protobuf:"varint,43,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` + QosDot1PToColorMap *uint64 `protobuf:"varint,44,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` + QosDscpToTcMap *uint64 `protobuf:"varint,45,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` + QosDscpToColorMap *uint64 `protobuf:"varint,46,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` + QosTcToQueueMap *uint64 `protobuf:"varint,47,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` + QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,48,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` + QosTcAndColorToDscpMap *uint64 `protobuf:"varint,49,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` + QosTcToPriorityGroupMap *uint64 `protobuf:"varint,50,opt,name=qos_tc_to_priority_group_map,json=qosTcToPriorityGroupMap,proto3,oneof" json:"qos_tc_to_priority_group_map,omitempty"` + QosPfcPriorityToPriorityGroupMap *uint64 `protobuf:"varint,51,opt,name=qos_pfc_priority_to_priority_group_map,json=qosPfcPriorityToPriorityGroupMap,proto3,oneof" json:"qos_pfc_priority_to_priority_group_map,omitempty"` + QosPfcPriorityToQueueMap *uint64 `protobuf:"varint,52,opt,name=qos_pfc_priority_to_queue_map,json=qosPfcPriorityToQueueMap,proto3,oneof" json:"qos_pfc_priority_to_queue_map,omitempty"` + QosSchedulerProfileId *uint64 `protobuf:"varint,53,opt,name=qos_scheduler_profile_id,json=qosSchedulerProfileId,proto3,oneof" json:"qos_scheduler_profile_id,omitempty"` + QosIngressBufferProfileList []uint64 `protobuf:"varint,54,rep,packed,name=qos_ingress_buffer_profile_list,json=qosIngressBufferProfileList,proto3" json:"qos_ingress_buffer_profile_list,omitempty"` + QosEgressBufferProfileList []uint64 `protobuf:"varint,55,rep,packed,name=qos_egress_buffer_profile_list,json=qosEgressBufferProfileList,proto3" json:"qos_egress_buffer_profile_list,omitempty"` + PriorityFlowControlMode *PortPriorityFlowControlMode `protobuf:"varint,56,opt,name=priority_flow_control_mode,json=priorityFlowControlMode,proto3,enum=lemming.dataplane.sai.PortPriorityFlowControlMode,oneof" json:"priority_flow_control_mode,omitempty"` + PriorityFlowControl *uint32 `protobuf:"varint,57,opt,name=priority_flow_control,json=priorityFlowControl,proto3,oneof" json:"priority_flow_control,omitempty"` + PriorityFlowControlRx *uint32 `protobuf:"varint,58,opt,name=priority_flow_control_rx,json=priorityFlowControlRx,proto3,oneof" json:"priority_flow_control_rx,omitempty"` + PriorityFlowControlTx *uint32 `protobuf:"varint,59,opt,name=priority_flow_control_tx,json=priorityFlowControlTx,proto3,oneof" json:"priority_flow_control_tx,omitempty"` + MetaData *uint32 `protobuf:"varint,60,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` + EgressBlockPortList []uint64 `protobuf:"varint,61,rep,packed,name=egress_block_port_list,json=egressBlockPortList,proto3" json:"egress_block_port_list,omitempty"` + HwProfileId *uint64 `protobuf:"varint,62,opt,name=hw_profile_id,json=hwProfileId,proto3,oneof" json:"hw_profile_id,omitempty"` + EeeEnable *bool `protobuf:"varint,63,opt,name=eee_enable,json=eeeEnable,proto3,oneof" json:"eee_enable,omitempty"` + EeeIdleTime *uint32 `protobuf:"varint,64,opt,name=eee_idle_time,json=eeeIdleTime,proto3,oneof" json:"eee_idle_time,omitempty"` + EeeWakeTime *uint32 `protobuf:"varint,65,opt,name=eee_wake_time,json=eeeWakeTime,proto3,oneof" json:"eee_wake_time,omitempty"` + IsolationGroup *uint64 `protobuf:"varint,66,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` + PktTxEnable *bool `protobuf:"varint,67,opt,name=pkt_tx_enable,json=pktTxEnable,proto3,oneof" json:"pkt_tx_enable,omitempty"` + TamObject []uint64 `protobuf:"varint,68,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + SerdesPreemphasis []uint32 `protobuf:"varint,69,rep,packed,name=serdes_preemphasis,json=serdesPreemphasis,proto3" json:"serdes_preemphasis,omitempty"` + SerdesIdriver []uint32 `protobuf:"varint,70,rep,packed,name=serdes_idriver,json=serdesIdriver,proto3" json:"serdes_idriver,omitempty"` + SerdesIpredriver []uint32 `protobuf:"varint,71,rep,packed,name=serdes_ipredriver,json=serdesIpredriver,proto3" json:"serdes_ipredriver,omitempty"` + LinkTrainingEnable *bool `protobuf:"varint,72,opt,name=link_training_enable,json=linkTrainingEnable,proto3,oneof" json:"link_training_enable,omitempty"` + PtpMode *PortPtpMode `protobuf:"varint,73,opt,name=ptp_mode,json=ptpMode,proto3,enum=lemming.dataplane.sai.PortPtpMode,oneof" json:"ptp_mode,omitempty"` + InterfaceType *PortInterfaceType `protobuf:"varint,74,opt,name=interface_type,json=interfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType,oneof" json:"interface_type,omitempty"` + AdvertisedInterfaceType []PortInterfaceType `protobuf:"varint,75,rep,packed,name=advertised_interface_type,json=advertisedInterfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType" json:"advertised_interface_type,omitempty"` + ReferenceClock *uint64 `protobuf:"varint,76,opt,name=reference_clock,json=referenceClock,proto3,oneof" json:"reference_clock,omitempty"` + PrbsPolynomial *uint32 `protobuf:"varint,77,opt,name=prbs_polynomial,json=prbsPolynomial,proto3,oneof" json:"prbs_polynomial,omitempty"` + PrbsConfig *PortPrbsConfig `protobuf:"varint,78,opt,name=prbs_config,json=prbsConfig,proto3,enum=lemming.dataplane.sai.PortPrbsConfig,oneof" json:"prbs_config,omitempty"` + DisableDecrementTtl *bool `protobuf:"varint,79,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` + QosMplsExpToTcMap *uint64 `protobuf:"varint,80,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` + QosMplsExpToColorMap *uint64 `protobuf:"varint,81,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` + QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,82,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + Tpid *uint32 `protobuf:"varint,83,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` + AutoNegFecModeOverride *bool `protobuf:"varint,84,opt,name=auto_neg_fec_mode_override,json=autoNegFecModeOverride,proto3,oneof" json:"auto_neg_fec_mode_override,omitempty"` + LoopbackMode *PortLoopbackMode `protobuf:"varint,85,opt,name=loopback_mode,json=loopbackMode,proto3,enum=lemming.dataplane.sai.PortLoopbackMode,oneof" json:"loopback_mode,omitempty"` + MdixModeConfig *PortMdixModeConfig `protobuf:"varint,86,opt,name=mdix_mode_config,json=mdixModeConfig,proto3,enum=lemming.dataplane.sai.PortMdixModeConfig,oneof" json:"mdix_mode_config,omitempty"` + AutoNegConfigMode *PortAutoNegConfigMode `protobuf:"varint,87,opt,name=auto_neg_config_mode,json=autoNegConfigMode,proto3,enum=lemming.dataplane.sai.PortAutoNegConfigMode,oneof" json:"auto_neg_config_mode,omitempty"` + X1000XSgmiiSlaveAutodetect *bool `protobuf:"varint,88,opt,name=_1000x_sgmii_slave_autodetect,json=1000xSgmiiSlaveAutodetect,proto3,oneof" json:"_1000x_sgmii_slave_autodetect,omitempty"` + ModuleType *PortModuleType `protobuf:"varint,89,opt,name=module_type,json=moduleType,proto3,enum=lemming.dataplane.sai.PortModuleType,oneof" json:"module_type,omitempty"` + DualMedia *PortDualMedia `protobuf:"varint,90,opt,name=dual_media,json=dualMedia,proto3,enum=lemming.dataplane.sai.PortDualMedia,oneof" json:"dual_media,omitempty"` + Ipg *uint32 `protobuf:"varint,91,opt,name=ipg,proto3,oneof" json:"ipg,omitempty"` + GlobalFlowControlForward *bool `protobuf:"varint,92,opt,name=global_flow_control_forward,json=globalFlowControlForward,proto3,oneof" json:"global_flow_control_forward,omitempty"` + PriorityFlowControlForward *bool `protobuf:"varint,93,opt,name=priority_flow_control_forward,json=priorityFlowControlForward,proto3,oneof" json:"priority_flow_control_forward,omitempty"` + QosDscpToForwardingClassMap *uint64 `protobuf:"varint,94,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` + QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,95,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` + PfcTcDldInterval []*UintMap `protobuf:"bytes,96,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` + PfcTcDlrInterval []*UintMap `protobuf:"bytes,97,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` + FabricIsolate *bool `protobuf:"varint,98,opt,name=fabric_isolate,json=fabricIsolate,proto3,oneof" json:"fabric_isolate,omitempty"` + ArsEnable *bool `protobuf:"varint,99,opt,name=ars_enable,json=arsEnable,proto3,oneof" json:"ars_enable,omitempty"` + ArsPortLoadScalingFactor *uint32 `protobuf:"varint,100,opt,name=ars_port_load_scaling_factor,json=arsPortLoadScalingFactor,proto3,oneof" json:"ars_port_load_scaling_factor,omitempty"` + ArsPortLoadPastEnable *bool `protobuf:"varint,101,opt,name=ars_port_load_past_enable,json=arsPortLoadPastEnable,proto3,oneof" json:"ars_port_load_past_enable,omitempty"` + ArsPortLoadFutureEnable *bool `protobuf:"varint,102,opt,name=ars_port_load_future_enable,json=arsPortLoadFutureEnable,proto3,oneof" json:"ars_port_load_future_enable,omitempty"` + ArsAlternatePath *bool `protobuf:"varint,103,opt,name=ars_alternate_path,json=arsAlternatePath,proto3,oneof" json:"ars_alternate_path,omitempty"` + EcmpHashAlgorithm *HashAlgorithm `protobuf:"varint,104,opt,name=ecmp_hash_algorithm,json=ecmpHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_hash_algorithm,omitempty"` + EcmpHashSeed *uint32 `protobuf:"varint,105,opt,name=ecmp_hash_seed,json=ecmpHashSeed,proto3,oneof" json:"ecmp_hash_seed,omitempty"` + EcmpHashOffset *uint32 `protobuf:"varint,106,opt,name=ecmp_hash_offset,json=ecmpHashOffset,proto3,oneof" json:"ecmp_hash_offset,omitempty"` + HostTxSignalEnable *bool `protobuf:"varint,107,opt,name=host_tx_signal_enable,json=hostTxSignalEnable,proto3,oneof" json:"host_tx_signal_enable,omitempty"` + PathTracingIntf *uint32 `protobuf:"varint,108,opt,name=path_tracing_intf,json=pathTracingIntf,proto3,oneof" json:"path_tracing_intf,omitempty"` + PathTracingTimestampType *PortPathTracingTimestampType `protobuf:"varint,109,opt,name=path_tracing_timestamp_type,json=pathTracingTimestampType,proto3,enum=lemming.dataplane.sai.PortPathTracingTimestampType,oneof" json:"path_tracing_timestamp_type,omitempty"` + DatapathEnable *PortDatapathEnable `protobuf:"varint,110,opt,name=datapath_enable,json=datapathEnable,proto3,enum=lemming.dataplane.sai.PortDatapathEnable,oneof" json:"datapath_enable,omitempty"` + 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1541,6 +1649,111 @@ func (x *CreatePortRequest) GetFabricIsolate() bool { return false } +func (x *CreatePortRequest) GetArsEnable() bool { + if x != nil && x.ArsEnable != nil { + return *x.ArsEnable + } + return false +} + +func (x *CreatePortRequest) GetArsPortLoadScalingFactor() uint32 { + if x != nil && x.ArsPortLoadScalingFactor != nil { + return *x.ArsPortLoadScalingFactor + } + return 0 +} + +func (x *CreatePortRequest) GetArsPortLoadPastEnable() bool { + if x != nil && x.ArsPortLoadPastEnable != nil { + return *x.ArsPortLoadPastEnable + } + return false +} + +func (x *CreatePortRequest) GetArsPortLoadFutureEnable() bool { + if x != nil && x.ArsPortLoadFutureEnable != nil { + return *x.ArsPortLoadFutureEnable + } + return false +} + +func (x *CreatePortRequest) GetArsAlternatePath() bool { + if x != nil && x.ArsAlternatePath != nil { + return *x.ArsAlternatePath + } + return false +} + +func (x *CreatePortRequest) GetEcmpHashAlgorithm() HashAlgorithm { + if x != nil && x.EcmpHashAlgorithm != nil { + return *x.EcmpHashAlgorithm + } + return HashAlgorithm_HASH_ALGORITHM_UNSPECIFIED +} + +func (x *CreatePortRequest) GetEcmpHashSeed() uint32 { + if x != nil && x.EcmpHashSeed != nil { + return *x.EcmpHashSeed + } + return 0 +} + +func (x *CreatePortRequest) GetEcmpHashOffset() uint32 { + if x != nil && x.EcmpHashOffset != nil { + return *x.EcmpHashOffset + } + return 0 +} + +func (x *CreatePortRequest) GetHostTxSignalEnable() bool { + if x != nil && x.HostTxSignalEnable != nil { + return *x.HostTxSignalEnable + } + return false +} + +func (x *CreatePortRequest) GetPathTracingIntf() uint32 { + if x != nil && x.PathTracingIntf != nil { + return *x.PathTracingIntf + } + return 0 +} + +func (x *CreatePortRequest) GetPathTracingTimestampType() PortPathTracingTimestampType { + if x != nil && x.PathTracingTimestampType != nil { + return *x.PathTracingTimestampType + } + return PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED +} + +func (x *CreatePortRequest) GetDatapathEnable() PortDatapathEnable { + if x != nil && x.DatapathEnable != nil { + return *x.DatapathEnable + } + return PortDatapathEnable_PORT_DATAPATH_ENABLE_UNSPECIFIED +} + +func (x *CreatePortRequest) GetCableType() PortCableType { + if x != nil && x.CableType != nil { + return *x.CableType + } + return PortCableType_PORT_CABLE_TYPE_UNSPECIFIED +} + +func (x *CreatePortRequest) GetArsPortLoadPastWeight() uint32 { + if x != nil && x.ArsPortLoadPastWeight != nil { + return *x.ArsPortLoadPastWeight + } + return 0 +} + +func (x *CreatePortRequest) GetArsPortLoadFutureWeight() uint32 { + if x != nil && x.ArsPortLoadFutureWeight != nil { + return *x.ArsPortLoadFutureWeight + } + return 0 +} + type CreatePortResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1666,102 +1879,117 @@ func (*RemovePortResponse) Descriptor() ([]byte, []int) { } type SetPortAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - Speed *uint32 `protobuf:"varint,2,opt,name=speed,proto3,oneof" json:"speed,omitempty"` - AutoNegMode *bool `protobuf:"varint,3,opt,name=auto_neg_mode,json=autoNegMode,proto3,oneof" json:"auto_neg_mode,omitempty"` - AdminState *bool `protobuf:"varint,4,opt,name=admin_state,json=adminState,proto3,oneof" json:"admin_state,omitempty"` - MediaType *PortMediaType `protobuf:"varint,5,opt,name=media_type,json=mediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"media_type,omitempty"` - AdvertisedSpeed []uint32 `protobuf:"varint,6,rep,packed,name=advertised_speed,json=advertisedSpeed,proto3" json:"advertised_speed,omitempty"` - AdvertisedFecMode []PortFecMode `protobuf:"varint,7,rep,packed,name=advertised_fec_mode,json=advertisedFecMode,proto3,enum=lemming.dataplane.sai.PortFecMode" json:"advertised_fec_mode,omitempty"` - AdvertisedFecModeExtended []PortFecModeExtended `protobuf:"varint,8,rep,packed,name=advertised_fec_mode_extended,json=advertisedFecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended" json:"advertised_fec_mode_extended,omitempty"` - AdvertisedHalfDuplexSpeed []uint32 `protobuf:"varint,9,rep,packed,name=advertised_half_duplex_speed,json=advertisedHalfDuplexSpeed,proto3" json:"advertised_half_duplex_speed,omitempty"` - AdvertisedAutoNegMode *bool `protobuf:"varint,10,opt,name=advertised_auto_neg_mode,json=advertisedAutoNegMode,proto3,oneof" json:"advertised_auto_neg_mode,omitempty"` - AdvertisedFlowControlMode *PortFlowControlMode `protobuf:"varint,11,opt,name=advertised_flow_control_mode,json=advertisedFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"advertised_flow_control_mode,omitempty"` - AdvertisedAsymmetricPauseMode *bool `protobuf:"varint,12,opt,name=advertised_asymmetric_pause_mode,json=advertisedAsymmetricPauseMode,proto3,oneof" json:"advertised_asymmetric_pause_mode,omitempty"` - AdvertisedMediaType *PortMediaType `protobuf:"varint,13,opt,name=advertised_media_type,json=advertisedMediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"advertised_media_type,omitempty"` - AdvertisedOuiCode *uint32 `protobuf:"varint,14,opt,name=advertised_oui_code,json=advertisedOuiCode,proto3,oneof" json:"advertised_oui_code,omitempty"` - PortVlanId *uint32 `protobuf:"varint,15,opt,name=port_vlan_id,json=portVlanId,proto3,oneof" json:"port_vlan_id,omitempty"` - DefaultVlanPriority *uint32 `protobuf:"varint,16,opt,name=default_vlan_priority,json=defaultVlanPriority,proto3,oneof" json:"default_vlan_priority,omitempty"` - DropUntagged *bool `protobuf:"varint,17,opt,name=drop_untagged,json=dropUntagged,proto3,oneof" json:"drop_untagged,omitempty"` - DropTagged *bool `protobuf:"varint,18,opt,name=drop_tagged,json=dropTagged,proto3,oneof" json:"drop_tagged,omitempty"` - InternalLoopbackMode *PortInternalLoopbackMode `protobuf:"varint,19,opt,name=internal_loopback_mode,json=internalLoopbackMode,proto3,enum=lemming.dataplane.sai.PortInternalLoopbackMode,oneof" json:"internal_loopback_mode,omitempty"` - UseExtendedFec *bool `protobuf:"varint,20,opt,name=use_extended_fec,json=useExtendedFec,proto3,oneof" json:"use_extended_fec,omitempty"` - FecMode *PortFecMode `protobuf:"varint,21,opt,name=fec_mode,json=fecMode,proto3,enum=lemming.dataplane.sai.PortFecMode,oneof" json:"fec_mode,omitempty"` - FecModeExtended *PortFecModeExtended `protobuf:"varint,22,opt,name=fec_mode_extended,json=fecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended,oneof" json:"fec_mode_extended,omitempty"` - UpdateDscp *bool `protobuf:"varint,23,opt,name=update_dscp,json=updateDscp,proto3,oneof" json:"update_dscp,omitempty"` - Mtu *uint32 `protobuf:"varint,24,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` - FloodStormControlPolicerId *uint64 `protobuf:"varint,25,opt,name=flood_storm_control_policer_id,json=floodStormControlPolicerId,proto3,oneof" json:"flood_storm_control_policer_id,omitempty"` - BroadcastStormControlPolicerId *uint64 `protobuf:"varint,26,opt,name=broadcast_storm_control_policer_id,json=broadcastStormControlPolicerId,proto3,oneof" json:"broadcast_storm_control_policer_id,omitempty"` - MulticastStormControlPolicerId *uint64 `protobuf:"varint,27,opt,name=multicast_storm_control_policer_id,json=multicastStormControlPolicerId,proto3,oneof" json:"multicast_storm_control_policer_id,omitempty"` - GlobalFlowControlMode *PortFlowControlMode `protobuf:"varint,28,opt,name=global_flow_control_mode,json=globalFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"global_flow_control_mode,omitempty"` - IngressAcl *uint64 `protobuf:"varint,29,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` - EgressAcl *uint64 `protobuf:"varint,30,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` - IngressMacsecAcl *uint64 `protobuf:"varint,31,opt,name=ingress_macsec_acl,json=ingressMacsecAcl,proto3,oneof" json:"ingress_macsec_acl,omitempty"` - EgressMacsecAcl *uint64 `protobuf:"varint,32,opt,name=egress_macsec_acl,json=egressMacsecAcl,proto3,oneof" json:"egress_macsec_acl,omitempty"` - IngressMirrorSession []uint64 `protobuf:"varint,33,rep,packed,name=ingress_mirror_session,json=ingressMirrorSession,proto3" json:"ingress_mirror_session,omitempty"` - EgressMirrorSession []uint64 `protobuf:"varint,34,rep,packed,name=egress_mirror_session,json=egressMirrorSession,proto3" json:"egress_mirror_session,omitempty"` - IngressSamplepacketEnable *uint64 `protobuf:"varint,35,opt,name=ingress_samplepacket_enable,json=ingressSamplepacketEnable,proto3,oneof" json:"ingress_samplepacket_enable,omitempty"` - EgressSamplepacketEnable *uint64 `protobuf:"varint,36,opt,name=egress_samplepacket_enable,json=egressSamplepacketEnable,proto3,oneof" json:"egress_samplepacket_enable,omitempty"` - IngressSampleMirrorSession []uint64 `protobuf:"varint,37,rep,packed,name=ingress_sample_mirror_session,json=ingressSampleMirrorSession,proto3" json:"ingress_sample_mirror_session,omitempty"` - EgressSampleMirrorSession []uint64 `protobuf:"varint,38,rep,packed,name=egress_sample_mirror_session,json=egressSampleMirrorSession,proto3" json:"egress_sample_mirror_session,omitempty"` - PolicerId *uint64 `protobuf:"varint,39,opt,name=policer_id,json=policerId,proto3,oneof" json:"policer_id,omitempty"` - QosDefaultTc *uint32 `protobuf:"varint,40,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` - QosDot1PToTcMap *uint64 `protobuf:"varint,41,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` - QosDot1PToColorMap *uint64 `protobuf:"varint,42,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` - QosDscpToTcMap *uint64 `protobuf:"varint,43,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` - QosDscpToColorMap *uint64 `protobuf:"varint,44,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` - QosTcToQueueMap *uint64 `protobuf:"varint,45,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` - QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,46,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` - QosTcAndColorToDscpMap *uint64 `protobuf:"varint,47,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` - QosTcToPriorityGroupMap *uint64 `protobuf:"varint,48,opt,name=qos_tc_to_priority_group_map,json=qosTcToPriorityGroupMap,proto3,oneof" json:"qos_tc_to_priority_group_map,omitempty"` - QosPfcPriorityToPriorityGroupMap *uint64 `protobuf:"varint,49,opt,name=qos_pfc_priority_to_priority_group_map,json=qosPfcPriorityToPriorityGroupMap,proto3,oneof" json:"qos_pfc_priority_to_priority_group_map,omitempty"` - QosPfcPriorityToQueueMap *uint64 `protobuf:"varint,50,opt,name=qos_pfc_priority_to_queue_map,json=qosPfcPriorityToQueueMap,proto3,oneof" json:"qos_pfc_priority_to_queue_map,omitempty"` - QosSchedulerProfileId *uint64 `protobuf:"varint,51,opt,name=qos_scheduler_profile_id,json=qosSchedulerProfileId,proto3,oneof" json:"qos_scheduler_profile_id,omitempty"` - QosIngressBufferProfileList []uint64 `protobuf:"varint,52,rep,packed,name=qos_ingress_buffer_profile_list,json=qosIngressBufferProfileList,proto3" json:"qos_ingress_buffer_profile_list,omitempty"` - QosEgressBufferProfileList []uint64 `protobuf:"varint,53,rep,packed,name=qos_egress_buffer_profile_list,json=qosEgressBufferProfileList,proto3" json:"qos_egress_buffer_profile_list,omitempty"` - PriorityFlowControlMode *PortPriorityFlowControlMode `protobuf:"varint,54,opt,name=priority_flow_control_mode,json=priorityFlowControlMode,proto3,enum=lemming.dataplane.sai.PortPriorityFlowControlMode,oneof" json:"priority_flow_control_mode,omitempty"` - PriorityFlowControl *uint32 `protobuf:"varint,55,opt,name=priority_flow_control,json=priorityFlowControl,proto3,oneof" json:"priority_flow_control,omitempty"` - PriorityFlowControlRx *uint32 `protobuf:"varint,56,opt,name=priority_flow_control_rx,json=priorityFlowControlRx,proto3,oneof" json:"priority_flow_control_rx,omitempty"` - PriorityFlowControlTx *uint32 `protobuf:"varint,57,opt,name=priority_flow_control_tx,json=priorityFlowControlTx,proto3,oneof" json:"priority_flow_control_tx,omitempty"` - MetaData *uint32 `protobuf:"varint,58,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` - EgressBlockPortList []uint64 `protobuf:"varint,59,rep,packed,name=egress_block_port_list,json=egressBlockPortList,proto3" json:"egress_block_port_list,omitempty"` - HwProfileId *uint64 `protobuf:"varint,60,opt,name=hw_profile_id,json=hwProfileId,proto3,oneof" json:"hw_profile_id,omitempty"` - EeeEnable *bool `protobuf:"varint,61,opt,name=eee_enable,json=eeeEnable,proto3,oneof" json:"eee_enable,omitempty"` - EeeIdleTime *uint32 `protobuf:"varint,62,opt,name=eee_idle_time,json=eeeIdleTime,proto3,oneof" json:"eee_idle_time,omitempty"` - EeeWakeTime *uint32 `protobuf:"varint,63,opt,name=eee_wake_time,json=eeeWakeTime,proto3,oneof" json:"eee_wake_time,omitempty"` - IsolationGroup *uint64 `protobuf:"varint,64,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` - PktTxEnable *bool `protobuf:"varint,65,opt,name=pkt_tx_enable,json=pktTxEnable,proto3,oneof" json:"pkt_tx_enable,omitempty"` - TamObject []uint64 `protobuf:"varint,66,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` - SerdesPreemphasis []uint32 `protobuf:"varint,67,rep,packed,name=serdes_preemphasis,json=serdesPreemphasis,proto3" json:"serdes_preemphasis,omitempty"` - SerdesIdriver []uint32 `protobuf:"varint,68,rep,packed,name=serdes_idriver,json=serdesIdriver,proto3" json:"serdes_idriver,omitempty"` - SerdesIpredriver []uint32 `protobuf:"varint,69,rep,packed,name=serdes_ipredriver,json=serdesIpredriver,proto3" json:"serdes_ipredriver,omitempty"` - LinkTrainingEnable *bool `protobuf:"varint,70,opt,name=link_training_enable,json=linkTrainingEnable,proto3,oneof" json:"link_training_enable,omitempty"` - PtpMode *PortPtpMode `protobuf:"varint,71,opt,name=ptp_mode,json=ptpMode,proto3,enum=lemming.dataplane.sai.PortPtpMode,oneof" json:"ptp_mode,omitempty"` - InterfaceType *PortInterfaceType `protobuf:"varint,72,opt,name=interface_type,json=interfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType,oneof" json:"interface_type,omitempty"` - AdvertisedInterfaceType []PortInterfaceType `protobuf:"varint,73,rep,packed,name=advertised_interface_type,json=advertisedInterfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType" json:"advertised_interface_type,omitempty"` - PrbsPolynomial *uint32 `protobuf:"varint,74,opt,name=prbs_polynomial,json=prbsPolynomial,proto3,oneof" json:"prbs_polynomial,omitempty"` - PrbsConfig *PortPrbsConfig `protobuf:"varint,75,opt,name=prbs_config,json=prbsConfig,proto3,enum=lemming.dataplane.sai.PortPrbsConfig,oneof" json:"prbs_config,omitempty"` - DisableDecrementTtl *bool `protobuf:"varint,76,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` - QosMplsExpToTcMap *uint64 `protobuf:"varint,77,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` - QosMplsExpToColorMap *uint64 `protobuf:"varint,78,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` - QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,79,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` - Tpid *uint32 `protobuf:"varint,80,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` - AutoNegFecModeOverride *bool `protobuf:"varint,81,opt,name=auto_neg_fec_mode_override,json=autoNegFecModeOverride,proto3,oneof" json:"auto_neg_fec_mode_override,omitempty"` - LoopbackMode *PortLoopbackMode `protobuf:"varint,82,opt,name=loopback_mode,json=loopbackMode,proto3,enum=lemming.dataplane.sai.PortLoopbackMode,oneof" json:"loopback_mode,omitempty"` - MdixModeConfig *PortMdixModeConfig `protobuf:"varint,83,opt,name=mdix_mode_config,json=mdixModeConfig,proto3,enum=lemming.dataplane.sai.PortMdixModeConfig,oneof" json:"mdix_mode_config,omitempty"` - AutoNegConfigMode *PortAutoNegConfigMode `protobuf:"varint,84,opt,name=auto_neg_config_mode,json=autoNegConfigMode,proto3,enum=lemming.dataplane.sai.PortAutoNegConfigMode,oneof" json:"auto_neg_config_mode,omitempty"` - X1000XSgmiiSlaveAutodetect *bool `protobuf:"varint,85,opt,name=_1000x_sgmii_slave_autodetect,json=1000xSgmiiSlaveAutodetect,proto3,oneof" json:"_1000x_sgmii_slave_autodetect,omitempty"` - ModuleType *PortModuleType `protobuf:"varint,86,opt,name=module_type,json=moduleType,proto3,enum=lemming.dataplane.sai.PortModuleType,oneof" json:"module_type,omitempty"` - DualMedia *PortDualMedia `protobuf:"varint,87,opt,name=dual_media,json=dualMedia,proto3,enum=lemming.dataplane.sai.PortDualMedia,oneof" json:"dual_media,omitempty"` - Ipg *uint32 `protobuf:"varint,88,opt,name=ipg,proto3,oneof" json:"ipg,omitempty"` - GlobalFlowControlForward *bool `protobuf:"varint,89,opt,name=global_flow_control_forward,json=globalFlowControlForward,proto3,oneof" json:"global_flow_control_forward,omitempty"` - PriorityFlowControlForward *bool `protobuf:"varint,90,opt,name=priority_flow_control_forward,json=priorityFlowControlForward,proto3,oneof" json:"priority_flow_control_forward,omitempty"` - QosDscpToForwardingClassMap *uint64 `protobuf:"varint,91,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` - QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,92,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` - PfcTcDldInterval []*UintMap `protobuf:"bytes,93,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` - PfcTcDlrInterval []*UintMap `protobuf:"bytes,94,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` - FabricIsolate *bool `protobuf:"varint,95,opt,name=fabric_isolate,json=fabricIsolate,proto3,oneof" json:"fabric_isolate,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + Speed *uint32 `protobuf:"varint,2,opt,name=speed,proto3,oneof" json:"speed,omitempty"` + AutoNegMode *bool `protobuf:"varint,3,opt,name=auto_neg_mode,json=autoNegMode,proto3,oneof" json:"auto_neg_mode,omitempty"` + AdminState *bool `protobuf:"varint,4,opt,name=admin_state,json=adminState,proto3,oneof" json:"admin_state,omitempty"` + MediaType *PortMediaType `protobuf:"varint,5,opt,name=media_type,json=mediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"media_type,omitempty"` + AdvertisedSpeed []uint32 `protobuf:"varint,6,rep,packed,name=advertised_speed,json=advertisedSpeed,proto3" json:"advertised_speed,omitempty"` + AdvertisedFecMode []PortFecMode `protobuf:"varint,7,rep,packed,name=advertised_fec_mode,json=advertisedFecMode,proto3,enum=lemming.dataplane.sai.PortFecMode" json:"advertised_fec_mode,omitempty"` + AdvertisedFecModeExtended []PortFecModeExtended `protobuf:"varint,8,rep,packed,name=advertised_fec_mode_extended,json=advertisedFecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended" json:"advertised_fec_mode_extended,omitempty"` + AdvertisedHalfDuplexSpeed []uint32 `protobuf:"varint,9,rep,packed,name=advertised_half_duplex_speed,json=advertisedHalfDuplexSpeed,proto3" json:"advertised_half_duplex_speed,omitempty"` + AdvertisedAutoNegMode *bool `protobuf:"varint,10,opt,name=advertised_auto_neg_mode,json=advertisedAutoNegMode,proto3,oneof" json:"advertised_auto_neg_mode,omitempty"` + AdvertisedFlowControlMode *PortFlowControlMode `protobuf:"varint,11,opt,name=advertised_flow_control_mode,json=advertisedFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"advertised_flow_control_mode,omitempty"` + AdvertisedAsymmetricPauseMode *bool `protobuf:"varint,12,opt,name=advertised_asymmetric_pause_mode,json=advertisedAsymmetricPauseMode,proto3,oneof" json:"advertised_asymmetric_pause_mode,omitempty"` + AdvertisedMediaType *PortMediaType `protobuf:"varint,13,opt,name=advertised_media_type,json=advertisedMediaType,proto3,enum=lemming.dataplane.sai.PortMediaType,oneof" json:"advertised_media_type,omitempty"` + AdvertisedOuiCode *uint32 `protobuf:"varint,14,opt,name=advertised_oui_code,json=advertisedOuiCode,proto3,oneof" json:"advertised_oui_code,omitempty"` + PortVlanId *uint32 `protobuf:"varint,15,opt,name=port_vlan_id,json=portVlanId,proto3,oneof" json:"port_vlan_id,omitempty"` + DefaultVlanPriority *uint32 `protobuf:"varint,16,opt,name=default_vlan_priority,json=defaultVlanPriority,proto3,oneof" json:"default_vlan_priority,omitempty"` + DropUntagged *bool `protobuf:"varint,17,opt,name=drop_untagged,json=dropUntagged,proto3,oneof" json:"drop_untagged,omitempty"` + DropTagged *bool `protobuf:"varint,18,opt,name=drop_tagged,json=dropTagged,proto3,oneof" json:"drop_tagged,omitempty"` + InternalLoopbackMode *PortInternalLoopbackMode `protobuf:"varint,19,opt,name=internal_loopback_mode,json=internalLoopbackMode,proto3,enum=lemming.dataplane.sai.PortInternalLoopbackMode,oneof" json:"internal_loopback_mode,omitempty"` + UseExtendedFec *bool `protobuf:"varint,20,opt,name=use_extended_fec,json=useExtendedFec,proto3,oneof" json:"use_extended_fec,omitempty"` + FecMode *PortFecMode `protobuf:"varint,21,opt,name=fec_mode,json=fecMode,proto3,enum=lemming.dataplane.sai.PortFecMode,oneof" json:"fec_mode,omitempty"` + FecModeExtended *PortFecModeExtended `protobuf:"varint,22,opt,name=fec_mode_extended,json=fecModeExtended,proto3,enum=lemming.dataplane.sai.PortFecModeExtended,oneof" json:"fec_mode_extended,omitempty"` + UpdateDscp *bool `protobuf:"varint,23,opt,name=update_dscp,json=updateDscp,proto3,oneof" json:"update_dscp,omitempty"` + Mtu *uint32 `protobuf:"varint,24,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` + FloodStormControlPolicerId *uint64 `protobuf:"varint,25,opt,name=flood_storm_control_policer_id,json=floodStormControlPolicerId,proto3,oneof" json:"flood_storm_control_policer_id,omitempty"` + BroadcastStormControlPolicerId *uint64 `protobuf:"varint,26,opt,name=broadcast_storm_control_policer_id,json=broadcastStormControlPolicerId,proto3,oneof" json:"broadcast_storm_control_policer_id,omitempty"` + MulticastStormControlPolicerId *uint64 `protobuf:"varint,27,opt,name=multicast_storm_control_policer_id,json=multicastStormControlPolicerId,proto3,oneof" json:"multicast_storm_control_policer_id,omitempty"` + GlobalFlowControlMode *PortFlowControlMode `protobuf:"varint,28,opt,name=global_flow_control_mode,json=globalFlowControlMode,proto3,enum=lemming.dataplane.sai.PortFlowControlMode,oneof" json:"global_flow_control_mode,omitempty"` + IngressAcl *uint64 `protobuf:"varint,29,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` + EgressAcl *uint64 `protobuf:"varint,30,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` + IngressMacsecAcl *uint64 `protobuf:"varint,31,opt,name=ingress_macsec_acl,json=ingressMacsecAcl,proto3,oneof" json:"ingress_macsec_acl,omitempty"` + EgressMacsecAcl *uint64 `protobuf:"varint,32,opt,name=egress_macsec_acl,json=egressMacsecAcl,proto3,oneof" json:"egress_macsec_acl,omitempty"` + IngressMirrorSession []uint64 `protobuf:"varint,33,rep,packed,name=ingress_mirror_session,json=ingressMirrorSession,proto3" json:"ingress_mirror_session,omitempty"` + EgressMirrorSession []uint64 `protobuf:"varint,34,rep,packed,name=egress_mirror_session,json=egressMirrorSession,proto3" json:"egress_mirror_session,omitempty"` + IngressSamplepacketEnable *uint64 `protobuf:"varint,35,opt,name=ingress_samplepacket_enable,json=ingressSamplepacketEnable,proto3,oneof" json:"ingress_samplepacket_enable,omitempty"` + EgressSamplepacketEnable *uint64 `protobuf:"varint,36,opt,name=egress_samplepacket_enable,json=egressSamplepacketEnable,proto3,oneof" json:"egress_samplepacket_enable,omitempty"` + IngressSampleMirrorSession []uint64 `protobuf:"varint,37,rep,packed,name=ingress_sample_mirror_session,json=ingressSampleMirrorSession,proto3" json:"ingress_sample_mirror_session,omitempty"` + EgressSampleMirrorSession []uint64 `protobuf:"varint,38,rep,packed,name=egress_sample_mirror_session,json=egressSampleMirrorSession,proto3" json:"egress_sample_mirror_session,omitempty"` + PolicerId *uint64 `protobuf:"varint,39,opt,name=policer_id,json=policerId,proto3,oneof" json:"policer_id,omitempty"` + QosDefaultTc *uint32 `protobuf:"varint,40,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` + QosDot1PToTcMap *uint64 `protobuf:"varint,41,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` + QosDot1PToColorMap *uint64 `protobuf:"varint,42,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` + QosDscpToTcMap *uint64 `protobuf:"varint,43,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` + QosDscpToColorMap *uint64 `protobuf:"varint,44,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` + QosTcToQueueMap *uint64 `protobuf:"varint,45,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` + QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,46,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` + QosTcAndColorToDscpMap *uint64 `protobuf:"varint,47,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` + QosTcToPriorityGroupMap *uint64 `protobuf:"varint,48,opt,name=qos_tc_to_priority_group_map,json=qosTcToPriorityGroupMap,proto3,oneof" json:"qos_tc_to_priority_group_map,omitempty"` + QosPfcPriorityToPriorityGroupMap *uint64 `protobuf:"varint,49,opt,name=qos_pfc_priority_to_priority_group_map,json=qosPfcPriorityToPriorityGroupMap,proto3,oneof" json:"qos_pfc_priority_to_priority_group_map,omitempty"` + QosPfcPriorityToQueueMap *uint64 `protobuf:"varint,50,opt,name=qos_pfc_priority_to_queue_map,json=qosPfcPriorityToQueueMap,proto3,oneof" json:"qos_pfc_priority_to_queue_map,omitempty"` + QosSchedulerProfileId *uint64 `protobuf:"varint,51,opt,name=qos_scheduler_profile_id,json=qosSchedulerProfileId,proto3,oneof" json:"qos_scheduler_profile_id,omitempty"` + QosIngressBufferProfileList []uint64 `protobuf:"varint,52,rep,packed,name=qos_ingress_buffer_profile_list,json=qosIngressBufferProfileList,proto3" json:"qos_ingress_buffer_profile_list,omitempty"` + QosEgressBufferProfileList []uint64 `protobuf:"varint,53,rep,packed,name=qos_egress_buffer_profile_list,json=qosEgressBufferProfileList,proto3" json:"qos_egress_buffer_profile_list,omitempty"` + PriorityFlowControlMode *PortPriorityFlowControlMode `protobuf:"varint,54,opt,name=priority_flow_control_mode,json=priorityFlowControlMode,proto3,enum=lemming.dataplane.sai.PortPriorityFlowControlMode,oneof" json:"priority_flow_control_mode,omitempty"` + PriorityFlowControl *uint32 `protobuf:"varint,55,opt,name=priority_flow_control,json=priorityFlowControl,proto3,oneof" json:"priority_flow_control,omitempty"` + PriorityFlowControlRx *uint32 `protobuf:"varint,56,opt,name=priority_flow_control_rx,json=priorityFlowControlRx,proto3,oneof" json:"priority_flow_control_rx,omitempty"` + PriorityFlowControlTx *uint32 `protobuf:"varint,57,opt,name=priority_flow_control_tx,json=priorityFlowControlTx,proto3,oneof" json:"priority_flow_control_tx,omitempty"` + MetaData *uint32 `protobuf:"varint,58,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` + EgressBlockPortList []uint64 `protobuf:"varint,59,rep,packed,name=egress_block_port_list,json=egressBlockPortList,proto3" json:"egress_block_port_list,omitempty"` + HwProfileId *uint64 `protobuf:"varint,60,opt,name=hw_profile_id,json=hwProfileId,proto3,oneof" json:"hw_profile_id,omitempty"` + EeeEnable *bool `protobuf:"varint,61,opt,name=eee_enable,json=eeeEnable,proto3,oneof" json:"eee_enable,omitempty"` + EeeIdleTime *uint32 `protobuf:"varint,62,opt,name=eee_idle_time,json=eeeIdleTime,proto3,oneof" json:"eee_idle_time,omitempty"` + EeeWakeTime *uint32 `protobuf:"varint,63,opt,name=eee_wake_time,json=eeeWakeTime,proto3,oneof" json:"eee_wake_time,omitempty"` + IsolationGroup *uint64 `protobuf:"varint,64,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` + PktTxEnable *bool `protobuf:"varint,65,opt,name=pkt_tx_enable,json=pktTxEnable,proto3,oneof" json:"pkt_tx_enable,omitempty"` + TamObject []uint64 `protobuf:"varint,66,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + SerdesPreemphasis []uint32 `protobuf:"varint,67,rep,packed,name=serdes_preemphasis,json=serdesPreemphasis,proto3" json:"serdes_preemphasis,omitempty"` + SerdesIdriver []uint32 `protobuf:"varint,68,rep,packed,name=serdes_idriver,json=serdesIdriver,proto3" json:"serdes_idriver,omitempty"` + SerdesIpredriver []uint32 `protobuf:"varint,69,rep,packed,name=serdes_ipredriver,json=serdesIpredriver,proto3" json:"serdes_ipredriver,omitempty"` + LinkTrainingEnable *bool `protobuf:"varint,70,opt,name=link_training_enable,json=linkTrainingEnable,proto3,oneof" json:"link_training_enable,omitempty"` + PtpMode *PortPtpMode `protobuf:"varint,71,opt,name=ptp_mode,json=ptpMode,proto3,enum=lemming.dataplane.sai.PortPtpMode,oneof" json:"ptp_mode,omitempty"` + InterfaceType *PortInterfaceType `protobuf:"varint,72,opt,name=interface_type,json=interfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType,oneof" json:"interface_type,omitempty"` + AdvertisedInterfaceType []PortInterfaceType `protobuf:"varint,73,rep,packed,name=advertised_interface_type,json=advertisedInterfaceType,proto3,enum=lemming.dataplane.sai.PortInterfaceType" json:"advertised_interface_type,omitempty"` + PrbsPolynomial *uint32 `protobuf:"varint,74,opt,name=prbs_polynomial,json=prbsPolynomial,proto3,oneof" json:"prbs_polynomial,omitempty"` + PrbsConfig *PortPrbsConfig `protobuf:"varint,75,opt,name=prbs_config,json=prbsConfig,proto3,enum=lemming.dataplane.sai.PortPrbsConfig,oneof" json:"prbs_config,omitempty"` + DisableDecrementTtl *bool `protobuf:"varint,76,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` + QosMplsExpToTcMap *uint64 `protobuf:"varint,77,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` + QosMplsExpToColorMap *uint64 `protobuf:"varint,78,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` + QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,79,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + Tpid *uint32 `protobuf:"varint,80,opt,name=tpid,proto3,oneof" json:"tpid,omitempty"` + AutoNegFecModeOverride *bool `protobuf:"varint,81,opt,name=auto_neg_fec_mode_override,json=autoNegFecModeOverride,proto3,oneof" json:"auto_neg_fec_mode_override,omitempty"` + LoopbackMode *PortLoopbackMode `protobuf:"varint,82,opt,name=loopback_mode,json=loopbackMode,proto3,enum=lemming.dataplane.sai.PortLoopbackMode,oneof" json:"loopback_mode,omitempty"` + MdixModeConfig *PortMdixModeConfig `protobuf:"varint,83,opt,name=mdix_mode_config,json=mdixModeConfig,proto3,enum=lemming.dataplane.sai.PortMdixModeConfig,oneof" json:"mdix_mode_config,omitempty"` + AutoNegConfigMode *PortAutoNegConfigMode `protobuf:"varint,84,opt,name=auto_neg_config_mode,json=autoNegConfigMode,proto3,enum=lemming.dataplane.sai.PortAutoNegConfigMode,oneof" json:"auto_neg_config_mode,omitempty"` + X1000XSgmiiSlaveAutodetect *bool `protobuf:"varint,85,opt,name=_1000x_sgmii_slave_autodetect,json=1000xSgmiiSlaveAutodetect,proto3,oneof" json:"_1000x_sgmii_slave_autodetect,omitempty"` + ModuleType *PortModuleType `protobuf:"varint,86,opt,name=module_type,json=moduleType,proto3,enum=lemming.dataplane.sai.PortModuleType,oneof" json:"module_type,omitempty"` + DualMedia *PortDualMedia `protobuf:"varint,87,opt,name=dual_media,json=dualMedia,proto3,enum=lemming.dataplane.sai.PortDualMedia,oneof" json:"dual_media,omitempty"` + Ipg *uint32 `protobuf:"varint,88,opt,name=ipg,proto3,oneof" json:"ipg,omitempty"` + GlobalFlowControlForward *bool `protobuf:"varint,89,opt,name=global_flow_control_forward,json=globalFlowControlForward,proto3,oneof" json:"global_flow_control_forward,omitempty"` + PriorityFlowControlForward *bool `protobuf:"varint,90,opt,name=priority_flow_control_forward,json=priorityFlowControlForward,proto3,oneof" json:"priority_flow_control_forward,omitempty"` + QosDscpToForwardingClassMap *uint64 `protobuf:"varint,91,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` + QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,92,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` + PfcTcDldInterval []*UintMap `protobuf:"bytes,93,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` + PfcTcDlrInterval []*UintMap `protobuf:"bytes,94,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` + FabricIsolate *bool `protobuf:"varint,95,opt,name=fabric_isolate,json=fabricIsolate,proto3,oneof" json:"fabric_isolate,omitempty"` + ArsEnable *bool `protobuf:"varint,96,opt,name=ars_enable,json=arsEnable,proto3,oneof" json:"ars_enable,omitempty"` + ArsPortLoadScalingFactor *uint32 `protobuf:"varint,97,opt,name=ars_port_load_scaling_factor,json=arsPortLoadScalingFactor,proto3,oneof" json:"ars_port_load_scaling_factor,omitempty"` + ArsPortLoadPastEnable *bool `protobuf:"varint,98,opt,name=ars_port_load_past_enable,json=arsPortLoadPastEnable,proto3,oneof" json:"ars_port_load_past_enable,omitempty"` + ArsPortLoadFutureEnable *bool `protobuf:"varint,99,opt,name=ars_port_load_future_enable,json=arsPortLoadFutureEnable,proto3,oneof" json:"ars_port_load_future_enable,omitempty"` + ArsAlternatePath *bool `protobuf:"varint,100,opt,name=ars_alternate_path,json=arsAlternatePath,proto3,oneof" json:"ars_alternate_path,omitempty"` + EcmpHashAlgorithm *HashAlgorithm `protobuf:"varint,101,opt,name=ecmp_hash_algorithm,json=ecmpHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_hash_algorithm,omitempty"` + EcmpHashSeed *uint32 `protobuf:"varint,102,opt,name=ecmp_hash_seed,json=ecmpHashSeed,proto3,oneof" json:"ecmp_hash_seed,omitempty"` + EcmpHashOffset *uint32 `protobuf:"varint,103,opt,name=ecmp_hash_offset,json=ecmpHashOffset,proto3,oneof" json:"ecmp_hash_offset,omitempty"` + HostTxSignalEnable *bool `protobuf:"varint,104,opt,name=host_tx_signal_enable,json=hostTxSignalEnable,proto3,oneof" json:"host_tx_signal_enable,omitempty"` + PathTracingIntf *uint32 `protobuf:"varint,105,opt,name=path_tracing_intf,json=pathTracingIntf,proto3,oneof" json:"path_tracing_intf,omitempty"` + PathTracingTimestampType *PortPathTracingTimestampType `protobuf:"varint,106,opt,name=path_tracing_timestamp_type,json=pathTracingTimestampType,proto3,enum=lemming.dataplane.sai.PortPathTracingTimestampType,oneof" json:"path_tracing_timestamp_type,omitempty"` + DatapathEnable *PortDatapathEnable `protobuf:"varint,107,opt,name=datapath_enable,json=datapathEnable,proto3,enum=lemming.dataplane.sai.PortDatapathEnable,oneof" json:"datapath_enable,omitempty"` + 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2461,6 +2689,111 @@ func (x *SetPortAttributeRequest) GetFabricIsolate() bool { return false } +func (x *SetPortAttributeRequest) GetArsEnable() bool { + if x != nil && x.ArsEnable != nil { + return *x.ArsEnable + } + return false +} + +func (x *SetPortAttributeRequest) GetArsPortLoadScalingFactor() uint32 { + if x != nil && x.ArsPortLoadScalingFactor != nil { + return *x.ArsPortLoadScalingFactor + } + return 0 +} + +func (x *SetPortAttributeRequest) GetArsPortLoadPastEnable() bool { + if x != nil && x.ArsPortLoadPastEnable != nil { + return *x.ArsPortLoadPastEnable + } + return false +} + +func (x *SetPortAttributeRequest) GetArsPortLoadFutureEnable() bool { + if x != nil && x.ArsPortLoadFutureEnable != nil { + return *x.ArsPortLoadFutureEnable + } + return false +} + +func (x *SetPortAttributeRequest) GetArsAlternatePath() bool { + if x != nil && x.ArsAlternatePath != nil { + return *x.ArsAlternatePath + } + return false +} + +func (x *SetPortAttributeRequest) GetEcmpHashAlgorithm() HashAlgorithm { + if x != nil && x.EcmpHashAlgorithm != nil { + return *x.EcmpHashAlgorithm + } + return HashAlgorithm_HASH_ALGORITHM_UNSPECIFIED +} + +func (x *SetPortAttributeRequest) GetEcmpHashSeed() uint32 { + if x != nil && x.EcmpHashSeed != nil { + return *x.EcmpHashSeed + } + return 0 +} + +func (x *SetPortAttributeRequest) GetEcmpHashOffset() uint32 { + if x != nil && x.EcmpHashOffset != nil { + return *x.EcmpHashOffset + } + return 0 +} + +func (x *SetPortAttributeRequest) GetHostTxSignalEnable() bool { + if x != nil && x.HostTxSignalEnable != nil { + return *x.HostTxSignalEnable + } + return false +} + +func (x *SetPortAttributeRequest) GetPathTracingIntf() uint32 { + if x != nil && x.PathTracingIntf != nil { + return *x.PathTracingIntf + } + return 0 +} + +func (x *SetPortAttributeRequest) GetPathTracingTimestampType() PortPathTracingTimestampType { + if x != nil && x.PathTracingTimestampType != nil { + return *x.PathTracingTimestampType + } + return PortPathTracingTimestampType_PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED +} + +func (x *SetPortAttributeRequest) GetDatapathEnable() PortDatapathEnable { + if x != nil && x.DatapathEnable != nil { + return *x.DatapathEnable + } + return PortDatapathEnable_PORT_DATAPATH_ENABLE_UNSPECIFIED +} + +func (x *SetPortAttributeRequest) GetCableType() PortCableType { + if x != nil && x.CableType != nil { + return *x.CableType + } + return PortCableType_PORT_CABLE_TYPE_UNSPECIFIED +} + +func (x *SetPortAttributeRequest) GetArsPortLoadPastWeight() uint32 { + if x != nil && x.ArsPortLoadPastWeight != nil { + return *x.ArsPortLoadPastWeight + } + return 0 +} + +func (x *SetPortAttributeRequest) GetArsPortLoadFutureWeight() uint32 { + if x != nil && x.ArsPortLoadFutureWeight != nil { + return *x.ArsPortLoadFutureWeight + } + return 0 +} + type SetPortAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -3554,22 +3887,30 @@ func (x *GetPortConnectorAttributeResponse) GetAttr() *PortConnectorAttribute { } type CreatePortSerdesRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - PortId *uint64 `protobuf:"varint,2,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` - Preemphasis []int32 `protobuf:"varint,3,rep,packed,name=preemphasis,proto3" json:"preemphasis,omitempty"` - Idriver []int32 `protobuf:"varint,4,rep,packed,name=idriver,proto3" json:"idriver,omitempty"` - Ipredriver []int32 `protobuf:"varint,5,rep,packed,name=ipredriver,proto3" json:"ipredriver,omitempty"` - TxFirPre1 []int32 `protobuf:"varint,6,rep,packed,name=tx_fir_pre1,json=txFirPre1,proto3" json:"tx_fir_pre1,omitempty"` - TxFirPre2 []int32 `protobuf:"varint,7,rep,packed,name=tx_fir_pre2,json=txFirPre2,proto3" json:"tx_fir_pre2,omitempty"` - TxFirPre3 []int32 `protobuf:"varint,8,rep,packed,name=tx_fir_pre3,json=txFirPre3,proto3" json:"tx_fir_pre3,omitempty"` - TxFirMain []int32 `protobuf:"varint,9,rep,packed,name=tx_fir_main,json=txFirMain,proto3" json:"tx_fir_main,omitempty"` - TxFirPost1 []int32 `protobuf:"varint,10,rep,packed,name=tx_fir_post1,json=txFirPost1,proto3" json:"tx_fir_post1,omitempty"` - TxFirPost2 []int32 `protobuf:"varint,11,rep,packed,name=tx_fir_post2,json=txFirPost2,proto3" json:"tx_fir_post2,omitempty"` - TxFirPost3 []int32 `protobuf:"varint,12,rep,packed,name=tx_fir_post3,json=txFirPost3,proto3" json:"tx_fir_post3,omitempty"` - TxFirAttn []int32 `protobuf:"varint,13,rep,packed,name=tx_fir_attn,json=txFirAttn,proto3" json:"tx_fir_attn,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"` + PortId *uint64 `protobuf:"varint,2,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` + Preemphasis []int32 `protobuf:"varint,3,rep,packed,name=preemphasis,proto3" json:"preemphasis,omitempty"` + Idriver []int32 `protobuf:"varint,4,rep,packed,name=idriver,proto3" json:"idriver,omitempty"` + Ipredriver []int32 `protobuf:"varint,5,rep,packed,name=ipredriver,proto3" json:"ipredriver,omitempty"` + TxFirPre1 []int32 `protobuf:"varint,6,rep,packed,name=tx_fir_pre1,json=txFirPre1,proto3" json:"tx_fir_pre1,omitempty"` + TxFirPre2 []int32 `protobuf:"varint,7,rep,packed,name=tx_fir_pre2,json=txFirPre2,proto3" json:"tx_fir_pre2,omitempty"` + TxFirPre3 []int32 `protobuf:"varint,8,rep,packed,name=tx_fir_pre3,json=txFirPre3,proto3" json:"tx_fir_pre3,omitempty"` + TxFirMain []int32 `protobuf:"varint,9,rep,packed,name=tx_fir_main,json=txFirMain,proto3" json:"tx_fir_main,omitempty"` + TxFirPost1 []int32 `protobuf:"varint,10,rep,packed,name=tx_fir_post1,json=txFirPost1,proto3" json:"tx_fir_post1,omitempty"` + TxFirPost2 []int32 `protobuf:"varint,11,rep,packed,name=tx_fir_post2,json=txFirPost2,proto3" json:"tx_fir_post2,omitempty"` + TxFirPost3 []int32 `protobuf:"varint,12,rep,packed,name=tx_fir_post3,json=txFirPost3,proto3" json:"tx_fir_post3,omitempty"` + TxFirAttn []int32 `protobuf:"varint,13,rep,packed,name=tx_fir_attn,json=txFirAttn,proto3" json:"tx_fir_attn,omitempty"` + TxPam4Ratio []int32 `protobuf:"varint,14,rep,packed,name=tx_pam4_ratio,json=txPam4Ratio,proto3" json:"tx_pam4_ratio,omitempty"` + TxOutCommonMode []int32 `protobuf:"varint,15,rep,packed,name=tx_out_common_mode,json=txOutCommonMode,proto3" json:"tx_out_common_mode,omitempty"` + TxPmosCommonMode []int32 `protobuf:"varint,16,rep,packed,name=tx_pmos_common_mode,json=txPmosCommonMode,proto3" json:"tx_pmos_common_mode,omitempty"` + TxNmosCommonMode []int32 `protobuf:"varint,17,rep,packed,name=tx_nmos_common_mode,json=txNmosCommonMode,proto3" json:"tx_nmos_common_mode,omitempty"` + TxPmosVltgReg []int32 `protobuf:"varint,18,rep,packed,name=tx_pmos_vltg_reg,json=txPmosVltgReg,proto3" json:"tx_pmos_vltg_reg,omitempty"` + TxNmosVltgReg []int32 `protobuf:"varint,19,rep,packed,name=tx_nmos_vltg_reg,json=txNmosVltgReg,proto3" json:"tx_nmos_vltg_reg,omitempty"` + TxPrecoding []int32 `protobuf:"varint,20,rep,packed,name=tx_precoding,json=txPrecoding,proto3" json:"tx_precoding,omitempty"` + RxPrecoding []int32 `protobuf:"varint,21,rep,packed,name=rx_precoding,json=rxPrecoding,proto3" json:"rx_precoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreatePortSerdesRequest) Reset() { @@ -3693,6 +4034,62 @@ func (x *CreatePortSerdesRequest) GetTxFirAttn() []int32 { return nil } +func (x *CreatePortSerdesRequest) GetTxPam4Ratio() []int32 { + if x != nil { + return x.TxPam4Ratio + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxOutCommonMode() []int32 { + if x != nil { + return x.TxOutCommonMode + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxPmosCommonMode() []int32 { + if x != nil { + return x.TxPmosCommonMode + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxNmosCommonMode() []int32 { + if x != nil { + return x.TxNmosCommonMode + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxPmosVltgReg() []int32 { + if x != nil { + return x.TxPmosVltgReg + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxNmosVltgReg() []int32 { + if x != nil { + return x.TxNmosVltgReg + } + return nil +} + +func (x *CreatePortSerdesRequest) GetTxPrecoding() []int32 { + if x != nil { + return x.TxPrecoding + } + return nil +} + +func (x *CreatePortSerdesRequest) GetRxPrecoding() []int32 { + if x != nil { + return x.RxPrecoding + } + return nil +} + type CreatePortSerdesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -4097,7 +4494,7 @@ var file_dataplane_proto_sai_port_proto_rawDesc = []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, 0xca, 0x43, 0x0a, 0x11, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, 0x4f, 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, @@ -4521,658 +4918,845 @@ var file_dataplane_proto_sai_port_proto_rawDesc = []byte{ 0x0a, 0x0e, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x4d, 0x52, 0x0d, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, - 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, 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, 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, 0x82, 0x42, 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, 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, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9c, 0x01, + 0x48, 0x4e, 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, 0x64, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x48, + 0x4f, 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, 0x65, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x50, 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, 0x66, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x51, 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, 0x67, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x52, 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, 0x68, 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, 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, + 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, 0x53, 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, 0x69, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xa3, 0x01, 0x48, 0x54, 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, 0x6a, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa4, 0x01, 0x48, 0x55, 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, 0x6b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x56, 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, 0x6c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xa8, 0x01, 0x48, 0x57, 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, 0x6d, 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, 0x58, 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, + 0x6e, 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, 0x59, 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, 0x6f, 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, 0x5a, 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, 0x70, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, 0x48, 0x5b, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, 0x62, + 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, + 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, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, + 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, @@ -5324,7 +5908,7 @@ var file_dataplane_proto_sai_port_proto_rawDesc = []byte{ 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, 0xa5, 0x04, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 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, @@ -5357,610 +5941,706 @@ var file_dataplane_proto_sai_port_proto_rawDesc = []byte{ 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, 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, 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, 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, + 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, 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, 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, 0xc1, 0x2c, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, + 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, 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, 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, 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, + 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, 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, 0xc4, 0x03, 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, + 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, 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, + 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, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x33, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x50, + 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, + 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, - 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, 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, + 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, 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, + 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, } var ( @@ -6035,13 +6715,17 @@ var file_dataplane_proto_sai_port_proto_goTypes = []any{ (PortModuleType)(0), // 54: lemming.dataplane.sai.PortModuleType (PortDualMedia)(0), // 55: lemming.dataplane.sai.PortDualMedia (*UintMap)(nil), // 56: lemming.dataplane.sai.UintMap - (*PortAttribute)(nil), // 57: lemming.dataplane.sai.PortAttribute - (PortStat)(0), // 58: lemming.dataplane.sai.PortStat - (*PortPoolAttribute)(nil), // 59: lemming.dataplane.sai.PortPoolAttribute - (PortPoolStat)(0), // 60: lemming.dataplane.sai.PortPoolStat - (PortConnectorFailoverMode)(0), // 61: lemming.dataplane.sai.PortConnectorFailoverMode - (*PortConnectorAttribute)(nil), // 62: lemming.dataplane.sai.PortConnectorAttribute - (*PortSerdesAttribute)(nil), // 63: lemming.dataplane.sai.PortSerdesAttribute + (HashAlgorithm)(0), // 57: lemming.dataplane.sai.HashAlgorithm + (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 } var file_dataplane_proto_sai_port_proto_depIdxs = []int32{ 42, // 0: lemming.dataplane.sai.CreatePortRequest.media_type:type_name -> lemming.dataplane.sai.PortMediaType @@ -6065,86 +6749,94 @@ var file_dataplane_proto_sai_port_proto_depIdxs = []int32{ 55, // 18: lemming.dataplane.sai.CreatePortRequest.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia 56, // 19: lemming.dataplane.sai.CreatePortRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap 56, // 20: lemming.dataplane.sai.CreatePortRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 42, // 21: lemming.dataplane.sai.SetPortAttributeRequest.media_type:type_name -> lemming.dataplane.sai.PortMediaType - 43, // 22: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 44, // 23: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 45, // 24: lemming.dataplane.sai.SetPortAttributeRequest.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 42, // 25: lemming.dataplane.sai.SetPortAttributeRequest.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 46, // 26: lemming.dataplane.sai.SetPortAttributeRequest.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode - 43, // 27: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 44, // 28: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 45, // 29: lemming.dataplane.sai.SetPortAttributeRequest.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 47, // 30: lemming.dataplane.sai.SetPortAttributeRequest.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode - 48, // 31: lemming.dataplane.sai.SetPortAttributeRequest.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode - 49, // 32: lemming.dataplane.sai.SetPortAttributeRequest.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 49, // 33: lemming.dataplane.sai.SetPortAttributeRequest.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 50, // 34: lemming.dataplane.sai.SetPortAttributeRequest.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig - 51, // 35: lemming.dataplane.sai.SetPortAttributeRequest.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode - 52, // 36: lemming.dataplane.sai.SetPortAttributeRequest.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig - 53, // 37: lemming.dataplane.sai.SetPortAttributeRequest.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode - 54, // 38: lemming.dataplane.sai.SetPortAttributeRequest.module_type:type_name -> lemming.dataplane.sai.PortModuleType - 55, // 39: lemming.dataplane.sai.SetPortAttributeRequest.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia - 56, // 40: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 56, // 41: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 0, // 42: lemming.dataplane.sai.GetPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortAttr - 57, // 43: lemming.dataplane.sai.GetPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortAttribute - 58, // 44: lemming.dataplane.sai.GetPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortStat - 1, // 45: lemming.dataplane.sai.GetPortPoolAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortPoolAttr - 59, // 46: lemming.dataplane.sai.GetPortPoolAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortPoolAttribute - 60, // 47: lemming.dataplane.sai.GetPortPoolStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortPoolStat - 61, // 48: lemming.dataplane.sai.CreatePortConnectorRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 61, // 49: lemming.dataplane.sai.SetPortConnectorAttributeRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 2, // 50: lemming.dataplane.sai.GetPortConnectorAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortConnectorAttr - 62, // 51: lemming.dataplane.sai.GetPortConnectorAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortConnectorAttribute - 3, // 52: lemming.dataplane.sai.GetPortSerdesAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortSerdesAttr - 63, // 53: lemming.dataplane.sai.GetPortSerdesAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortSerdesAttribute - 4, // 54: lemming.dataplane.sai.CreatePortsRequest.reqs:type_name -> lemming.dataplane.sai.CreatePortRequest - 5, // 55: lemming.dataplane.sai.CreatePortsResponse.resps:type_name -> lemming.dataplane.sai.CreatePortResponse - 6, // 56: lemming.dataplane.sai.RemovePortsRequest.reqs:type_name -> lemming.dataplane.sai.RemovePortRequest - 7, // 57: lemming.dataplane.sai.RemovePortsResponse.resps:type_name -> lemming.dataplane.sai.RemovePortResponse - 4, // 58: lemming.dataplane.sai.Port.CreatePort:input_type -> lemming.dataplane.sai.CreatePortRequest - 6, // 59: lemming.dataplane.sai.Port.RemovePort:input_type -> lemming.dataplane.sai.RemovePortRequest - 8, // 60: lemming.dataplane.sai.Port.SetPortAttribute:input_type -> lemming.dataplane.sai.SetPortAttributeRequest - 10, // 61: lemming.dataplane.sai.Port.GetPortAttribute:input_type -> lemming.dataplane.sai.GetPortAttributeRequest - 12, // 62: lemming.dataplane.sai.Port.GetPortStats:input_type -> lemming.dataplane.sai.GetPortStatsRequest - 14, // 63: lemming.dataplane.sai.Port.CreatePortPool:input_type -> lemming.dataplane.sai.CreatePortPoolRequest - 16, // 64: lemming.dataplane.sai.Port.RemovePortPool:input_type -> lemming.dataplane.sai.RemovePortPoolRequest - 18, // 65: lemming.dataplane.sai.Port.SetPortPoolAttribute:input_type -> lemming.dataplane.sai.SetPortPoolAttributeRequest - 20, // 66: lemming.dataplane.sai.Port.GetPortPoolAttribute:input_type -> lemming.dataplane.sai.GetPortPoolAttributeRequest - 22, // 67: lemming.dataplane.sai.Port.GetPortPoolStats:input_type -> lemming.dataplane.sai.GetPortPoolStatsRequest - 24, // 68: lemming.dataplane.sai.Port.CreatePortConnector:input_type -> lemming.dataplane.sai.CreatePortConnectorRequest - 26, // 69: lemming.dataplane.sai.Port.RemovePortConnector:input_type -> lemming.dataplane.sai.RemovePortConnectorRequest - 28, // 70: lemming.dataplane.sai.Port.SetPortConnectorAttribute:input_type -> lemming.dataplane.sai.SetPortConnectorAttributeRequest - 30, // 71: lemming.dataplane.sai.Port.GetPortConnectorAttribute:input_type -> lemming.dataplane.sai.GetPortConnectorAttributeRequest - 32, // 72: lemming.dataplane.sai.Port.CreatePortSerdes:input_type -> lemming.dataplane.sai.CreatePortSerdesRequest - 34, // 73: lemming.dataplane.sai.Port.RemovePortSerdes:input_type -> lemming.dataplane.sai.RemovePortSerdesRequest - 36, // 74: lemming.dataplane.sai.Port.GetPortSerdesAttribute:input_type -> lemming.dataplane.sai.GetPortSerdesAttributeRequest - 38, // 75: lemming.dataplane.sai.Port.CreatePorts:input_type -> lemming.dataplane.sai.CreatePortsRequest - 40, // 76: lemming.dataplane.sai.Port.RemovePorts:input_type -> lemming.dataplane.sai.RemovePortsRequest - 5, // 77: lemming.dataplane.sai.Port.CreatePort:output_type -> lemming.dataplane.sai.CreatePortResponse - 7, // 78: lemming.dataplane.sai.Port.RemovePort:output_type -> lemming.dataplane.sai.RemovePortResponse - 9, // 79: lemming.dataplane.sai.Port.SetPortAttribute:output_type -> lemming.dataplane.sai.SetPortAttributeResponse - 11, // 80: lemming.dataplane.sai.Port.GetPortAttribute:output_type -> lemming.dataplane.sai.GetPortAttributeResponse - 13, // 81: lemming.dataplane.sai.Port.GetPortStats:output_type -> lemming.dataplane.sai.GetPortStatsResponse - 15, // 82: lemming.dataplane.sai.Port.CreatePortPool:output_type -> lemming.dataplane.sai.CreatePortPoolResponse - 17, // 83: lemming.dataplane.sai.Port.RemovePortPool:output_type -> lemming.dataplane.sai.RemovePortPoolResponse - 19, // 84: lemming.dataplane.sai.Port.SetPortPoolAttribute:output_type -> lemming.dataplane.sai.SetPortPoolAttributeResponse - 21, // 85: lemming.dataplane.sai.Port.GetPortPoolAttribute:output_type -> lemming.dataplane.sai.GetPortPoolAttributeResponse - 23, // 86: lemming.dataplane.sai.Port.GetPortPoolStats:output_type -> lemming.dataplane.sai.GetPortPoolStatsResponse - 25, // 87: lemming.dataplane.sai.Port.CreatePortConnector:output_type -> lemming.dataplane.sai.CreatePortConnectorResponse - 27, // 88: lemming.dataplane.sai.Port.RemovePortConnector:output_type -> lemming.dataplane.sai.RemovePortConnectorResponse - 29, // 89: lemming.dataplane.sai.Port.SetPortConnectorAttribute:output_type -> lemming.dataplane.sai.SetPortConnectorAttributeResponse - 31, // 90: lemming.dataplane.sai.Port.GetPortConnectorAttribute:output_type -> lemming.dataplane.sai.GetPortConnectorAttributeResponse - 33, // 91: lemming.dataplane.sai.Port.CreatePortSerdes:output_type -> lemming.dataplane.sai.CreatePortSerdesResponse - 35, // 92: lemming.dataplane.sai.Port.RemovePortSerdes:output_type -> lemming.dataplane.sai.RemovePortSerdesResponse - 37, // 93: lemming.dataplane.sai.Port.GetPortSerdesAttribute:output_type -> lemming.dataplane.sai.GetPortSerdesAttributeResponse - 39, // 94: lemming.dataplane.sai.Port.CreatePorts:output_type -> lemming.dataplane.sai.CreatePortsResponse - 41, // 95: lemming.dataplane.sai.Port.RemovePorts:output_type -> lemming.dataplane.sai.RemovePortsResponse - 77, // [77:96] is the sub-list for method output_type - 58, // [58:77] is the sub-list for method input_type - 58, // [58:58] is the sub-list for extension type_name - 58, // [58:58] is the sub-list for extension extendee - 0, // [0:58] is the sub-list for field type_name + 57, // 21: lemming.dataplane.sai.CreatePortRequest.ecmp_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 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 } func init() { file_dataplane_proto_sai_port_proto_init() } diff --git a/dataplane/proto/sai/port.proto b/dataplane/proto/sai/port.proto index 6aebff96..7539dc4d 100644 --- a/dataplane/proto/sai/port.proto +++ b/dataplane/proto/sai/port.proto @@ -7,614 +7,654 @@ 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_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; } 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_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]; + 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]; } 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]; -} - -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]; +} + +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]; + 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 bc178e8d..d01ffaae 100644 --- a/dataplane/proto/sai/qos_map.proto +++ b/dataplane/proto/sai/qos_map.proto @@ -7,50 +7,52 @@ 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.proto b/dataplane/proto/sai/queue.proto index ac3e61c5..80bb46df 100644 --- a/dataplane/proto/sai/queue.proto +++ b/dataplane/proto/sai/queue.proto @@ -7,87 +7,89 @@ 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; } 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]; } 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]; } -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.pb.go b/dataplane/proto/sai/route.pb.go index 86a27194..ca167ea8 100644 --- a/dataplane/proto/sai/route.pb.go +++ b/dataplane/proto/sai/route.pb.go @@ -34,6 +34,7 @@ const ( RouteEntryAttr_ROUTE_ENTRY_ATTR_META_DATA RouteEntryAttr = 4 RouteEntryAttr_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY RouteEntryAttr = 5 RouteEntryAttr_ROUTE_ENTRY_ATTR_COUNTER_ID RouteEntryAttr = 6 + RouteEntryAttr_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID RouteEntryAttr = 7 ) // Enum value maps for RouteEntryAttr. @@ -46,6 +47,7 @@ var ( 4: "ROUTE_ENTRY_ATTR_META_DATA", 5: "ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY", 6: "ROUTE_ENTRY_ATTR_COUNTER_ID", + 7: "ROUTE_ENTRY_ATTR_PREFIX_AGG_ID", } RouteEntryAttr_value = map[string]int32{ "ROUTE_ENTRY_ATTR_UNSPECIFIED": 0, @@ -55,6 +57,7 @@ var ( "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, } ) @@ -93,6 +96,7 @@ type CreateRouteEntryRequest struct { NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` MetaData *uint32 `protobuf:"varint,5,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` CounterId *uint64 `protobuf:"varint,6,opt,name=counter_id,json=counterId,proto3,oneof" json:"counter_id,omitempty"` + PrefixAggId *uint32 `protobuf:"varint,7,opt,name=prefix_agg_id,json=prefixAggId,proto3,oneof" json:"prefix_agg_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -169,6 +173,13 @@ func (x *CreateRouteEntryRequest) GetCounterId() uint64 { return 0 } +func (x *CreateRouteEntryRequest) GetPrefixAggId() uint32 { + if x != nil && x.PrefixAggId != nil { + return *x.PrefixAggId + } + return 0 +} + type CreateRouteEntryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -293,6 +304,7 @@ type SetRouteEntryAttributeRequest struct { NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` MetaData *uint32 `protobuf:"varint,5,opt,name=meta_data,json=metaData,proto3,oneof" json:"meta_data,omitempty"` CounterId *uint64 `protobuf:"varint,6,opt,name=counter_id,json=counterId,proto3,oneof" json:"counter_id,omitempty"` + PrefixAggId *uint32 `protobuf:"varint,7,opt,name=prefix_agg_id,json=prefixAggId,proto3,oneof" json:"prefix_agg_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -369,6 +381,13 @@ func (x *SetRouteEntryAttributeRequest) GetCounterId() uint64 { return 0 } +func (x *SetRouteEntryAttributeRequest) GetPrefixAggId() uint32 { + if x != nil && x.PrefixAggId != nil { + return *x.PrefixAggId + } + return 0 +} + type SetRouteEntryAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -685,7 +704,7 @@ var file_dataplane_proto_sai_route_proto_rawDesc = []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, 0xb3, 0x03, 0x0a, 0x17, 0x43, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf6, 0x03, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, @@ -707,160 +726,170 @@ var file_dataplane_proto_sai_route_proto_rawDesc = []byte{ 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, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x26, - 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, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x17, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x03, 0x0a, - 0x1d, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 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, 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, 0x03, - 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, 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, 0x05, 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, 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, 0x04, 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, 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, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, - 0x65, 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, + 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, 0x05, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x41, 0x67, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, + 0x26, 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, 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, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x52, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xf4, 0x03, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, - 0x74, 0x65, 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, 0x52, 0x6f, 0x75, - 0x74, 0x65, 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, 0x52, 0x6f, - 0x75, 0x74, 0x65, 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, - 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 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, 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, 0x03, 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, 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, 0x05, 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, 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, 0x04, 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, 0x05, 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, 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, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 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, + 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, + 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, + 0x75, 0x74, 0x65, 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, + 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, - 0x81, 0x02, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x55, 0x54, 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, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x55, 0x54, 0x45, 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, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x1e, 0x0a, - 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x04, 0x12, 0x23, 0x0a, - 0x1f, 0x52, 0x4f, 0x55, 0x54, 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, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x49, - 0x44, 0x10, 0x06, 0x32, 0x83, 0x06, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x75, 0x0a, - 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, - 0x52, 0x6f, 0x75, 0x74, 0x65, 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, - 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, - 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, - 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 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, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, + 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xa5, 0x02, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x55, 0x54, + 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, 0x22, 0x0a, 0x1e, 0x52, 0x4f, + 0x55, 0x54, 0x45, 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, 0x01, 0x12, 0x21, + 0x0a, 0x1d, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, + 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x49, + 0x44, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, 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, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x4f, 0x55, 0x54, + 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x55, + 0x54, 0x45, 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, 0x10, 0x07, 0x32, 0x83, 0x06, + 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 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, - 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, + 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, + 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, 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, + 0x75, 0x74, 0x65, 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, + 0x52, 0x6f, 0x75, 0x74, 0x65, 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, + 0x52, 0x6f, 0x75, 0x74, 0x65, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, + 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, 0x52, 0x6f, 0x75, + 0x74, 0x65, 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 ( diff --git a/dataplane/proto/sai/route.proto b/dataplane/proto/sai/route.proto index 505b4b84..48168016 100644 --- a/dataplane/proto/sai/route.proto +++ b/dataplane/proto/sai/route.proto @@ -7,81 +7,83 @@ 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_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]; + 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]; + 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 4eb92fdb..d590e7c8 100644 --- a/dataplane/proto/sai/router_interface.pb.go +++ b/dataplane/proto/sai/router_interface.pb.go @@ -49,6 +49,7 @@ 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 ) // Enum value maps for RouterInterfaceAttr. @@ -76,6 +77,7 @@ 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", } RouterInterfaceAttr_value = map[string]int32{ "ROUTER_INTERFACE_ATTR_UNSPECIFIED": 0, @@ -100,6 +102,7 @@ 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, } ) @@ -154,6 +157,7 @@ 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -342,6 +346,13 @@ func (x *CreateRouterInterfaceRequest) GetAdminMplsState() bool { return false } +func (x *CreateRouterInterfaceRequest) GetLabel() []byte { + if x != nil { + return x.Label + } + return nil +} + type CreateRouterInterfaceResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -482,6 +493,7 @@ 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"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -614,6 +626,13 @@ func (x *SetRouterInterfaceAttributeRequest) GetAdminMplsState() bool { return false } +func (x *SetRouterInterfaceAttributeRequest) GetLabel() []byte { + if x != nil { + return x.Label + } + return nil +} + type SetRouterInterfaceAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1027,7 +1046,7 @@ var file_dataplane_proto_sai_router_interface_proto_rawDesc = []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, 0xbf, 0x0c, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x0c, 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, @@ -1103,90 +1122,95 @@ var file_dataplane_proto_sai_router_interface_proto_rawDesc = []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, 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, 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, 0xb5, 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, + 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, 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, + 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, @@ -1203,188 +1227,190 @@ var file_dataplane_proto_sai_router_interface_proto_rawDesc = []byte{ 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, 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, + 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, 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, + 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, 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, 0x9a, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, - 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x10, 0x15, 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, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 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, 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, + 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, + 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, + 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, + 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 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, 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, 0x22, 0x00, 0x12, 0x84, 0x01, - 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 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, 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, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 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, 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, 0x00, 0x12, 0x96, 0x01, 0x0a, 0x1b, 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, 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, - 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, 0x1a, - 0x3a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x96, 0x01, 0x0a, 0x1b, 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, 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, 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, 0x00, 0x12, 0x96, 0x01, - 0x0a, 0x1b, 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, 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, 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, 0x1a, 0x3a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 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, 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, 0x00, 0x12, 0x96, 0x01, 0x0a, 0x1b, 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, 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, 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, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 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, 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, 0x1a, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x61, 0x63, 0x65, 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, 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, + 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 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, 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, 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, + 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, 0x22, 0x00, 0x12, 0x87, + 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 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, 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, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 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, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 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, 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, 0x22, 0x00, 0x12, 0x87, 0x01, - 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 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, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 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, + 0x69, 0x2e, 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, 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, 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, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x73, 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, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 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 ( diff --git a/dataplane/proto/sai/router_interface.proto b/dataplane/proto/sai/router_interface.proto index 06577bae..22ca7331 100644 --- a/dataplane/proto/sai/router_interface.proto +++ b/dataplane/proto/sai/router_interface.proto @@ -7,135 +7,133 @@ 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_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; } 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]; + 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]; } 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]; -} - -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 bytes label = 15[(attr_enum_value) = 22]; +} + +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 54459f1e..ba896891 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.proto b/dataplane/proto/sai/samplepacket.proto index 72578820..bdbbb081 100644 --- a/dataplane/proto/sai/samplepacket.proto +++ b/dataplane/proto/sai/samplepacket.proto @@ -7,54 +7,54 @@ 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; } 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]; } 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]; } -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 8ea5fa3e..e1a14e3e 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 de2845fc..0d3df882 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 c33a7d61..48309224 100644 --- a/dataplane/proto/sai/srv6.pb.go +++ b/dataplane/proto/sai/srv6.pb.go @@ -31,6 +31,7 @@ const ( 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 ) // Enum value maps for Srv6SidlistAttr. @@ -40,12 +41,14 @@ var ( 1: "SRV6_SIDLIST_ATTR_TYPE", 2: "SRV6_SIDLIST_ATTR_TLV_LIST", 3: "SRV6_SIDLIST_ATTR_SEGMENT_LIST", + 4: "SRV6_SIDLIST_ATTR_NEXT_HOP_ID", } 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, } ) @@ -149,6 +152,7 @@ type CreateSrv6SidlistRequest struct { 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 } @@ -211,6 +215,13 @@ func (x *CreateSrv6SidlistRequest) GetSegmentList() [][]byte { return nil } +func (x *CreateSrv6SidlistRequest) GetNextHopId() uint64 { + if x != nil && x.NextHopId != nil { + return *x.NextHopId + } + return 0 +} + type CreateSrv6SidlistResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -340,6 +351,7 @@ type SetSrv6SidlistAttributeRequest struct { 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 } @@ -395,6 +407,13 @@ func (x *SetSrv6SidlistAttributeRequest) GetSegmentList() [][]byte { return nil } +func (x *SetSrv6SidlistAttributeRequest) GetNextHopId() uint64 { + if x != nil && x.NextHopId != nil { + return *x.NextHopId + } + return 0 +} + type SetSrv6SidlistAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -703,6 +722,102 @@ func (x *RemoveSrv6SidlistsResponse) GetResps() []*RemoveSrv6SidlistResponse { return nil } +type GetSrv6SidlistStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + CounterIds []Srv6SidlistStat `protobuf:"varint,2,rep,packed,name=counter_ids,json=counterIds,proto3,enum=lemming.dataplane.sai.Srv6SidlistStat" json:"counter_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetSrv6SidlistStatsRequest) Reset() { + *x = GetSrv6SidlistStatsRequest{} + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSrv6SidlistStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSrv6SidlistStatsRequest) ProtoMessage() {} + +func (x *GetSrv6SidlistStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[12] + 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 GetSrv6SidlistStatsRequest.ProtoReflect.Descriptor instead. +func (*GetSrv6SidlistStatsRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{12} +} + +func (x *GetSrv6SidlistStatsRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *GetSrv6SidlistStatsRequest) GetCounterIds() []Srv6SidlistStat { + if x != nil { + return x.CounterIds + } + return nil +} + +type GetSrv6SidlistStatsResponse 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 *GetSrv6SidlistStatsResponse) Reset() { + *x = GetSrv6SidlistStatsResponse{} + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSrv6SidlistStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSrv6SidlistStatsResponse) ProtoMessage() {} + +func (x *GetSrv6SidlistStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[13] + 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 GetSrv6SidlistStatsResponse.ProtoReflect.Descriptor instead. +func (*GetSrv6SidlistStatsResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{13} +} + +func (x *GetSrv6SidlistStatsResponse) GetValues() []uint64 { + if x != nil { + return x.Values + } + return nil +} + type CreateMySidEntryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Entry *MySidEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` @@ -720,7 +835,7 @@ type CreateMySidEntryRequest struct { func (x *CreateMySidEntryRequest) Reset() { *x = CreateMySidEntryRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[12] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -732,7 +847,7 @@ func (x *CreateMySidEntryRequest) String() string { func (*CreateMySidEntryRequest) ProtoMessage() {} func (x *CreateMySidEntryRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[12] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -745,7 +860,7 @@ func (x *CreateMySidEntryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMySidEntryRequest.ProtoReflect.Descriptor instead. func (*CreateMySidEntryRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{12} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{14} } func (x *CreateMySidEntryRequest) GetEntry() *MySidEntry { @@ -819,7 +934,7 @@ type CreateMySidEntryResponse struct { func (x *CreateMySidEntryResponse) Reset() { *x = CreateMySidEntryResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[13] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -831,7 +946,7 @@ func (x *CreateMySidEntryResponse) String() string { func (*CreateMySidEntryResponse) ProtoMessage() {} func (x *CreateMySidEntryResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[13] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -844,7 +959,7 @@ func (x *CreateMySidEntryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMySidEntryResponse.ProtoReflect.Descriptor instead. func (*CreateMySidEntryResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{13} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{15} } type RemoveMySidEntryRequest struct { @@ -856,7 +971,7 @@ type RemoveMySidEntryRequest struct { func (x *RemoveMySidEntryRequest) Reset() { *x = RemoveMySidEntryRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[14] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -868,7 +983,7 @@ func (x *RemoveMySidEntryRequest) String() string { func (*RemoveMySidEntryRequest) ProtoMessage() {} func (x *RemoveMySidEntryRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[14] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -881,7 +996,7 @@ func (x *RemoveMySidEntryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMySidEntryRequest.ProtoReflect.Descriptor instead. func (*RemoveMySidEntryRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{14} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{16} } func (x *RemoveMySidEntryRequest) GetEntry() *MySidEntry { @@ -899,7 +1014,7 @@ type RemoveMySidEntryResponse struct { func (x *RemoveMySidEntryResponse) Reset() { *x = RemoveMySidEntryResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[15] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -911,7 +1026,7 @@ func (x *RemoveMySidEntryResponse) String() string { func (*RemoveMySidEntryResponse) ProtoMessage() {} func (x *RemoveMySidEntryResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[15] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +1039,7 @@ func (x *RemoveMySidEntryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMySidEntryResponse.ProtoReflect.Descriptor instead. func (*RemoveMySidEntryResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{15} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{17} } type SetMySidEntryAttributeRequest struct { @@ -944,7 +1059,7 @@ type SetMySidEntryAttributeRequest struct { func (x *SetMySidEntryAttributeRequest) Reset() { *x = SetMySidEntryAttributeRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[16] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -956,7 +1071,7 @@ func (x *SetMySidEntryAttributeRequest) String() string { func (*SetMySidEntryAttributeRequest) ProtoMessage() {} func (x *SetMySidEntryAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[16] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -969,7 +1084,7 @@ func (x *SetMySidEntryAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMySidEntryAttributeRequest.ProtoReflect.Descriptor instead. func (*SetMySidEntryAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{16} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{18} } func (x *SetMySidEntryAttributeRequest) GetEntry() *MySidEntry { @@ -1043,7 +1158,7 @@ type SetMySidEntryAttributeResponse struct { func (x *SetMySidEntryAttributeResponse) Reset() { *x = SetMySidEntryAttributeResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[17] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1055,7 +1170,7 @@ func (x *SetMySidEntryAttributeResponse) String() string { func (*SetMySidEntryAttributeResponse) ProtoMessage() {} func (x *SetMySidEntryAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[17] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,7 +1183,7 @@ func (x *SetMySidEntryAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMySidEntryAttributeResponse.ProtoReflect.Descriptor instead. func (*SetMySidEntryAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{17} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{19} } type GetMySidEntryAttributeRequest struct { @@ -1081,7 +1196,7 @@ type GetMySidEntryAttributeRequest struct { func (x *GetMySidEntryAttributeRequest) Reset() { *x = GetMySidEntryAttributeRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[18] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1208,7 @@ func (x *GetMySidEntryAttributeRequest) String() string { func (*GetMySidEntryAttributeRequest) ProtoMessage() {} func (x *GetMySidEntryAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[18] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1106,7 +1221,7 @@ func (x *GetMySidEntryAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMySidEntryAttributeRequest.ProtoReflect.Descriptor instead. func (*GetMySidEntryAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{18} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{20} } func (x *GetMySidEntryAttributeRequest) GetEntry() *MySidEntry { @@ -1132,7 +1247,7 @@ type GetMySidEntryAttributeResponse struct { func (x *GetMySidEntryAttributeResponse) Reset() { *x = GetMySidEntryAttributeResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[19] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1144,7 +1259,7 @@ func (x *GetMySidEntryAttributeResponse) String() string { func (*GetMySidEntryAttributeResponse) ProtoMessage() {} func (x *GetMySidEntryAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[19] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1157,7 +1272,7 @@ func (x *GetMySidEntryAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMySidEntryAttributeResponse.ProtoReflect.Descriptor instead. func (*GetMySidEntryAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{19} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{21} } func (x *GetMySidEntryAttributeResponse) GetAttr() *MySidEntryAttribute { @@ -1176,7 +1291,7 @@ type CreateMySidEntriesRequest struct { func (x *CreateMySidEntriesRequest) Reset() { *x = CreateMySidEntriesRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[20] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1188,7 +1303,7 @@ func (x *CreateMySidEntriesRequest) String() string { func (*CreateMySidEntriesRequest) ProtoMessage() {} func (x *CreateMySidEntriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[20] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1201,7 +1316,7 @@ func (x *CreateMySidEntriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMySidEntriesRequest.ProtoReflect.Descriptor instead. func (*CreateMySidEntriesRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{20} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{22} } func (x *CreateMySidEntriesRequest) GetReqs() []*CreateMySidEntryRequest { @@ -1220,7 +1335,7 @@ type CreateMySidEntriesResponse struct { func (x *CreateMySidEntriesResponse) Reset() { *x = CreateMySidEntriesResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[21] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1347,7 @@ func (x *CreateMySidEntriesResponse) String() string { func (*CreateMySidEntriesResponse) ProtoMessage() {} func (x *CreateMySidEntriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[21] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1360,7 @@ func (x *CreateMySidEntriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMySidEntriesResponse.ProtoReflect.Descriptor instead. func (*CreateMySidEntriesResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{21} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{23} } func (x *CreateMySidEntriesResponse) GetResps() []*CreateMySidEntryResponse { @@ -1264,7 +1379,7 @@ type RemoveMySidEntriesRequest struct { func (x *RemoveMySidEntriesRequest) Reset() { *x = RemoveMySidEntriesRequest{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[22] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1391,7 @@ func (x *RemoveMySidEntriesRequest) String() string { func (*RemoveMySidEntriesRequest) ProtoMessage() {} func (x *RemoveMySidEntriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[22] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1404,7 @@ func (x *RemoveMySidEntriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMySidEntriesRequest.ProtoReflect.Descriptor instead. func (*RemoveMySidEntriesRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{22} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{24} } func (x *RemoveMySidEntriesRequest) GetReqs() []*RemoveMySidEntryRequest { @@ -1308,7 +1423,7 @@ type RemoveMySidEntriesResponse struct { func (x *RemoveMySidEntriesResponse) Reset() { *x = RemoveMySidEntriesResponse{} - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[23] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1320,7 +1435,7 @@ func (x *RemoveMySidEntriesResponse) String() string { func (*RemoveMySidEntriesResponse) ProtoMessage() {} func (x *RemoveMySidEntriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[23] + mi := &file_dataplane_proto_sai_srv6_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1333,7 +1448,7 @@ func (x *RemoveMySidEntriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMySidEntriesResponse.ProtoReflect.Descriptor instead. func (*RemoveMySidEntriesResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{23} + return file_dataplane_proto_sai_srv6_proto_rawDescGZIP(), []int{25} } func (x *RemoveMySidEntriesResponse) GetResps() []*RemoveMySidEntryResponse { @@ -1351,7 +1466,7 @@ var file_dataplane_proto_sai_srv6_proto_rawDesc = []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, 0xfb, 0x01, 0x0a, 0x18, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x02, 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, @@ -1366,346 +1481,375 @@ var file_dataplane_proto_sai_srv6_proto_rawDesc = []byte{ 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, 0x04, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3e, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 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, + 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, 0x22, 0xa1, 0x01, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, + 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, + 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, + 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, 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, + 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, + 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, 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, + 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, + 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, + 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, 0x43, 0x72, 0x65, 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, 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, 0x94, 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, 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, + 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, - 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, 0x0c, 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, + 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, - 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, + 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, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, + 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, 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, + 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, + 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, + 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, + 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, 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, 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, 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, + 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, 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, + 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, + 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, 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, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, + 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, 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, + 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, } var ( @@ -1721,7 +1865,7 @@ func file_dataplane_proto_sai_srv6_proto_rawDescGZIP() []byte { } var file_dataplane_proto_sai_srv6_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_dataplane_proto_sai_srv6_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_dataplane_proto_sai_srv6_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_dataplane_proto_sai_srv6_proto_goTypes = []any{ (Srv6SidlistAttr)(0), // 0: lemming.dataplane.sai.Srv6SidlistAttr (MySidEntryAttr)(0), // 1: lemming.dataplane.sai.MySidEntryAttr @@ -1737,82 +1881,88 @@ var file_dataplane_proto_sai_srv6_proto_goTypes = []any{ (*CreateSrv6SidlistsResponse)(nil), // 11: lemming.dataplane.sai.CreateSrv6SidlistsResponse (*RemoveSrv6SidlistsRequest)(nil), // 12: lemming.dataplane.sai.RemoveSrv6SidlistsRequest (*RemoveSrv6SidlistsResponse)(nil), // 13: lemming.dataplane.sai.RemoveSrv6SidlistsResponse - (*CreateMySidEntryRequest)(nil), // 14: lemming.dataplane.sai.CreateMySidEntryRequest - (*CreateMySidEntryResponse)(nil), // 15: lemming.dataplane.sai.CreateMySidEntryResponse - (*RemoveMySidEntryRequest)(nil), // 16: lemming.dataplane.sai.RemoveMySidEntryRequest - (*RemoveMySidEntryResponse)(nil), // 17: lemming.dataplane.sai.RemoveMySidEntryResponse - (*SetMySidEntryAttributeRequest)(nil), // 18: lemming.dataplane.sai.SetMySidEntryAttributeRequest - (*SetMySidEntryAttributeResponse)(nil), // 19: lemming.dataplane.sai.SetMySidEntryAttributeResponse - (*GetMySidEntryAttributeRequest)(nil), // 20: lemming.dataplane.sai.GetMySidEntryAttributeRequest - (*GetMySidEntryAttributeResponse)(nil), // 21: lemming.dataplane.sai.GetMySidEntryAttributeResponse - (*CreateMySidEntriesRequest)(nil), // 22: lemming.dataplane.sai.CreateMySidEntriesRequest - (*CreateMySidEntriesResponse)(nil), // 23: lemming.dataplane.sai.CreateMySidEntriesResponse - (*RemoveMySidEntriesRequest)(nil), // 24: lemming.dataplane.sai.RemoveMySidEntriesRequest - (*RemoveMySidEntriesResponse)(nil), // 25: lemming.dataplane.sai.RemoveMySidEntriesResponse - (Srv6SidlistType)(0), // 26: lemming.dataplane.sai.Srv6SidlistType - (*TLVEntry)(nil), // 27: lemming.dataplane.sai.TLVEntry - (*Srv6SidlistAttribute)(nil), // 28: lemming.dataplane.sai.Srv6SidlistAttribute - (*MySidEntry)(nil), // 29: lemming.dataplane.sai.MySidEntry - (MySidEntryEndpointBehavior)(0), // 30: lemming.dataplane.sai.MySidEntryEndpointBehavior - (MySidEntryEndpointBehaviorFlavor)(0), // 31: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - (PacketAction)(0), // 32: lemming.dataplane.sai.PacketAction - (*MySidEntryAttribute)(nil), // 33: lemming.dataplane.sai.MySidEntryAttribute + (*GetSrv6SidlistStatsRequest)(nil), // 14: lemming.dataplane.sai.GetSrv6SidlistStatsRequest + (*GetSrv6SidlistStatsResponse)(nil), // 15: lemming.dataplane.sai.GetSrv6SidlistStatsResponse + (*CreateMySidEntryRequest)(nil), // 16: lemming.dataplane.sai.CreateMySidEntryRequest + (*CreateMySidEntryResponse)(nil), // 17: lemming.dataplane.sai.CreateMySidEntryResponse + (*RemoveMySidEntryRequest)(nil), // 18: lemming.dataplane.sai.RemoveMySidEntryRequest + (*RemoveMySidEntryResponse)(nil), // 19: lemming.dataplane.sai.RemoveMySidEntryResponse + (*SetMySidEntryAttributeRequest)(nil), // 20: lemming.dataplane.sai.SetMySidEntryAttributeRequest + (*SetMySidEntryAttributeResponse)(nil), // 21: lemming.dataplane.sai.SetMySidEntryAttributeResponse + (*GetMySidEntryAttributeRequest)(nil), // 22: lemming.dataplane.sai.GetMySidEntryAttributeRequest + (*GetMySidEntryAttributeResponse)(nil), // 23: lemming.dataplane.sai.GetMySidEntryAttributeResponse + (*CreateMySidEntriesRequest)(nil), // 24: lemming.dataplane.sai.CreateMySidEntriesRequest + (*CreateMySidEntriesResponse)(nil), // 25: lemming.dataplane.sai.CreateMySidEntriesResponse + (*RemoveMySidEntriesRequest)(nil), // 26: lemming.dataplane.sai.RemoveMySidEntriesRequest + (*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 } var file_dataplane_proto_sai_srv6_proto_depIdxs = []int32{ - 26, // 0: lemming.dataplane.sai.CreateSrv6SidlistRequest.type:type_name -> lemming.dataplane.sai.Srv6SidlistType - 27, // 1: lemming.dataplane.sai.CreateSrv6SidlistRequest.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry - 27, // 2: lemming.dataplane.sai.SetSrv6SidlistAttributeRequest.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry + 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 - 28, // 4: lemming.dataplane.sai.GetSrv6SidlistAttributeResponse.attr:type_name -> lemming.dataplane.sai.Srv6SidlistAttribute + 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 - 29, // 9: lemming.dataplane.sai.CreateMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 30, // 10: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 31, // 11: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 32, // 12: lemming.dataplane.sai.CreateMySidEntryRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 29, // 13: lemming.dataplane.sai.RemoveMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 29, // 14: lemming.dataplane.sai.SetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 30, // 15: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 31, // 16: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 32, // 17: lemming.dataplane.sai.SetMySidEntryAttributeRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 29, // 18: lemming.dataplane.sai.GetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 1, // 19: lemming.dataplane.sai.GetMySidEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MySidEntryAttr - 33, // 20: lemming.dataplane.sai.GetMySidEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.MySidEntryAttribute - 14, // 21: lemming.dataplane.sai.CreateMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.CreateMySidEntryRequest - 15, // 22: lemming.dataplane.sai.CreateMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.CreateMySidEntryResponse - 16, // 23: lemming.dataplane.sai.RemoveMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.RemoveMySidEntryRequest - 17, // 24: lemming.dataplane.sai.RemoveMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.RemoveMySidEntryResponse - 2, // 25: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:input_type -> lemming.dataplane.sai.CreateSrv6SidlistRequest - 4, // 26: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistRequest - 6, // 27: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeRequest - 8, // 28: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeRequest - 10, // 29: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:input_type -> lemming.dataplane.sai.CreateSrv6SidlistsRequest - 12, // 30: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistsRequest - 14, // 31: lemming.dataplane.sai.Srv6.CreateMySidEntry:input_type -> lemming.dataplane.sai.CreateMySidEntryRequest - 16, // 32: lemming.dataplane.sai.Srv6.RemoveMySidEntry:input_type -> lemming.dataplane.sai.RemoveMySidEntryRequest - 18, // 33: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:input_type -> lemming.dataplane.sai.SetMySidEntryAttributeRequest - 20, // 34: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:input_type -> lemming.dataplane.sai.GetMySidEntryAttributeRequest - 22, // 35: lemming.dataplane.sai.Srv6.CreateMySidEntries:input_type -> lemming.dataplane.sai.CreateMySidEntriesRequest - 24, // 36: lemming.dataplane.sai.Srv6.RemoveMySidEntries:input_type -> lemming.dataplane.sai.RemoveMySidEntriesRequest - 3, // 37: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:output_type -> lemming.dataplane.sai.CreateSrv6SidlistResponse - 5, // 38: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistResponse - 7, // 39: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeResponse - 9, // 40: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeResponse - 11, // 41: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:output_type -> lemming.dataplane.sai.CreateSrv6SidlistsResponse - 13, // 42: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistsResponse - 15, // 43: lemming.dataplane.sai.Srv6.CreateMySidEntry:output_type -> lemming.dataplane.sai.CreateMySidEntryResponse - 17, // 44: lemming.dataplane.sai.Srv6.RemoveMySidEntry:output_type -> lemming.dataplane.sai.RemoveMySidEntryResponse - 19, // 45: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:output_type -> lemming.dataplane.sai.SetMySidEntryAttributeResponse - 21, // 46: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:output_type -> lemming.dataplane.sai.GetMySidEntryAttributeResponse - 23, // 47: lemming.dataplane.sai.Srv6.CreateMySidEntries:output_type -> lemming.dataplane.sai.CreateMySidEntriesResponse - 25, // 48: lemming.dataplane.sai.Srv6.RemoveMySidEntries:output_type -> lemming.dataplane.sai.RemoveMySidEntriesResponse - 37, // [37:49] is the sub-list for method output_type - 25, // [25:37] 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 + 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 } func init() { file_dataplane_proto_sai_srv6_proto_init() } @@ -1822,15 +1972,16 @@ func file_dataplane_proto_sai_srv6_proto_init() { } file_dataplane_proto_sai_common_proto_init() file_dataplane_proto_sai_srv6_proto_msgTypes[0].OneofWrappers = []any{} - file_dataplane_proto_sai_srv6_proto_msgTypes[12].OneofWrappers = []any{} - file_dataplane_proto_sai_srv6_proto_msgTypes[16].OneofWrappers = []any{} + file_dataplane_proto_sai_srv6_proto_msgTypes[4].OneofWrappers = []any{} + file_dataplane_proto_sai_srv6_proto_msgTypes[14].OneofWrappers = []any{} + file_dataplane_proto_sai_srv6_proto_msgTypes[18].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dataplane_proto_sai_srv6_proto_rawDesc, NumEnums: 2, - NumMessages: 24, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, @@ -1863,6 +2014,7 @@ type Srv6Client interface { GetSrv6SidlistAttribute(ctx context.Context, in *GetSrv6SidlistAttributeRequest, opts ...grpc.CallOption) (*GetSrv6SidlistAttributeResponse, error) CreateSrv6Sidlists(ctx context.Context, in *CreateSrv6SidlistsRequest, opts ...grpc.CallOption) (*CreateSrv6SidlistsResponse, error) RemoveSrv6Sidlists(ctx context.Context, in *RemoveSrv6SidlistsRequest, opts ...grpc.CallOption) (*RemoveSrv6SidlistsResponse, error) + GetSrv6SidlistStats(ctx context.Context, in *GetSrv6SidlistStatsRequest, opts ...grpc.CallOption) (*GetSrv6SidlistStatsResponse, error) CreateMySidEntry(ctx context.Context, in *CreateMySidEntryRequest, opts ...grpc.CallOption) (*CreateMySidEntryResponse, error) RemoveMySidEntry(ctx context.Context, in *RemoveMySidEntryRequest, opts ...grpc.CallOption) (*RemoveMySidEntryResponse, error) SetMySidEntryAttribute(ctx context.Context, in *SetMySidEntryAttributeRequest, opts ...grpc.CallOption) (*SetMySidEntryAttributeResponse, error) @@ -1933,6 +2085,15 @@ func (c *srv6Client) RemoveSrv6Sidlists(ctx context.Context, in *RemoveSrv6Sidli return out, nil } +func (c *srv6Client) GetSrv6SidlistStats(ctx context.Context, in *GetSrv6SidlistStatsRequest, opts ...grpc.CallOption) (*GetSrv6SidlistStatsResponse, error) { + out := new(GetSrv6SidlistStatsResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Srv6/GetSrv6SidlistStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *srv6Client) CreateMySidEntry(ctx context.Context, in *CreateMySidEntryRequest, opts ...grpc.CallOption) (*CreateMySidEntryResponse, error) { out := new(CreateMySidEntryResponse) err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Srv6/CreateMySidEntry", in, out, opts...) @@ -1995,6 +2156,7 @@ type Srv6Server interface { GetSrv6SidlistAttribute(context.Context, *GetSrv6SidlistAttributeRequest) (*GetSrv6SidlistAttributeResponse, error) CreateSrv6Sidlists(context.Context, *CreateSrv6SidlistsRequest) (*CreateSrv6SidlistsResponse, error) RemoveSrv6Sidlists(context.Context, *RemoveSrv6SidlistsRequest) (*RemoveSrv6SidlistsResponse, error) + GetSrv6SidlistStats(context.Context, *GetSrv6SidlistStatsRequest) (*GetSrv6SidlistStatsResponse, error) CreateMySidEntry(context.Context, *CreateMySidEntryRequest) (*CreateMySidEntryResponse, error) RemoveMySidEntry(context.Context, *RemoveMySidEntryRequest) (*RemoveMySidEntryResponse, error) SetMySidEntryAttribute(context.Context, *SetMySidEntryAttributeRequest) (*SetMySidEntryAttributeResponse, error) @@ -2025,6 +2187,9 @@ func (*UnimplementedSrv6Server) CreateSrv6Sidlists(context.Context, *CreateSrv6S func (*UnimplementedSrv6Server) RemoveSrv6Sidlists(context.Context, *RemoveSrv6SidlistsRequest) (*RemoveSrv6SidlistsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveSrv6Sidlists not implemented") } +func (*UnimplementedSrv6Server) GetSrv6SidlistStats(context.Context, *GetSrv6SidlistStatsRequest) (*GetSrv6SidlistStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSrv6SidlistStats not implemented") +} func (*UnimplementedSrv6Server) CreateMySidEntry(context.Context, *CreateMySidEntryRequest) (*CreateMySidEntryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateMySidEntry not implemented") } @@ -2156,6 +2321,24 @@ func _Srv6_RemoveSrv6Sidlists_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Srv6_GetSrv6SidlistStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSrv6SidlistStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(Srv6Server).GetSrv6SidlistStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Srv6/GetSrv6SidlistStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(Srv6Server).GetSrv6SidlistStats(ctx, req.(*GetSrv6SidlistStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Srv6_CreateMySidEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateMySidEntryRequest) if err := dec(in); err != nil { @@ -2292,6 +2475,10 @@ var _Srv6_serviceDesc = grpc.ServiceDesc{ MethodName: "RemoveSrv6Sidlists", Handler: _Srv6_RemoveSrv6Sidlists_Handler, }, + { + MethodName: "GetSrv6SidlistStats", + Handler: _Srv6_GetSrv6SidlistStats_Handler, + }, { MethodName: "CreateMySidEntry", Handler: _Srv6_CreateMySidEntry_Handler, diff --git a/dataplane/proto/sai/srv6.proto b/dataplane/proto/sai/srv6.proto index b3c5494d..d669d274 100644 --- a/dataplane/proto/sai/srv6.proto +++ b/dataplane/proto/sai/srv6.proto @@ -7,163 +7,167 @@ 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_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; } 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]; + 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]; } 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]; + 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]; } -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; +} + +message GetSrv6SidlistStatsResponse { + 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 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 3dade73f..cd53d235 100644 --- a/dataplane/proto/sai/stp.proto +++ b/dataplane/proto/sai/stp.proto @@ -7,105 +7,107 @@ 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 c78c4544..06338b46 100644 --- a/dataplane/proto/sai/switch.pb.go +++ b/dataplane/proto/sai/switch.pb.go @@ -239,6 +239,27 @@ const ( SwitchAttr_SWITCH_ATTR_NAT_EVENT_NOTIFY SwitchAttr = 209 SwitchAttr_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT SwitchAttr = 210 SwitchAttr_SWITCH_ATTR_ECMP_MEMBER_COUNT SwitchAttr = 211 + SwitchAttr_SWITCH_ATTR_ARS_PROFILE SwitchAttr = 212 + SwitchAttr_SWITCH_ATTR_ACL_STAGE_POST_INGRESS SwitchAttr = 213 + SwitchAttr_SWITCH_ATTR_CREDIT_WD SwitchAttr = 214 + SwitchAttr_SWITCH_ATTR_CREDIT_WD_TIMER SwitchAttr = 215 + SwitchAttr_SWITCH_ATTR_SWITCH_ISOLATE SwitchAttr = 216 + SwitchAttr_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE SwitchAttr = 217 + SwitchAttr_SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY SwitchAttr = 218 + SwitchAttr_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY SwitchAttr = 219 + SwitchAttr_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY SwitchAttr = 220 + SwitchAttr_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY SwitchAttr = 221 + SwitchAttr_SWITCH_ATTR_ACL_CHAIN_LIST SwitchAttr = 222 + SwitchAttr_SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY SwitchAttr = 223 + SwitchAttr_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY SwitchAttr = 224 + SwitchAttr_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY SwitchAttr = 225 + SwitchAttr_SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY SwitchAttr = 226 + SwitchAttr_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION SwitchAttr = 227 + SwitchAttr_SWITCH_ATTR_MAX_TWAMP_SESSION SwitchAttr = 228 + SwitchAttr_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY SwitchAttr = 229 + 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 ) // Enum value maps for SwitchAttr. @@ -456,6 +477,27 @@ var ( 209: "SWITCH_ATTR_NAT_EVENT_NOTIFY", 210: "SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT", 211: "SWITCH_ATTR_ECMP_MEMBER_COUNT", + 212: "SWITCH_ATTR_ARS_PROFILE", + 213: "SWITCH_ATTR_ACL_STAGE_POST_INGRESS", + 214: "SWITCH_ATTR_CREDIT_WD", + 215: "SWITCH_ATTR_CREDIT_WD_TIMER", + 216: "SWITCH_ATTR_SWITCH_ISOLATE", + 217: "SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE", + 218: "SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY", + 219: "SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY", + 220: "SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY", + 221: "SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY", + 222: "SWITCH_ATTR_ACL_CHAIN_LIST", + 223: "SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY", + 224: "SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY", + 225: "SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY", + 226: "SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY", + 227: "SWITCH_ATTR_AVAILABLE_TWAMP_SESSION", + 228: "SWITCH_ATTR_MAX_TWAMP_SESSION", + 229: "SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY", + 230: "SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS", + 231: "SWITCH_ATTR_ACL_STAGE_PRE_INGRESS", + 232: "SWITCH_ATTR_POE_DEVICE_LIST", } SwitchAttr_value = map[string]int32{ "SWITCH_ATTR_UNSPECIFIED": 0, @@ -670,6 +712,27 @@ var ( "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, } ) @@ -783,92 +846,101 @@ func (SwitchTunnelAttr) EnumDescriptor() ([]byte, []int) { } type CreateSwitchRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - IngressAcl *uint64 `protobuf:"varint,1,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` - EgressAcl *uint64 `protobuf:"varint,2,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` - RestartWarm *bool `protobuf:"varint,3,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` - WarmRecover *bool `protobuf:"varint,4,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` - SwitchingMode *SwitchSwitchingMode `protobuf:"varint,5,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` - BcastCpuFloodEnable *bool `protobuf:"varint,6,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` - McastCpuFloodEnable *bool `protobuf:"varint,7,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` - SrcMacAddress []byte `protobuf:"bytes,8,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` - MaxLearnedAddresses *uint32 `protobuf:"varint,9,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` - FdbAgingTime *uint32 `protobuf:"varint,10,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` - FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,11,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` - FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,12,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` - FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,13,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` - EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,14,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` - EcmpDefaultHashSeed *uint32 `protobuf:"varint,15,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` - EcmpDefaultHashOffset *uint32 `protobuf:"varint,16,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` - EcmpDefaultSymmetricHash *bool `protobuf:"varint,17,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` - EcmpHashIpv4 *uint64 `protobuf:"varint,18,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` - EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,19,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` - EcmpHashIpv6 *uint64 `protobuf:"varint,20,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` - LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,21,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` - LagDefaultHashSeed *uint32 `protobuf:"varint,22,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` - LagDefaultHashOffset *uint32 `protobuf:"varint,23,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` - LagDefaultSymmetricHash *bool `protobuf:"varint,24,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` - LagHashIpv4 *uint64 `protobuf:"varint,25,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` - LagHashIpv4InIpv4 *uint64 `protobuf:"varint,26,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` - LagHashIpv6 *uint64 `protobuf:"varint,27,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` - CounterRefreshInterval *uint32 `protobuf:"varint,28,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` - QosDefaultTc *uint32 `protobuf:"varint,29,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` - QosDot1PToTcMap *uint64 `protobuf:"varint,30,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` - QosDot1PToColorMap *uint64 `protobuf:"varint,31,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` - QosDscpToTcMap *uint64 `protobuf:"varint,32,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` - QosDscpToColorMap *uint64 `protobuf:"varint,33,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` - QosTcToQueueMap *uint64 `protobuf:"varint,34,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` - QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,35,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` - QosTcAndColorToDscpMap *uint64 `protobuf:"varint,36,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` - SwitchShellEnable *bool `protobuf:"varint,37,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` - SwitchProfileId *uint32 `protobuf:"varint,38,opt,name=switch_profile_id,json=switchProfileId,proto3,oneof" json:"switch_profile_id,omitempty"` - SwitchHardwareInfo []int32 `protobuf:"varint,39,rep,packed,name=switch_hardware_info,json=switchHardwareInfo,proto3" json:"switch_hardware_info,omitempty"` - FirmwarePathName []int32 `protobuf:"varint,40,rep,packed,name=firmware_path_name,json=firmwarePathName,proto3" json:"firmware_path_name,omitempty"` - InitSwitch *bool `protobuf:"varint,41,opt,name=init_switch,json=initSwitch,proto3,oneof" json:"init_switch,omitempty"` - FastApiEnable *bool `protobuf:"varint,42,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` - MirrorTc *uint32 `protobuf:"varint,43,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` - PfcDlrPacketAction *PacketAction `protobuf:"varint,44,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` - PfcTcDldInterval []*UintMap `protobuf:"bytes,45,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` - PfcTcDlrInterval []*UintMap `protobuf:"bytes,46,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` - TpidOuterVlan *uint32 `protobuf:"varint,47,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` - TpidInnerVlan *uint32 `protobuf:"varint,48,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` - CrcCheckEnable *bool `protobuf:"varint,49,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` - CrcRecalculationEnable *bool `protobuf:"varint,50,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` - EcnEctThresholdEnable *bool `protobuf:"varint,51,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` - VxlanDefaultRouterMac []byte `protobuf:"bytes,52,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` - VxlanDefaultPort *uint32 `protobuf:"varint,53,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` - UninitDataPlaneOnRemoval *bool `protobuf:"varint,54,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` - TamObjectId []uint64 `protobuf:"varint,55,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` - PreShutdown *bool `protobuf:"varint,56,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` - NatZoneCounterObjectId *uint64 `protobuf:"varint,57,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` - NatEnable *bool `protobuf:"varint,58,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` - HardwareAccessBus *SwitchHardwareAccessBus `protobuf:"varint,59,opt,name=hardware_access_bus,json=hardwareAccessBus,proto3,enum=lemming.dataplane.sai.SwitchHardwareAccessBus,oneof" json:"hardware_access_bus,omitempty"` - PlatfromContext *uint64 `protobuf:"varint,60,opt,name=platfrom_context,json=platfromContext,proto3,oneof" json:"platfrom_context,omitempty"` - FirmwareDownloadBroadcast *bool `protobuf:"varint,61,opt,name=firmware_download_broadcast,json=firmwareDownloadBroadcast,proto3,oneof" json:"firmware_download_broadcast,omitempty"` - FirmwareLoadMethod *SwitchFirmwareLoadMethod `protobuf:"varint,62,opt,name=firmware_load_method,json=firmwareLoadMethod,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadMethod,oneof" json:"firmware_load_method,omitempty"` - FirmwareLoadType *SwitchFirmwareLoadType `protobuf:"varint,63,opt,name=firmware_load_type,json=firmwareLoadType,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadType,oneof" json:"firmware_load_type,omitempty"` - FirmwareDownloadExecute *bool `protobuf:"varint,64,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` - FirmwareBroadcastStop *bool `protobuf:"varint,65,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` - FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,66,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` - Type *SwitchType `protobuf:"varint,67,opt,name=type,proto3,enum=lemming.dataplane.sai.SwitchType,oneof" json:"type,omitempty"` - MacsecObjectList []uint64 `protobuf:"varint,68,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` - QosMplsExpToTcMap *uint64 `protobuf:"varint,69,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` - QosMplsExpToColorMap *uint64 `protobuf:"varint,70,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` - QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,71,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` - SwitchId *uint32 `protobuf:"varint,72,opt,name=switch_id,json=switchId,proto3,oneof" json:"switch_id,omitempty"` - MaxSystemCores *uint32 `protobuf:"varint,73,opt,name=max_system_cores,json=maxSystemCores,proto3,oneof" json:"max_system_cores,omitempty"` - SystemPortConfigList []*SystemPortConfig `protobuf:"bytes,74,rep,name=system_port_config_list,json=systemPortConfigList,proto3" json:"system_port_config_list,omitempty"` - FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,75,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` - TunnelObjectsList []uint64 `protobuf:"varint,76,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` - PreIngressAcl *uint64 `protobuf:"varint,77,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` - SlaveMdioAddrList []uint32 `protobuf:"varint,78,rep,packed,name=slave_mdio_addr_list,json=slaveMdioAddrList,proto3" json:"slave_mdio_addr_list,omitempty"` - QosDscpToForwardingClassMap *uint64 `protobuf:"varint,79,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` - QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,80,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` - IpsecObjectId *uint64 `protobuf:"varint,81,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` - IpsecSaTagTpid *uint32 `protobuf:"varint,82,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` - EcmpMemberCount *uint32 `protobuf:"varint,83,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + IngressAcl *uint64 `protobuf:"varint,1,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` + EgressAcl *uint64 `protobuf:"varint,2,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` + RestartWarm *bool `protobuf:"varint,3,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` + WarmRecover *bool `protobuf:"varint,4,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` + SwitchingMode *SwitchSwitchingMode `protobuf:"varint,5,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` + BcastCpuFloodEnable *bool `protobuf:"varint,6,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` + McastCpuFloodEnable *bool `protobuf:"varint,7,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,8,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + MaxLearnedAddresses *uint32 `protobuf:"varint,9,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` + FdbAgingTime *uint32 `protobuf:"varint,10,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` + FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,11,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` + FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,12,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` + FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,13,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` + EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,14,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` + EcmpDefaultHashSeed *uint32 `protobuf:"varint,15,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` + EcmpDefaultHashOffset *uint32 `protobuf:"varint,16,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` + EcmpDefaultSymmetricHash *bool `protobuf:"varint,17,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` + EcmpHashIpv4 *uint64 `protobuf:"varint,18,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` + EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,19,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` + EcmpHashIpv6 *uint64 `protobuf:"varint,20,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` + LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,21,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` + LagDefaultHashSeed *uint32 `protobuf:"varint,22,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` + LagDefaultHashOffset *uint32 `protobuf:"varint,23,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` + LagDefaultSymmetricHash *bool `protobuf:"varint,24,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` + LagHashIpv4 *uint64 `protobuf:"varint,25,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` + LagHashIpv4InIpv4 *uint64 `protobuf:"varint,26,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` + LagHashIpv6 *uint64 `protobuf:"varint,27,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` + CounterRefreshInterval *uint32 `protobuf:"varint,28,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` + QosDefaultTc *uint32 `protobuf:"varint,29,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` + QosDot1PToTcMap *uint64 `protobuf:"varint,30,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` + QosDot1PToColorMap *uint64 `protobuf:"varint,31,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` + QosDscpToTcMap *uint64 `protobuf:"varint,32,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` + QosDscpToColorMap *uint64 `protobuf:"varint,33,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` + QosTcToQueueMap *uint64 `protobuf:"varint,34,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` + QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,35,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` + QosTcAndColorToDscpMap *uint64 `protobuf:"varint,36,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` + SwitchShellEnable *bool `protobuf:"varint,37,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` + SwitchProfileId *uint32 `protobuf:"varint,38,opt,name=switch_profile_id,json=switchProfileId,proto3,oneof" json:"switch_profile_id,omitempty"` + SwitchHardwareInfo []int32 `protobuf:"varint,39,rep,packed,name=switch_hardware_info,json=switchHardwareInfo,proto3" json:"switch_hardware_info,omitempty"` + FirmwarePathName []int32 `protobuf:"varint,40,rep,packed,name=firmware_path_name,json=firmwarePathName,proto3" json:"firmware_path_name,omitempty"` + InitSwitch *bool `protobuf:"varint,41,opt,name=init_switch,json=initSwitch,proto3,oneof" json:"init_switch,omitempty"` + FastApiEnable *bool `protobuf:"varint,42,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` + MirrorTc *uint32 `protobuf:"varint,43,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` + PfcDlrPacketAction *PacketAction `protobuf:"varint,44,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` + PfcTcDldInterval []*UintMap `protobuf:"bytes,45,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` + PfcTcDlrInterval []*UintMap `protobuf:"bytes,46,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` + TpidOuterVlan *uint32 `protobuf:"varint,47,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` + TpidInnerVlan *uint32 `protobuf:"varint,48,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` + CrcCheckEnable *bool `protobuf:"varint,49,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` + CrcRecalculationEnable *bool `protobuf:"varint,50,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` + EcnEctThresholdEnable *bool `protobuf:"varint,51,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` + VxlanDefaultRouterMac []byte `protobuf:"bytes,52,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` + VxlanDefaultPort *uint32 `protobuf:"varint,53,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` + UninitDataPlaneOnRemoval *bool `protobuf:"varint,54,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` + TamObjectId []uint64 `protobuf:"varint,55,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` + PreShutdown *bool `protobuf:"varint,56,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` + NatZoneCounterObjectId *uint64 `protobuf:"varint,57,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` + NatEnable *bool `protobuf:"varint,58,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` + HardwareAccessBus *SwitchHardwareAccessBus `protobuf:"varint,59,opt,name=hardware_access_bus,json=hardwareAccessBus,proto3,enum=lemming.dataplane.sai.SwitchHardwareAccessBus,oneof" json:"hardware_access_bus,omitempty"` + PlatfromContext *uint64 `protobuf:"varint,60,opt,name=platfrom_context,json=platfromContext,proto3,oneof" json:"platfrom_context,omitempty"` + FirmwareDownloadBroadcast *bool `protobuf:"varint,61,opt,name=firmware_download_broadcast,json=firmwareDownloadBroadcast,proto3,oneof" json:"firmware_download_broadcast,omitempty"` + FirmwareLoadMethod *SwitchFirmwareLoadMethod `protobuf:"varint,62,opt,name=firmware_load_method,json=firmwareLoadMethod,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadMethod,oneof" json:"firmware_load_method,omitempty"` + FirmwareLoadType *SwitchFirmwareLoadType `protobuf:"varint,63,opt,name=firmware_load_type,json=firmwareLoadType,proto3,enum=lemming.dataplane.sai.SwitchFirmwareLoadType,oneof" json:"firmware_load_type,omitempty"` + FirmwareDownloadExecute *bool `protobuf:"varint,64,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` + FirmwareBroadcastStop *bool `protobuf:"varint,65,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` + FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,66,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` + Type *SwitchType `protobuf:"varint,67,opt,name=type,proto3,enum=lemming.dataplane.sai.SwitchType,oneof" json:"type,omitempty"` + MacsecObjectList []uint64 `protobuf:"varint,68,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` + QosMplsExpToTcMap *uint64 `protobuf:"varint,69,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` + QosMplsExpToColorMap *uint64 `protobuf:"varint,70,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` + QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,71,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + SwitchId *uint32 `protobuf:"varint,72,opt,name=switch_id,json=switchId,proto3,oneof" json:"switch_id,omitempty"` + MaxSystemCores *uint32 `protobuf:"varint,73,opt,name=max_system_cores,json=maxSystemCores,proto3,oneof" json:"max_system_cores,omitempty"` + SystemPortConfigList []*SystemPortConfig `protobuf:"bytes,74,rep,name=system_port_config_list,json=systemPortConfigList,proto3" json:"system_port_config_list,omitempty"` + FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,75,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` + TunnelObjectsList []uint64 `protobuf:"varint,76,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` + PreIngressAcl *uint64 `protobuf:"varint,77,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` + SlaveMdioAddrList []uint32 `protobuf:"varint,78,rep,packed,name=slave_mdio_addr_list,json=slaveMdioAddrList,proto3" json:"slave_mdio_addr_list,omitempty"` + QosDscpToForwardingClassMap *uint64 `protobuf:"varint,79,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` + QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,80,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` + IpsecObjectId *uint64 `protobuf:"varint,81,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` + IpsecSaTagTpid *uint32 `protobuf:"varint,82,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` + EcmpMemberCount *uint32 `protobuf:"varint,83,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,omitempty"` + ArsProfile *uint64 `protobuf:"varint,84,opt,name=ars_profile,json=arsProfile,proto3,oneof" json:"ars_profile,omitempty"` + CreditWd *bool `protobuf:"varint,85,opt,name=credit_wd,json=creditWd,proto3,oneof" json:"credit_wd,omitempty"` + CreditWdTimer *uint32 `protobuf:"varint,86,opt,name=credit_wd_timer,json=creditWdTimer,proto3,oneof" json:"credit_wd_timer,omitempty"` + SwitchIsolate *bool `protobuf:"varint,87,opt,name=switch_isolate,json=switchIsolate,proto3,oneof" json:"switch_isolate,omitempty"` + HostifOperStatusUpdateMode *SwitchHostifOperStatusUpdateMode `protobuf:"varint,88,opt,name=hostif_oper_status_update_mode,json=hostifOperStatusUpdateMode,proto3,enum=lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode,oneof" json:"hostif_oper_status_update_mode,omitempty"` + RegFatalSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,89,rep,packed,name=reg_fatal_switch_asic_sdk_health_category,json=regFatalSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_fatal_switch_asic_sdk_health_category,omitempty"` + 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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSwitchRequest) Reset() { @@ -1482,6 +1554,69 @@ func (x *CreateSwitchRequest) GetEcmpMemberCount() uint32 { return 0 } +func (x *CreateSwitchRequest) GetArsProfile() uint64 { + if x != nil && x.ArsProfile != nil { + return *x.ArsProfile + } + return 0 +} + +func (x *CreateSwitchRequest) GetCreditWd() bool { + if x != nil && x.CreditWd != nil { + return *x.CreditWd + } + return false +} + +func (x *CreateSwitchRequest) GetCreditWdTimer() uint32 { + if x != nil && x.CreditWdTimer != nil { + return *x.CreditWdTimer + } + return 0 +} + +func (x *CreateSwitchRequest) GetSwitchIsolate() bool { + if x != nil && x.SwitchIsolate != nil { + return *x.SwitchIsolate + } + return false +} + +func (x *CreateSwitchRequest) GetHostifOperStatusUpdateMode() SwitchHostifOperStatusUpdateMode { + if x != nil && x.HostifOperStatusUpdateMode != nil { + return *x.HostifOperStatusUpdateMode + } + return SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED +} + +func (x *CreateSwitchRequest) GetRegFatalSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegFatalSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *CreateSwitchRequest) GetRegWarningSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegWarningSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *CreateSwitchRequest) GetRegNoticeSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegNoticeSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *CreateSwitchRequest) GetPoeDeviceList() []uint64 { + if x != nil { + return x.PoeDeviceList + } + return nil +} + type CreateSwitchResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1607,79 +1742,88 @@ func (*RemoveSwitchResponse) Descriptor() ([]byte, []int) { } type SetSwitchAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - IngressAcl *uint64 `protobuf:"varint,2,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` - EgressAcl *uint64 `protobuf:"varint,3,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` - RestartWarm *bool `protobuf:"varint,4,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` - WarmRecover *bool `protobuf:"varint,5,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` - SwitchingMode *SwitchSwitchingMode `protobuf:"varint,6,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` - BcastCpuFloodEnable *bool `protobuf:"varint,7,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` - McastCpuFloodEnable *bool `protobuf:"varint,8,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` - SrcMacAddress []byte `protobuf:"bytes,9,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` - MaxLearnedAddresses *uint32 `protobuf:"varint,10,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` - FdbAgingTime *uint32 `protobuf:"varint,11,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` - FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,12,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` - FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,13,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` - FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,14,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` - EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,15,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` - EcmpDefaultHashSeed *uint32 `protobuf:"varint,16,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` - EcmpDefaultHashOffset *uint32 `protobuf:"varint,17,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` - EcmpDefaultSymmetricHash *bool `protobuf:"varint,18,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` - EcmpHashIpv4 *uint64 `protobuf:"varint,19,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` - EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,20,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` - EcmpHashIpv6 *uint64 `protobuf:"varint,21,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` - LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,22,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` - LagDefaultHashSeed *uint32 `protobuf:"varint,23,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` - LagDefaultHashOffset *uint32 `protobuf:"varint,24,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` - LagDefaultSymmetricHash *bool `protobuf:"varint,25,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` - LagHashIpv4 *uint64 `protobuf:"varint,26,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` - LagHashIpv4InIpv4 *uint64 `protobuf:"varint,27,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` - LagHashIpv6 *uint64 `protobuf:"varint,28,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` - CounterRefreshInterval *uint32 `protobuf:"varint,29,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` - QosDefaultTc *uint32 `protobuf:"varint,30,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` - QosDot1PToTcMap *uint64 `protobuf:"varint,31,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` - QosDot1PToColorMap *uint64 `protobuf:"varint,32,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` - QosDscpToTcMap *uint64 `protobuf:"varint,33,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` - QosDscpToColorMap *uint64 `protobuf:"varint,34,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` - QosTcToQueueMap *uint64 `protobuf:"varint,35,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` - QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,36,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` - QosTcAndColorToDscpMap *uint64 `protobuf:"varint,37,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` - SwitchShellEnable *bool `protobuf:"varint,38,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` - FastApiEnable *bool `protobuf:"varint,39,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` - MirrorTc *uint32 `protobuf:"varint,40,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` - PfcDlrPacketAction *PacketAction `protobuf:"varint,41,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` - PfcTcDldInterval []*UintMap `protobuf:"bytes,42,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` - PfcTcDlrInterval []*UintMap `protobuf:"bytes,43,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` - TpidOuterVlan *uint32 `protobuf:"varint,44,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` - TpidInnerVlan *uint32 `protobuf:"varint,45,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` - CrcCheckEnable *bool `protobuf:"varint,46,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` - CrcRecalculationEnable *bool `protobuf:"varint,47,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` - EcnEctThresholdEnable *bool `protobuf:"varint,48,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` - VxlanDefaultRouterMac []byte `protobuf:"bytes,49,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` - VxlanDefaultPort *uint32 `protobuf:"varint,50,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` - UninitDataPlaneOnRemoval *bool `protobuf:"varint,51,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` - TamObjectId []uint64 `protobuf:"varint,52,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` - PreShutdown *bool `protobuf:"varint,53,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` - NatZoneCounterObjectId *uint64 `protobuf:"varint,54,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` - NatEnable *bool `protobuf:"varint,55,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` - FirmwareDownloadExecute *bool `protobuf:"varint,56,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` - FirmwareBroadcastStop *bool `protobuf:"varint,57,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` - FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,58,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` - MacsecObjectList []uint64 `protobuf:"varint,59,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` - QosMplsExpToTcMap *uint64 `protobuf:"varint,60,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` - QosMplsExpToColorMap *uint64 `protobuf:"varint,61,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` - QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,62,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` - FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,63,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` - TunnelObjectsList []uint64 `protobuf:"varint,64,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` - PreIngressAcl *uint64 `protobuf:"varint,65,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` - QosDscpToForwardingClassMap *uint64 `protobuf:"varint,66,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` - QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,67,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` - IpsecObjectId *uint64 `protobuf:"varint,68,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` - IpsecSaTagTpid *uint32 `protobuf:"varint,69,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` - EcmpMemberCount *uint32 `protobuf:"varint,70,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,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"` + IngressAcl *uint64 `protobuf:"varint,2,opt,name=ingress_acl,json=ingressAcl,proto3,oneof" json:"ingress_acl,omitempty"` + EgressAcl *uint64 `protobuf:"varint,3,opt,name=egress_acl,json=egressAcl,proto3,oneof" json:"egress_acl,omitempty"` + RestartWarm *bool `protobuf:"varint,4,opt,name=restart_warm,json=restartWarm,proto3,oneof" json:"restart_warm,omitempty"` + WarmRecover *bool `protobuf:"varint,5,opt,name=warm_recover,json=warmRecover,proto3,oneof" json:"warm_recover,omitempty"` + SwitchingMode *SwitchSwitchingMode `protobuf:"varint,6,opt,name=switching_mode,json=switchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switching_mode,omitempty"` + BcastCpuFloodEnable *bool `protobuf:"varint,7,opt,name=bcast_cpu_flood_enable,json=bcastCpuFloodEnable,proto3,oneof" json:"bcast_cpu_flood_enable,omitempty"` + McastCpuFloodEnable *bool `protobuf:"varint,8,opt,name=mcast_cpu_flood_enable,json=mcastCpuFloodEnable,proto3,oneof" json:"mcast_cpu_flood_enable,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,9,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + MaxLearnedAddresses *uint32 `protobuf:"varint,10,opt,name=max_learned_addresses,json=maxLearnedAddresses,proto3,oneof" json:"max_learned_addresses,omitempty"` + FdbAgingTime *uint32 `protobuf:"varint,11,opt,name=fdb_aging_time,json=fdbAgingTime,proto3,oneof" json:"fdb_aging_time,omitempty"` + FdbUnicastMissPacketAction *PacketAction `protobuf:"varint,12,opt,name=fdb_unicast_miss_packet_action,json=fdbUnicastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_unicast_miss_packet_action,omitempty"` + FdbBroadcastMissPacketAction *PacketAction `protobuf:"varint,13,opt,name=fdb_broadcast_miss_packet_action,json=fdbBroadcastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_broadcast_miss_packet_action,omitempty"` + FdbMulticastMissPacketAction *PacketAction `protobuf:"varint,14,opt,name=fdb_multicast_miss_packet_action,json=fdbMulticastMissPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"fdb_multicast_miss_packet_action,omitempty"` + EcmpDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,15,opt,name=ecmp_default_hash_algorithm,json=ecmpDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"ecmp_default_hash_algorithm,omitempty"` + EcmpDefaultHashSeed *uint32 `protobuf:"varint,16,opt,name=ecmp_default_hash_seed,json=ecmpDefaultHashSeed,proto3,oneof" json:"ecmp_default_hash_seed,omitempty"` + EcmpDefaultHashOffset *uint32 `protobuf:"varint,17,opt,name=ecmp_default_hash_offset,json=ecmpDefaultHashOffset,proto3,oneof" json:"ecmp_default_hash_offset,omitempty"` + EcmpDefaultSymmetricHash *bool `protobuf:"varint,18,opt,name=ecmp_default_symmetric_hash,json=ecmpDefaultSymmetricHash,proto3,oneof" json:"ecmp_default_symmetric_hash,omitempty"` + EcmpHashIpv4 *uint64 `protobuf:"varint,19,opt,name=ecmp_hash_ipv4,json=ecmpHashIpv4,proto3,oneof" json:"ecmp_hash_ipv4,omitempty"` + EcmpHashIpv4InIpv4 *uint64 `protobuf:"varint,20,opt,name=ecmp_hash_ipv4_in_ipv4,json=ecmpHashIpv4InIpv4,proto3,oneof" json:"ecmp_hash_ipv4_in_ipv4,omitempty"` + EcmpHashIpv6 *uint64 `protobuf:"varint,21,opt,name=ecmp_hash_ipv6,json=ecmpHashIpv6,proto3,oneof" json:"ecmp_hash_ipv6,omitempty"` + LagDefaultHashAlgorithm *HashAlgorithm `protobuf:"varint,22,opt,name=lag_default_hash_algorithm,json=lagDefaultHashAlgorithm,proto3,enum=lemming.dataplane.sai.HashAlgorithm,oneof" json:"lag_default_hash_algorithm,omitempty"` + LagDefaultHashSeed *uint32 `protobuf:"varint,23,opt,name=lag_default_hash_seed,json=lagDefaultHashSeed,proto3,oneof" json:"lag_default_hash_seed,omitempty"` + LagDefaultHashOffset *uint32 `protobuf:"varint,24,opt,name=lag_default_hash_offset,json=lagDefaultHashOffset,proto3,oneof" json:"lag_default_hash_offset,omitempty"` + LagDefaultSymmetricHash *bool `protobuf:"varint,25,opt,name=lag_default_symmetric_hash,json=lagDefaultSymmetricHash,proto3,oneof" json:"lag_default_symmetric_hash,omitempty"` + LagHashIpv4 *uint64 `protobuf:"varint,26,opt,name=lag_hash_ipv4,json=lagHashIpv4,proto3,oneof" json:"lag_hash_ipv4,omitempty"` + LagHashIpv4InIpv4 *uint64 `protobuf:"varint,27,opt,name=lag_hash_ipv4_in_ipv4,json=lagHashIpv4InIpv4,proto3,oneof" json:"lag_hash_ipv4_in_ipv4,omitempty"` + LagHashIpv6 *uint64 `protobuf:"varint,28,opt,name=lag_hash_ipv6,json=lagHashIpv6,proto3,oneof" json:"lag_hash_ipv6,omitempty"` + CounterRefreshInterval *uint32 `protobuf:"varint,29,opt,name=counter_refresh_interval,json=counterRefreshInterval,proto3,oneof" json:"counter_refresh_interval,omitempty"` + QosDefaultTc *uint32 `protobuf:"varint,30,opt,name=qos_default_tc,json=qosDefaultTc,proto3,oneof" json:"qos_default_tc,omitempty"` + QosDot1PToTcMap *uint64 `protobuf:"varint,31,opt,name=qos_dot1p_to_tc_map,json=qosDot1pToTcMap,proto3,oneof" json:"qos_dot1p_to_tc_map,omitempty"` + QosDot1PToColorMap *uint64 `protobuf:"varint,32,opt,name=qos_dot1p_to_color_map,json=qosDot1pToColorMap,proto3,oneof" json:"qos_dot1p_to_color_map,omitempty"` + QosDscpToTcMap *uint64 `protobuf:"varint,33,opt,name=qos_dscp_to_tc_map,json=qosDscpToTcMap,proto3,oneof" json:"qos_dscp_to_tc_map,omitempty"` + QosDscpToColorMap *uint64 `protobuf:"varint,34,opt,name=qos_dscp_to_color_map,json=qosDscpToColorMap,proto3,oneof" json:"qos_dscp_to_color_map,omitempty"` + QosTcToQueueMap *uint64 `protobuf:"varint,35,opt,name=qos_tc_to_queue_map,json=qosTcToQueueMap,proto3,oneof" json:"qos_tc_to_queue_map,omitempty"` + QosTcAndColorToDot1PMap *uint64 `protobuf:"varint,36,opt,name=qos_tc_and_color_to_dot1p_map,json=qosTcAndColorToDot1pMap,proto3,oneof" json:"qos_tc_and_color_to_dot1p_map,omitempty"` + QosTcAndColorToDscpMap *uint64 `protobuf:"varint,37,opt,name=qos_tc_and_color_to_dscp_map,json=qosTcAndColorToDscpMap,proto3,oneof" json:"qos_tc_and_color_to_dscp_map,omitempty"` + SwitchShellEnable *bool `protobuf:"varint,38,opt,name=switch_shell_enable,json=switchShellEnable,proto3,oneof" json:"switch_shell_enable,omitempty"` + FastApiEnable *bool `protobuf:"varint,39,opt,name=fast_api_enable,json=fastApiEnable,proto3,oneof" json:"fast_api_enable,omitempty"` + MirrorTc *uint32 `protobuf:"varint,40,opt,name=mirror_tc,json=mirrorTc,proto3,oneof" json:"mirror_tc,omitempty"` + PfcDlrPacketAction *PacketAction `protobuf:"varint,41,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` + PfcTcDldInterval []*UintMap `protobuf:"bytes,42,rep,name=pfc_tc_dld_interval,json=pfcTcDldInterval,proto3" json:"pfc_tc_dld_interval,omitempty"` + PfcTcDlrInterval []*UintMap `protobuf:"bytes,43,rep,name=pfc_tc_dlr_interval,json=pfcTcDlrInterval,proto3" json:"pfc_tc_dlr_interval,omitempty"` + TpidOuterVlan *uint32 `protobuf:"varint,44,opt,name=tpid_outer_vlan,json=tpidOuterVlan,proto3,oneof" json:"tpid_outer_vlan,omitempty"` + TpidInnerVlan *uint32 `protobuf:"varint,45,opt,name=tpid_inner_vlan,json=tpidInnerVlan,proto3,oneof" json:"tpid_inner_vlan,omitempty"` + CrcCheckEnable *bool `protobuf:"varint,46,opt,name=crc_check_enable,json=crcCheckEnable,proto3,oneof" json:"crc_check_enable,omitempty"` + CrcRecalculationEnable *bool `protobuf:"varint,47,opt,name=crc_recalculation_enable,json=crcRecalculationEnable,proto3,oneof" json:"crc_recalculation_enable,omitempty"` + EcnEctThresholdEnable *bool `protobuf:"varint,48,opt,name=ecn_ect_threshold_enable,json=ecnEctThresholdEnable,proto3,oneof" json:"ecn_ect_threshold_enable,omitempty"` + VxlanDefaultRouterMac []byte `protobuf:"bytes,49,opt,name=vxlan_default_router_mac,json=vxlanDefaultRouterMac,proto3,oneof" json:"vxlan_default_router_mac,omitempty"` + VxlanDefaultPort *uint32 `protobuf:"varint,50,opt,name=vxlan_default_port,json=vxlanDefaultPort,proto3,oneof" json:"vxlan_default_port,omitempty"` + UninitDataPlaneOnRemoval *bool `protobuf:"varint,51,opt,name=uninit_data_plane_on_removal,json=uninitDataPlaneOnRemoval,proto3,oneof" json:"uninit_data_plane_on_removal,omitempty"` + TamObjectId []uint64 `protobuf:"varint,52,rep,packed,name=tam_object_id,json=tamObjectId,proto3" json:"tam_object_id,omitempty"` + PreShutdown *bool `protobuf:"varint,53,opt,name=pre_shutdown,json=preShutdown,proto3,oneof" json:"pre_shutdown,omitempty"` + NatZoneCounterObjectId *uint64 `protobuf:"varint,54,opt,name=nat_zone_counter_object_id,json=natZoneCounterObjectId,proto3,oneof" json:"nat_zone_counter_object_id,omitempty"` + NatEnable *bool `protobuf:"varint,55,opt,name=nat_enable,json=natEnable,proto3,oneof" json:"nat_enable,omitempty"` + FirmwareDownloadExecute *bool `protobuf:"varint,56,opt,name=firmware_download_execute,json=firmwareDownloadExecute,proto3,oneof" json:"firmware_download_execute,omitempty"` + FirmwareBroadcastStop *bool `protobuf:"varint,57,opt,name=firmware_broadcast_stop,json=firmwareBroadcastStop,proto3,oneof" json:"firmware_broadcast_stop,omitempty"` + FirmwareVerifyAndInitSwitch *bool `protobuf:"varint,58,opt,name=firmware_verify_and_init_switch,json=firmwareVerifyAndInitSwitch,proto3,oneof" json:"firmware_verify_and_init_switch,omitempty"` + MacsecObjectList []uint64 `protobuf:"varint,59,rep,packed,name=macsec_object_list,json=macsecObjectList,proto3" json:"macsec_object_list,omitempty"` + QosMplsExpToTcMap *uint64 `protobuf:"varint,60,opt,name=qos_mpls_exp_to_tc_map,json=qosMplsExpToTcMap,proto3,oneof" json:"qos_mpls_exp_to_tc_map,omitempty"` + QosMplsExpToColorMap *uint64 `protobuf:"varint,61,opt,name=qos_mpls_exp_to_color_map,json=qosMplsExpToColorMap,proto3,oneof" json:"qos_mpls_exp_to_color_map,omitempty"` + QosTcAndColorToMplsExpMap *uint64 `protobuf:"varint,62,opt,name=qos_tc_and_color_to_mpls_exp_map,json=qosTcAndColorToMplsExpMap,proto3,oneof" json:"qos_tc_and_color_to_mpls_exp_map,omitempty"` + FailoverConfigMode *SwitchFailoverConfigMode `protobuf:"varint,63,opt,name=failover_config_mode,json=failoverConfigMode,proto3,enum=lemming.dataplane.sai.SwitchFailoverConfigMode,oneof" json:"failover_config_mode,omitempty"` + TunnelObjectsList []uint64 `protobuf:"varint,64,rep,packed,name=tunnel_objects_list,json=tunnelObjectsList,proto3" json:"tunnel_objects_list,omitempty"` + PreIngressAcl *uint64 `protobuf:"varint,65,opt,name=pre_ingress_acl,json=preIngressAcl,proto3,oneof" json:"pre_ingress_acl,omitempty"` + QosDscpToForwardingClassMap *uint64 `protobuf:"varint,66,opt,name=qos_dscp_to_forwarding_class_map,json=qosDscpToForwardingClassMap,proto3,oneof" json:"qos_dscp_to_forwarding_class_map,omitempty"` + QosMplsExpToForwardingClassMap *uint64 `protobuf:"varint,67,opt,name=qos_mpls_exp_to_forwarding_class_map,json=qosMplsExpToForwardingClassMap,proto3,oneof" json:"qos_mpls_exp_to_forwarding_class_map,omitempty"` + IpsecObjectId *uint64 `protobuf:"varint,68,opt,name=ipsec_object_id,json=ipsecObjectId,proto3,oneof" json:"ipsec_object_id,omitempty"` + IpsecSaTagTpid *uint32 `protobuf:"varint,69,opt,name=ipsec_sa_tag_tpid,json=ipsecSaTagTpid,proto3,oneof" json:"ipsec_sa_tag_tpid,omitempty"` + EcmpMemberCount *uint32 `protobuf:"varint,70,opt,name=ecmp_member_count,json=ecmpMemberCount,proto3,oneof" json:"ecmp_member_count,omitempty"` + ArsProfile *uint64 `protobuf:"varint,71,opt,name=ars_profile,json=arsProfile,proto3,oneof" json:"ars_profile,omitempty"` + CreditWd *bool `protobuf:"varint,72,opt,name=credit_wd,json=creditWd,proto3,oneof" json:"credit_wd,omitempty"` + CreditWdTimer *uint32 `protobuf:"varint,73,opt,name=credit_wd_timer,json=creditWdTimer,proto3,oneof" json:"credit_wd_timer,omitempty"` + SwitchIsolate *bool `protobuf:"varint,74,opt,name=switch_isolate,json=switchIsolate,proto3,oneof" json:"switch_isolate,omitempty"` + HostifOperStatusUpdateMode *SwitchHostifOperStatusUpdateMode `protobuf:"varint,75,opt,name=hostif_oper_status_update_mode,json=hostifOperStatusUpdateMode,proto3,enum=lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode,oneof" json:"hostif_oper_status_update_mode,omitempty"` + RegFatalSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,76,rep,packed,name=reg_fatal_switch_asic_sdk_health_category,json=regFatalSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_fatal_switch_asic_sdk_health_category,omitempty"` + 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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetSwitchAttributeRequest) Reset() { @@ -2202,6 +2346,69 @@ func (x *SetSwitchAttributeRequest) GetEcmpMemberCount() uint32 { return 0 } +func (x *SetSwitchAttributeRequest) GetArsProfile() uint64 { + if x != nil && x.ArsProfile != nil { + return *x.ArsProfile + } + return 0 +} + +func (x *SetSwitchAttributeRequest) GetCreditWd() bool { + if x != nil && x.CreditWd != nil { + return *x.CreditWd + } + return false +} + +func (x *SetSwitchAttributeRequest) GetCreditWdTimer() uint32 { + if x != nil && x.CreditWdTimer != nil { + return *x.CreditWdTimer + } + return 0 +} + +func (x *SetSwitchAttributeRequest) GetSwitchIsolate() bool { + if x != nil && x.SwitchIsolate != nil { + return *x.SwitchIsolate + } + return false +} + +func (x *SetSwitchAttributeRequest) GetHostifOperStatusUpdateMode() SwitchHostifOperStatusUpdateMode { + if x != nil && x.HostifOperStatusUpdateMode != nil { + return *x.HostifOperStatusUpdateMode + } + return SwitchHostifOperStatusUpdateMode_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED +} + +func (x *SetSwitchAttributeRequest) GetRegFatalSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegFatalSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SetSwitchAttributeRequest) GetRegWarningSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegWarningSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SetSwitchAttributeRequest) GetRegNoticeSwitchAsicSdkHealthCategory() []SwitchAsicSdkHealthCategory { + if x != nil { + return x.RegNoticeSwitchAsicSdkHealthCategory + } + return nil +} + +func (x *SetSwitchAttributeRequest) GetPoeDeviceList() []uint64 { + if x != nil { + return x.PoeDeviceList + } + return nil +} + type SetSwitchAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -3710,7 +3917,7 @@ var file_dataplane_proto_sai_switch_proto_rawDesc = []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, 0xc0, 0x3b, 0x0a, 0x13, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf2, 0x42, 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, @@ -4070,1551 +4277,1728 @@ var file_dataplane_proto_sai_switch_proto_rawDesc = []byte{ 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, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd3, 0x01, 0x48, 0x49, 0x52, 0x0f, 0x65, 0x63, 0x6d, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 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, + 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, 0x54, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd4, 0x01, 0x48, 0x4a, 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, 0x55, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd6, 0x01, 0x48, 0x4b, 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, 0x56, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd7, 0x01, 0x48, 0x4c, 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, 0x57, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd8, 0x01, + 0x48, 0x4d, 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, 0x58, 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, + 0x4e, 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, 0x59, + 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, 0x5a, 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, + 0x5b, 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, 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, - 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, 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, 0x8e, 0x32, 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, + 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, - 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, + 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, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 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, 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, + 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, + 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, 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, 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, 0x94, 0x42, - 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 0x34, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x34, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, + 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, 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, + 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, 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, 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, + 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, + 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, + 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, 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, 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, 0x53, 0x57, 0x49, 0x54, + 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, 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, - 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, + 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, 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, 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, + 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, 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, - 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, + 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, - 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, - 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, 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, 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, + 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, 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, 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, 0xd3, 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, 0x12, 0x22, 0x0a, - 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x02, - 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, - 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x24, - 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x04, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x06, 0x12, 0x32, 0x0a, 0x2e, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 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, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x08, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, - 0x09, 0x12, 0x39, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0a, 0x12, 0x30, 0x0a, 0x2c, + 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, + 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, + 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, 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, 0x0b, 0x12, 0x2f, - 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0c, 0x12, - 0x39, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0d, 0x32, 0xd7, 0x13, 0x0a, 0x06, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 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, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, + 0x54, 0x52, 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, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x03, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x04, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 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, 0x06, 0x12, 0x32, 0x0a, 0x2e, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 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, 0x10, 0x07, 0x12, + 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x08, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 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, 0x09, 0x12, 0x39, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0a, 0x12, + 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, + 0x0b, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0c, 0x12, 0x39, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 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, 0x0d, 0x32, 0xd7, 0x13, + 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, + 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 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, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9e, 0x01, 0x0a, 0x1d, 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, 0x12, 0x3b, 0x2e, 0x6c, 0x65, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9e, 0x01, 0x0a, 0x1d, + 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, 0x12, 0x3b, 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, + 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, 0x1a, 0x3c, 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, 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, 0x1a, 0x3c, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0xaa, 0x01, 0x0a, 0x21, 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, 0x12, - 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, 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, - 0x1a, 0x40, 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, - 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x46, 0x64, 0x62, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x98, 0x01, 0x0a, - 0x1b, 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, 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, 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, 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, - 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 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, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x9b, 0x01, 0x0a, 0x1c, 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, 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, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0xaa, 0x01, 0x0a, + 0x21, 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, 0x12, 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, 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, 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, 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, - 0x22, 0x00, 0x30, 0x01, 0x12, 0xaa, 0x01, 0x0a, 0x21, 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, 0x12, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, + 0x65, 0x73, 0x74, 0x1a, 0x40, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x46, 0x64, + 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 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, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x98, 0x01, 0x0a, 0x1b, 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, 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, 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, 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, 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, 0x1a, 0x40, 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, + 0x61, 0x69, 0x2e, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0x9b, 0x01, 0x0a, 0x1c, 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, 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, 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, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, + 0x61, 0x69, 0x2e, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0xa2, 0x01, 0x0a, 0x1f, 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, 0x12, 0x3d, 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, 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, 0x1a, 0x3c, 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, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x12, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0xaa, 0x01, 0x0a, 0x21, 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, 0x12, 0x3f, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, + 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 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, 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, 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, 0x22, 0x00, 0x30, 0x01, 0x12, 0xa2, 0x01, 0x0a, 0x1f, 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, 0x12, 0x3d, + 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, 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, 0x1a, 0x3c, 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, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 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, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x43, 0x72, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, + 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 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, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 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, 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, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 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, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 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, 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, 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, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 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, 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, 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, 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, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 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, 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, 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, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 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, 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, 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, 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 ( @@ -5680,21 +6064,23 @@ var file_dataplane_proto_sai_switch_proto_goTypes = []any{ (SwitchType)(0), // 45: lemming.dataplane.sai.SwitchType (*SystemPortConfig)(nil), // 46: lemming.dataplane.sai.SystemPortConfig (SwitchFailoverConfigMode)(0), // 47: lemming.dataplane.sai.SwitchFailoverConfigMode - (*SwitchAttribute)(nil), // 48: lemming.dataplane.sai.SwitchAttribute - (SwitchOperStatus)(0), // 49: lemming.dataplane.sai.SwitchOperStatus - (*FdbEventNotificationData)(nil), // 50: lemming.dataplane.sai.FdbEventNotificationData - (*PortOperStatusNotification)(nil), // 51: lemming.dataplane.sai.PortOperStatusNotification - (*HostifPacketAttribute)(nil), // 52: lemming.dataplane.sai.HostifPacketAttribute - (*QueueDeadlockNotificationData)(nil), // 53: lemming.dataplane.sai.QueueDeadlockNotificationData - (*BfdSessionStateChangeNotificationData)(nil), // 54: lemming.dataplane.sai.BfdSessionStateChangeNotificationData - (*TamEventActionAttribute)(nil), // 55: lemming.dataplane.sai.TamEventActionAttribute - (*IpsecSaStatusNotificationData)(nil), // 56: lemming.dataplane.sai.IpsecSaStatusNotificationData - (SwitchStat)(0), // 57: lemming.dataplane.sai.SwitchStat - (TunnelType)(0), // 58: lemming.dataplane.sai.TunnelType - (TunnelEncapEcnMode)(0), // 59: lemming.dataplane.sai.TunnelEncapEcnMode - (TunnelDecapEcnMode)(0), // 60: lemming.dataplane.sai.TunnelDecapEcnMode - (TunnelVxlanUdpSportMode)(0), // 61: lemming.dataplane.sai.TunnelVxlanUdpSportMode - (*SwitchTunnelAttribute)(nil), // 62: lemming.dataplane.sai.SwitchTunnelAttribute + (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 } var file_dataplane_proto_sai_switch_proto_depIdxs = []int32{ 38, // 0: lemming.dataplane.sai.CreateSwitchRequest.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode @@ -5712,77 +6098,85 @@ var file_dataplane_proto_sai_switch_proto_depIdxs = []int32{ 45, // 12: lemming.dataplane.sai.CreateSwitchRequest.type:type_name -> lemming.dataplane.sai.SwitchType 46, // 13: lemming.dataplane.sai.CreateSwitchRequest.system_port_config_list:type_name -> lemming.dataplane.sai.SystemPortConfig 47, // 14: lemming.dataplane.sai.CreateSwitchRequest.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode - 38, // 15: lemming.dataplane.sai.SetSwitchAttributeRequest.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 39, // 16: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 39, // 17: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 39, // 18: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 40, // 19: lemming.dataplane.sai.SetSwitchAttributeRequest.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 40, // 20: lemming.dataplane.sai.SetSwitchAttributeRequest.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 39, // 21: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 41, // 22: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 41, // 23: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 47, // 24: lemming.dataplane.sai.SetSwitchAttributeRequest.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode - 0, // 25: lemming.dataplane.sai.GetSwitchAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchAttr - 48, // 26: lemming.dataplane.sai.GetSwitchAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchAttribute - 49, // 27: lemming.dataplane.sai.SwitchStateChangeNotificationResponse.switch_oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus - 50, // 28: lemming.dataplane.sai.FdbEventNotificationResponse.data:type_name -> lemming.dataplane.sai.FdbEventNotificationData - 51, // 29: lemming.dataplane.sai.PortStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.PortOperStatusNotification - 52, // 30: lemming.dataplane.sai.PacketEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.HostifPacketAttribute - 53, // 31: lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse.data:type_name -> lemming.dataplane.sai.QueueDeadlockNotificationData - 54, // 32: lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.BfdSessionStateChangeNotificationData - 55, // 33: lemming.dataplane.sai.TamEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.TamEventActionAttribute - 56, // 34: lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse.data:type_name -> lemming.dataplane.sai.IpsecSaStatusNotificationData - 57, // 35: lemming.dataplane.sai.GetSwitchStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.SwitchStat - 58, // 36: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 39, // 37: lemming.dataplane.sai.CreateSwitchTunnelRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 59, // 38: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 60, // 39: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 61, // 40: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 39, // 41: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 61, // 42: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 1, // 43: lemming.dataplane.sai.GetSwitchTunnelAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchTunnelAttr - 62, // 44: lemming.dataplane.sai.GetSwitchTunnelAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchTunnelAttribute - 2, // 45: lemming.dataplane.sai.Switch.CreateSwitch:input_type -> lemming.dataplane.sai.CreateSwitchRequest - 4, // 46: lemming.dataplane.sai.Switch.RemoveSwitch:input_type -> lemming.dataplane.sai.RemoveSwitchRequest - 6, // 47: lemming.dataplane.sai.Switch.SetSwitchAttribute:input_type -> lemming.dataplane.sai.SetSwitchAttributeRequest - 10, // 48: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:input_type -> lemming.dataplane.sai.SwitchStateChangeNotificationRequest - 12, // 49: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:input_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationRequest - 14, // 50: lemming.dataplane.sai.Switch.FdbEventNotification:input_type -> lemming.dataplane.sai.FdbEventNotificationRequest - 16, // 51: lemming.dataplane.sai.Switch.PortStateChangeNotification:input_type -> lemming.dataplane.sai.PortStateChangeNotificationRequest - 18, // 52: lemming.dataplane.sai.Switch.PacketEventNotification:input_type -> lemming.dataplane.sai.PacketEventNotificationRequest - 20, // 53: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:input_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationRequest - 22, // 54: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:input_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationRequest - 24, // 55: lemming.dataplane.sai.Switch.TamEventNotification:input_type -> lemming.dataplane.sai.TamEventNotificationRequest - 26, // 56: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:input_type -> lemming.dataplane.sai.IpsecSaStatusChangeNotificationRequest - 8, // 57: lemming.dataplane.sai.Switch.GetSwitchAttribute:input_type -> lemming.dataplane.sai.GetSwitchAttributeRequest - 28, // 58: lemming.dataplane.sai.Switch.GetSwitchStats:input_type -> lemming.dataplane.sai.GetSwitchStatsRequest - 30, // 59: lemming.dataplane.sai.Switch.CreateSwitchTunnel:input_type -> lemming.dataplane.sai.CreateSwitchTunnelRequest - 32, // 60: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:input_type -> lemming.dataplane.sai.RemoveSwitchTunnelRequest - 34, // 61: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeRequest - 36, // 62: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeRequest - 3, // 63: lemming.dataplane.sai.Switch.CreateSwitch:output_type -> lemming.dataplane.sai.CreateSwitchResponse - 5, // 64: lemming.dataplane.sai.Switch.RemoveSwitch:output_type -> lemming.dataplane.sai.RemoveSwitchResponse - 7, // 65: lemming.dataplane.sai.Switch.SetSwitchAttribute:output_type -> lemming.dataplane.sai.SetSwitchAttributeResponse - 11, // 66: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:output_type -> lemming.dataplane.sai.SwitchStateChangeNotificationResponse - 13, // 67: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:output_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationResponse - 15, // 68: lemming.dataplane.sai.Switch.FdbEventNotification:output_type -> lemming.dataplane.sai.FdbEventNotificationResponse - 17, // 69: lemming.dataplane.sai.Switch.PortStateChangeNotification:output_type -> lemming.dataplane.sai.PortStateChangeNotificationResponse - 19, // 70: lemming.dataplane.sai.Switch.PacketEventNotification:output_type -> lemming.dataplane.sai.PacketEventNotificationResponse - 21, // 71: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:output_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse - 23, // 72: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:output_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse - 25, // 73: lemming.dataplane.sai.Switch.TamEventNotification:output_type -> lemming.dataplane.sai.TamEventNotificationResponse - 27, // 74: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:output_type -> lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse - 9, // 75: lemming.dataplane.sai.Switch.GetSwitchAttribute:output_type -> lemming.dataplane.sai.GetSwitchAttributeResponse - 29, // 76: lemming.dataplane.sai.Switch.GetSwitchStats:output_type -> lemming.dataplane.sai.GetSwitchStatsResponse - 31, // 77: lemming.dataplane.sai.Switch.CreateSwitchTunnel:output_type -> lemming.dataplane.sai.CreateSwitchTunnelResponse - 33, // 78: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:output_type -> lemming.dataplane.sai.RemoveSwitchTunnelResponse - 35, // 79: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeResponse - 37, // 80: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeResponse - 63, // [63:81] is the sub-list for method output_type - 45, // [45:63] is the sub-list for method input_type - 45, // [45:45] is the sub-list for extension type_name - 45, // [45:45] is the sub-list for extension extendee - 0, // [0:45] is the sub-list for field type_name + 48, // 15: lemming.dataplane.sai.CreateSwitchRequest.hostif_oper_status_update_mode:type_name -> lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode + 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 } func init() { file_dataplane_proto_sai_switch_proto_init() } diff --git a/dataplane/proto/sai/switch.proto b/dataplane/proto/sai/switch.proto index 8789a0fd..30eff807 100644 --- a/dataplane/proto/sai/switch.proto +++ b/dataplane/proto/sai/switch.proto @@ -7,600 +7,609 @@ 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_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; } 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]; + 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]; } 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]; -} - -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]; +} + +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 7ac25d95..0dff65c0 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.pb.go b/dataplane/proto/sai/tam.pb.go index f26a0b53..a4e96808 100644 --- a/dataplane/proto/sai/tam.pb.go +++ b/dataplane/proto/sai/tam.pb.go @@ -137,6 +137,7 @@ const ( TamReportAttr_TAM_REPORT_ATTR_REPORT_INTERVAL TamReportAttr = 6 TamReportAttr_TAM_REPORT_ATTR_ENTERPRISE_NUMBER TamReportAttr = 7 TamReportAttr_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL TamReportAttr = 8 + TamReportAttr_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT TamReportAttr = 9 ) // Enum value maps for TamReportAttr. @@ -151,6 +152,7 @@ var ( 6: "TAM_REPORT_ATTR_REPORT_INTERVAL", 7: "TAM_REPORT_ATTR_ENTERPRISE_NUMBER", 8: "TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL", + 9: "TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT", } TamReportAttr_value = map[string]int32{ "TAM_REPORT_ATTR_UNSPECIFIED": 0, @@ -162,6 +164,7 @@ var ( "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, } ) @@ -394,6 +397,7 @@ const ( TamTelTypeAttr_TAM_TEL_TYPE_ATTR_DSCP_VALUE TamTelTypeAttr = 14 TamTelTypeAttr_TAM_TEL_TYPE_ATTR_MATH_FUNC TamTelTypeAttr = 15 TamTelTypeAttr_TAM_TEL_TYPE_ATTR_REPORT_ID TamTelTypeAttr = 16 + TamTelTypeAttr_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST TamTelTypeAttr = 17 ) // Enum value maps for TamTelTypeAttr. @@ -416,6 +420,7 @@ var ( 14: "TAM_TEL_TYPE_ATTR_DSCP_VALUE", 15: "TAM_TEL_TYPE_ATTR_MATH_FUNC", 16: "TAM_TEL_TYPE_ATTR_REPORT_ID", + 17: "TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST", } TamTelTypeAttr_value = map[string]int32{ "TAM_TEL_TYPE_ATTR_UNSPECIFIED": 0, @@ -435,6 +440,7 @@ var ( "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, } ) @@ -589,6 +595,7 @@ const ( TamCollectorAttr_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE TamCollectorAttr = 5 TamCollectorAttr_TAM_COLLECTOR_ATTR_TRANSPORT TamCollectorAttr = 6 TamCollectorAttr_TAM_COLLECTOR_ATTR_DSCP_VALUE TamCollectorAttr = 7 + TamCollectorAttr_TAM_COLLECTOR_ATTR_HOSTIF_TRAP TamCollectorAttr = 8 ) // Enum value maps for TamCollectorAttr. @@ -602,6 +609,7 @@ var ( 5: "TAM_COLLECTOR_ATTR_TRUNCATE_SIZE", 6: "TAM_COLLECTOR_ATTR_TRANSPORT", 7: "TAM_COLLECTOR_ATTR_DSCP_VALUE", + 8: "TAM_COLLECTOR_ATTR_HOSTIF_TRAP", } TamCollectorAttr_value = map[string]int32{ "TAM_COLLECTOR_ATTR_UNSPECIFIED": 0, @@ -612,6 +620,7 @@ var ( "TAM_COLLECTOR_ATTR_TRUNCATE_SIZE": 5, "TAM_COLLECTOR_ATTR_TRANSPORT": 6, "TAM_COLLECTOR_ATTR_DSCP_VALUE": 7, + "TAM_COLLECTOR_ATTR_HOSTIF_TRAP": 8, } ) @@ -749,6 +758,61 @@ func (TamEventAttr) EnumDescriptor() ([]byte, []int) { return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{10} } +type TamCounterSubscriptionAttr int32 + +const ( + TamCounterSubscriptionAttr_TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED TamCounterSubscriptionAttr = 0 + TamCounterSubscriptionAttr_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE TamCounterSubscriptionAttr = 1 + TamCounterSubscriptionAttr_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID TamCounterSubscriptionAttr = 2 + TamCounterSubscriptionAttr_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID TamCounterSubscriptionAttr = 3 + TamCounterSubscriptionAttr_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL TamCounterSubscriptionAttr = 4 +) + +// Enum value maps for TamCounterSubscriptionAttr. +var ( + TamCounterSubscriptionAttr_name = map[int32]string{ + 0: "TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED", + 1: "TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE", + 2: "TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID", + 3: "TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID", + 4: "TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL", + } + TamCounterSubscriptionAttr_value = map[string]int32{ + "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, + } +) + +func (x TamCounterSubscriptionAttr) Enum() *TamCounterSubscriptionAttr { + p := new(TamCounterSubscriptionAttr) + *p = x + return p +} + +func (x TamCounterSubscriptionAttr) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TamCounterSubscriptionAttr) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_tam_proto_enumTypes[11].Descriptor() +} + +func (TamCounterSubscriptionAttr) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_tam_proto_enumTypes[11] +} + +func (x TamCounterSubscriptionAttr) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TamCounterSubscriptionAttr.Descriptor instead. +func (TamCounterSubscriptionAttr) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{11} +} + type CreateTamRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` @@ -1520,6 +1584,7 @@ type CreateTamReportRequest struct { ReportInterval *uint32 `protobuf:"varint,7,opt,name=report_interval,json=reportInterval,proto3,oneof" json:"report_interval,omitempty"` EnterpriseNumber *uint32 `protobuf:"varint,8,opt,name=enterprise_number,json=enterpriseNumber,proto3,oneof" json:"enterprise_number,omitempty"` TemplateReportInterval *uint32 `protobuf:"varint,9,opt,name=template_report_interval,json=templateReportInterval,proto3,oneof" json:"template_report_interval,omitempty"` + ReportIntervalUnit *TamReportIntervalUnit `protobuf:"varint,10,opt,name=report_interval_unit,json=reportIntervalUnit,proto3,enum=lemming.dataplane.sai.TamReportIntervalUnit,oneof" json:"report_interval_unit,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1617,6 +1682,13 @@ func (x *CreateTamReportRequest) GetTemplateReportInterval() uint32 { return 0 } +func (x *CreateTamReportRequest) GetReportIntervalUnit() TamReportIntervalUnit { + if x != nil && x.ReportIntervalUnit != nil { + return *x.ReportIntervalUnit + } + return TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED +} + type CreateTamReportResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1749,6 +1821,7 @@ type SetTamReportAttributeRequest struct { ReportInterval *uint32 `protobuf:"varint,4,opt,name=report_interval,json=reportInterval,proto3,oneof" json:"report_interval,omitempty"` EnterpriseNumber *uint32 `protobuf:"varint,5,opt,name=enterprise_number,json=enterpriseNumber,proto3,oneof" json:"enterprise_number,omitempty"` TemplateReportInterval *uint32 `protobuf:"varint,6,opt,name=template_report_interval,json=templateReportInterval,proto3,oneof" json:"template_report_interval,omitempty"` + ReportIntervalUnit *TamReportIntervalUnit `protobuf:"varint,7,opt,name=report_interval_unit,json=reportIntervalUnit,proto3,enum=lemming.dataplane.sai.TamReportIntervalUnit,oneof" json:"report_interval_unit,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1825,6 +1898,13 @@ func (x *SetTamReportAttributeRequest) GetTemplateReportInterval() uint32 { return 0 } +func (x *SetTamReportAttributeRequest) GetReportIntervalUnit() TamReportIntervalUnit { + if x != nil && x.ReportIntervalUnit != nil { + return *x.ReportIntervalUnit + } + return TamReportIntervalUnit_TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED +} + type SetTamReportAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -4495,6 +4575,7 @@ type CreateTamCollectorRequest struct { TruncateSize *uint32 `protobuf:"varint,6,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` Transport *uint64 `protobuf:"varint,7,opt,name=transport,proto3,oneof" json:"transport,omitempty"` DscpValue *uint32 `protobuf:"varint,8,opt,name=dscp_value,json=dscpValue,proto3,oneof" json:"dscp_value,omitempty"` + HostifTrap *uint64 `protobuf:"varint,9,opt,name=hostif_trap,json=hostifTrap,proto3,oneof" json:"hostif_trap,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4585,6 +4666,13 @@ func (x *CreateTamCollectorRequest) GetDscpValue() uint32 { return 0 } +func (x *CreateTamCollectorRequest) GetHostifTrap() uint64 { + if x != nil && x.HostifTrap != nil { + return *x.HostifTrap + } + return 0 +} + type CreateTamCollectorResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -4719,6 +4807,7 @@ type SetTamCollectorAttributeRequest struct { TruncateSize *uint32 `protobuf:"varint,6,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` Transport *uint64 `protobuf:"varint,7,opt,name=transport,proto3,oneof" json:"transport,omitempty"` DscpValue *uint32 `protobuf:"varint,8,opt,name=dscp_value,json=dscpValue,proto3,oneof" json:"dscp_value,omitempty"` + HostifTrap *uint64 `protobuf:"varint,9,opt,name=hostif_trap,json=hostifTrap,proto3,oneof" json:"hostif_trap,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4809,6 +4898,13 @@ func (x *SetTamCollectorAttributeRequest) GetDscpValue() uint32 { return 0 } +func (x *SetTamCollectorAttributeRequest) GetHostifTrap() uint64 { + if x != nil && x.HostifTrap != nil { + return *x.HostifTrap + } + return 0 +} + type SetTamCollectorAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -5717,6 +5813,302 @@ func (x *GetTamEventAttributeResponse) GetAttr() *TamEventAttribute { return nil } +type CreateTamCounterSubscriptionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + TelType *uint64 `protobuf:"varint,2,opt,name=tel_type,json=telType,proto3,oneof" json:"tel_type,omitempty"` + ObjectId *uint64 `protobuf:"varint,3,opt,name=object_id,json=objectId,proto3,oneof" json:"object_id,omitempty"` + StatId *uint32 `protobuf:"varint,4,opt,name=stat_id,json=statId,proto3,oneof" json:"stat_id,omitempty"` + Label *uint64 `protobuf:"varint,5,opt,name=label,proto3,oneof" json:"label,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateTamCounterSubscriptionRequest) Reset() { + *x = CreateTamCounterSubscriptionRequest{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTamCounterSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTamCounterSubscriptionRequest) ProtoMessage() {} + +func (x *CreateTamCounterSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[88] + 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 CreateTamCounterSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*CreateTamCounterSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{88} +} + +func (x *CreateTamCounterSubscriptionRequest) GetSwitch() uint64 { + if x != nil { + return x.Switch + } + return 0 +} + +func (x *CreateTamCounterSubscriptionRequest) GetTelType() uint64 { + if x != nil && x.TelType != nil { + return *x.TelType + } + return 0 +} + +func (x *CreateTamCounterSubscriptionRequest) GetObjectId() uint64 { + if x != nil && x.ObjectId != nil { + return *x.ObjectId + } + return 0 +} + +func (x *CreateTamCounterSubscriptionRequest) GetStatId() uint32 { + if x != nil && x.StatId != nil { + return *x.StatId + } + return 0 +} + +func (x *CreateTamCounterSubscriptionRequest) GetLabel() uint64 { + if x != nil && x.Label != nil { + return *x.Label + } + return 0 +} + +type CreateTamCounterSubscriptionResponse 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 *CreateTamCounterSubscriptionResponse) Reset() { + *x = CreateTamCounterSubscriptionResponse{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTamCounterSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTamCounterSubscriptionResponse) ProtoMessage() {} + +func (x *CreateTamCounterSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[89] + 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 CreateTamCounterSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*CreateTamCounterSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{89} +} + +func (x *CreateTamCounterSubscriptionResponse) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveTamCounterSubscriptionRequest 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 *RemoveTamCounterSubscriptionRequest) Reset() { + *x = RemoveTamCounterSubscriptionRequest{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveTamCounterSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveTamCounterSubscriptionRequest) ProtoMessage() {} + +func (x *RemoveTamCounterSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[90] + 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 RemoveTamCounterSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*RemoveTamCounterSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{90} +} + +func (x *RemoveTamCounterSubscriptionRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveTamCounterSubscriptionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RemoveTamCounterSubscriptionResponse) Reset() { + *x = RemoveTamCounterSubscriptionResponse{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveTamCounterSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveTamCounterSubscriptionResponse) ProtoMessage() {} + +func (x *RemoveTamCounterSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[91] + 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 RemoveTamCounterSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*RemoveTamCounterSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{91} +} + +type GetTamCounterSubscriptionAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + AttrType []TamCounterSubscriptionAttr `protobuf:"varint,2,rep,packed,name=attr_type,json=attrType,proto3,enum=lemming.dataplane.sai.TamCounterSubscriptionAttr" json:"attr_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTamCounterSubscriptionAttributeRequest) Reset() { + *x = GetTamCounterSubscriptionAttributeRequest{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTamCounterSubscriptionAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTamCounterSubscriptionAttributeRequest) ProtoMessage() {} + +func (x *GetTamCounterSubscriptionAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[92] + 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 GetTamCounterSubscriptionAttributeRequest.ProtoReflect.Descriptor instead. +func (*GetTamCounterSubscriptionAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{92} +} + +func (x *GetTamCounterSubscriptionAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *GetTamCounterSubscriptionAttributeRequest) GetAttrType() []TamCounterSubscriptionAttr { + if x != nil { + return x.AttrType + } + return nil +} + +type GetTamCounterSubscriptionAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Attr *TamCounterSubscriptionAttribute `protobuf:"bytes,1,opt,name=attr,proto3" json:"attr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTamCounterSubscriptionAttributeResponse) Reset() { + *x = GetTamCounterSubscriptionAttributeResponse{} + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTamCounterSubscriptionAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTamCounterSubscriptionAttributeResponse) ProtoMessage() {} + +func (x *GetTamCounterSubscriptionAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_tam_proto_msgTypes[93] + 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 GetTamCounterSubscriptionAttributeResponse.ProtoReflect.Descriptor instead. +func (*GetTamCounterSubscriptionAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_tam_proto_rawDescGZIP(), []int{93} +} + +func (x *GetTamCounterSubscriptionAttributeResponse) GetAttr() *TamCounterSubscriptionAttribute { + if x != nil { + return x.Attr + } + return nil +} + var File_dataplane_proto_sai_tam_proto protoreflect.FileDescriptor var file_dataplane_proto_sai_tam_proto_rawDesc = []byte{ @@ -5826,7 +6218,7 @@ var file_dataplane_proto_sai_tam_proto_rawDesc = []byte{ 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, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x22, 0xb8, 0x05, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x74, 0x74, 0x72, 0x22, 0xbe, 0x06, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, @@ -5860,1133 +6252,1209 @@ var file_dataplane_proto_sai_tam_proto_rawDesc = []byte{ 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x09, 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, 0x3a, - 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4a, 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, 0x22, 0x2b, - 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xab, 0x03, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, - 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, 0x45, 0x0a, 0x04, 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, 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, 0x21, 0x0a, 0x05, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, - 0x34, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x02, 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, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 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, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 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, + 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, 0x0a, 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, 0x3a, 0x06, 0xa0, 0xa9, + 0x90, 0xad, 0x0f, 0x4a, 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, 0x2b, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, + 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x04, 0x0a, 0x1c, 0x53, 0x65, 0x74, + 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x45, 0x0a, 0x04, 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, 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, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x05, 0x71, 0x75, 0x6f, + 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x02, 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, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, + 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, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x04, 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, 0x07, 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, 0x05, 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, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, - 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, - 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, - 0x52, 0x65, 0x70, 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, 0x54, 0x61, - 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xb8, 0x03, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 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, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, - 0x61, 0x72, 0x6b, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 0x06, 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, 0x07, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4b, - 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, 0x33, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x32, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 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, 0x1f, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x22, 0xb8, 0x03, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, + 0x02, 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, 0x03, 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, 0x04, + 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, 0x05, 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, 0x06, 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, 0x07, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4b, 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, 0x33, 0x0a, + 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x32, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 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, 0x21, 0x0a, 0x1f, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb0, 0x03, - 0x0a, 0x24, 0x53, 0x65, 0x74, 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, 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, 0x68, 0x69, 0x67, 0x68, - 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 0x06, 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, 0x07, 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, 0x27, 0x0a, 0x25, 0x53, 0x65, 0x74, 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x24, 0x47, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb0, 0x03, 0x0a, 0x24, 0x53, 0x65, 0x74, 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, 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, 0x49, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 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, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x6e, 0x0a, 0x25, 0x47, 0x65, 0x74, 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, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x18, 0x01, 0x20, 0x01, 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, 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, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, - 0x97, 0x10, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, - 0x42, 0x0a, 0x04, 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, 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, 0x03, 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, 0x04, 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, 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, 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, 0x06, 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, 0x07, 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, - 0x08, 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, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 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, 0x0d, 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, 0x0e, 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, 0x0f, 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, 0x10, 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, 0x11, - 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, 0x12, 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, 0x13, 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, 0x14, - 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, 0x15, 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, 0x16, 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, 0x17, 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, 0x18, 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, 0x19, 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, 0x1a, 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, 0x1b, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x54, 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, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, 0x27, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, - 0x49, 0x6e, 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, 0x16, 0x0a, 0x14, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcd, 0x0a, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, - 0x6e, 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, 0x33, 0x0a, 0x0f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6f, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x01, 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, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x02, 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, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x03, 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, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x04, 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, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x05, 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, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x06, 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, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x10, 0x48, 0x07, 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, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, - 0x48, 0x08, 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, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x12, 0x48, 0x09, 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, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x13, 0x48, 0x0a, 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, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, - 0x48, 0x0b, 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, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, - 0x0c, 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, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x0d, 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, 0x10, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x0e, 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, 0x11, - 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, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x0f, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, - 0x6e, 0x63, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 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, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, - 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 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, 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, 0x61, 0x6d, - 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xb6, 0x0c, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, - 0x62, 0x0a, 0x12, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x5f, 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, 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, 0x03, 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, 0x04, 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, 0x05, - 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, 0x06, 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, 0x07, 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, 0x08, 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, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 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, 0x0d, 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, 0x0e, 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, 0x0f, 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, 0x10, 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, 0x11, 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, 0x3a, 0x06, 0xa0, - 0xa9, 0x90, 0xad, 0x0f, 0x4c, 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, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0e, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, + 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, + 0x06, 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, 0x07, 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, 0x27, 0x0a, 0x25, + 0x53, 0x65, 0x74, 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, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 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, 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, 0x49, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x54, 0x61, 0x6d, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6e, 0x0a, 0x25, 0x47, + 0x65, 0x74, 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, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, + 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, 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, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x97, 0x10, 0x0a, 0x13, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, 0x42, 0x0a, 0x04, 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, 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, 0x03, 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, 0x04, 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, 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, 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, 0x06, 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, 0x07, 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, 0x08, 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, 0x09, + 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, 0x0a, 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, + 0x0b, 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, 0x0c, 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, 0x0d, + 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, 0x0e, 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, 0x0f, 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, 0x10, 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, 0x11, 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, 0x12, 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, 0x13, 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, 0x14, 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, 0x15, 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, 0x16, 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, + 0x17, 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, 0x18, 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, 0x19, 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, 0x1a, + 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, 0x1b, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x54, 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, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x6d, 0x49, 0x6e, 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, - 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfb, 0x0a, 0x0a, 0x1d, - 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, + 0x27, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xcd, 0x0a, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, 0x33, 0x0a, 0x0f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6f, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x76, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0a, 0x48, 0x01, 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, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x02, 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, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0c, 0x48, 0x03, 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, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x04, 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, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, + 0x48, 0x05, 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, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0f, 0x48, 0x06, 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, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x07, + 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, 0x0a, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x08, 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, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, + 0x48, 0x09, 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, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x0a, + 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, 0x0d, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x0b, 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, 0x0e, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x0c, 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, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x16, 0x48, 0x0d, 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, 0x10, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x0e, 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, 0x11, 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, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x19, 0x48, 0x0f, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x88, 0x01, + 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 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, + 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 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, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xb6, 0x0c, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 0x62, 0x0a, 0x12, 0x74, + 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 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, + 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, 0x00, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x53, 0x77, 0x69, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 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, 0x01, 0x52, 0x15, 0x73, 0x77, + 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 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, 0x02, 0x52, 0x1c, 0x73, 0x77, 0x69, 0x74, + 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 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, 0x03, 0x52, 0x1b, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, + 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, 0x04, 0x52, 0x1d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x61, 0x74, 0x73, 0x18, 0x07, 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, 0x05, 0x52, 0x1c, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 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, 0x06, 0x52, 0x14, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x09, 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, 0x07, 0x52, 0x17, 0x73, 0x77, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0a, 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, 0x08, 0x52, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0b, 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, 0x09, 0x52, 0x24, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0c, + 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, 0x0a, 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, 0x0b, 0x52, 0x08, 0x6e, 0x65, + 0x63, 0x5f, 0x71, 0x18, 0x0d, 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, 0x0e, 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, 0x0c, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, + 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 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, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x88, 0x01, 0x01, 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, + 0x6e, 0x63, 0x18, 0x10, 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, 0x11, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, + 0x4c, 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, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, + 0x54, 0x79, 0x70, 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, 0x2b, + 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, + 0x70, 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, 0x1a, 0x0a, 0x18, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfb, 0x0a, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x54, + 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 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, 0x00, 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, 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, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, - 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, - 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, - 0x61, 0x74, 0x74, 0x72, 0x22, 0xbe, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 0x5b, 0x0a, 0x0e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 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, 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, 0x03, 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, 0x04, 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, 0x05, - 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, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, - 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4d, 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, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, - 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 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, 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, 0x00, 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, 0x01, 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, 0x02, 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, 0x03, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, - 0x01, 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, 0x22, 0x0a, 0x20, 0x53, - 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 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, 0x01, 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, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, + 0x06, 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, 0x07, 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, 0x08, 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, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 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, 0x0d, 0x52, 0x08, + 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x88, 0x01, 0x01, 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, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, + 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x22, 0xbe, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 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, 0x5b, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 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, 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, + 0x03, 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, 0x04, 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, 0x05, 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, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, + 0x90, 0xad, 0x0f, 0x4d, 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, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 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, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 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, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc6, + 0x02, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 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, - 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x22, 0xe4, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 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, 0x2a, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x79, + 0x03, 0x6f, 0x69, 0x64, 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, 0x00, + 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, 0x01, 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, 0x02, 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, 0x03, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 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, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 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, 0x54, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, + 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xe4, 0x02, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 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, 0x2a, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 0x3a, 0x06, 0xa0, + 0xa9, 0x90, 0xad, 0x0f, 0x4e, 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, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xad, 0x02, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 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, 0x2a, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4e, 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, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x2a, 0x0a, 0x0d, 0x74, 0x61, - 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 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, 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, + 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, - 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, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, + 0x22, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, - 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 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, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, - 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd9, 0x03, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, - 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 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, 0x12, 0x29, 0x0a, - 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 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, 0x08, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4f, 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, 0x22, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, - 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xd1, 0x03, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, - 0x6c, 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, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x97, 0x04, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x22, 0x0a, 0x06, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, 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, 0x12, 0x29, 0x0a, 0x09, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 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, 0x08, 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, + 0x09, 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, 0x3a, 0x06, + 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x4f, 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, - 0x18, 0x05, 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, 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, 0x12, 0x29, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x07, 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, - 0x08, 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, 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, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, - 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, - 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xc4, 0x01, 0x0a, 0x1b, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 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, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x50, 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, 0x30, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 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, 0x2f, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, + 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, + 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, + 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, + 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, + 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, 0x1c, + 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8f, 0x04, 0x0a, + 0x1f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 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, + 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, + 0x12, 0x29, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 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, 0x08, 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, 0x09, 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, 0x22, + 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, + 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, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, + 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, + 0x20, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0xc4, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 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, 0x2c, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x3a, 0x06, + 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x50, 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, 0x30, 0x0a, 0x1c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 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, 0x2f, 0x0a, 0x1b, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, + 0x74, 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, 0x1e, 0x0a, + 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x01, + 0x0a, 0x21, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, + 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, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 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, 0x2c, 0x0a, - 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x03, - 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, 0x24, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x21, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 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, 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, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x22, 0x47, 0x65, 0x74, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x22, 0xd2, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 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, 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, 0x03, 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, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x24, 0x0a, 0x22, + 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x41, 0x63, 0x74, 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, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x68, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xd2, 0x02, 0x0a, 0x15, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 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, 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, 0x03, 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, 0x04, + 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, 0x05, 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, 0x06, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x51, 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, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 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, 0x29, 0x0a, 0x15, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 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, 0x29, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 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, 0x06, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, - 0x0f, 0x51, 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, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, - 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, - 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x53, 0x65, + 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, 0x05, 0x48, 0x01, 0x52, 0x09, 0x64, 0x73, + 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 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, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 0x29, 0x0a, 0x09, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 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, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x01, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 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, - 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, 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, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, - 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x2a, 0xaf, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x12, 0x18, 0x0a, 0x14, - 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, - 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, - 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x54, - 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, - 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x04, 0x2a, 0x64, 0x0a, 0x0f, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, - 0x63, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x4d, 0x41, 0x54, - 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x4d, - 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, - 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x2a, 0xda, 0x02, 0x0a, 0x0d, 0x54, 0x61, 0x6d, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, - 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, - 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, - 0x41, 0x4d, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x42, 0x49, 0x4e, - 0x53, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, - 0x5f, 0x42, 0x49, 0x4e, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x10, 0x03, 0x12, - 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, - 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x54, + 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x91, 0x02, 0x0a, 0x23, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, 0x26, 0x0a, 0x08, 0x74, 0x65, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x6c, 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, 0x38, 0x0a, 0x24, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 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, 0x37, 0x0a, 0x23, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 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, + 0x26, 0x0a, 0x24, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 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, 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, 0x4e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 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, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, + 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x2a, 0x47, 0x65, 0x74, 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, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 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, 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, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x2a, 0xaf, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x12, 0x18, 0x0a, + 0x14, 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, + 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, + 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, + 0x54, 0x41, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, + 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x04, 0x2a, 0x64, 0x0a, 0x0f, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, + 0x6e, 0x63, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x4d, 0x41, + 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, + 0x4d, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, + 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x2a, 0x84, 0x03, 0x0a, 0x0d, 0x54, 0x61, + 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x54, + 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, + 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, + 0x52, 0x41, 0x4d, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x42, 0x49, + 0x4e, 0x53, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, + 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x10, 0x03, + 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x06, - 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x50, 0x52, 0x49, 0x53, 0x45, 0x5f, 0x4e, - 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x07, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4c, - 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x56, 0x41, 0x4c, 0x10, 0x08, 0x2a, 0xae, 0x02, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, - 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, - 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, - 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, - 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, - 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x54, - 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, - 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x42, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x55, - 0x45, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, + 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, + 0x06, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x50, 0x52, 0x49, 0x53, 0x45, 0x5f, + 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x07, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, + 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4d, 0x50, + 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x56, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x10, 0x09, + 0x2a, 0xae, 0x02, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, + 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, + 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, + 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, + 0x57, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x02, 0x12, 0x24, 0x0a, + 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, + 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, + 0x59, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x55, 0x4e, 0x49, 0x54, 0x10, 0x06, 0x2a, 0xb1, 0x07, 0x0a, 0x0a, 0x54, 0x61, 0x6d, 0x49, 0x6e, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 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, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, - 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, - 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, - 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x42, 0x31, 0x10, 0x05, 0x12, - 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x42, 0x32, - 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, - 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x4c, - 0x49, 0x4e, 0x45, 0x10, 0x08, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, - 0x43, 0x45, 0x5f, 0x4c, 0x33, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x09, - 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0a, 0x12, - 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0b, 0x12, - 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x34, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x54, - 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x4e, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0d, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, + 0x52, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x42, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x12, 0x21, + 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, + 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x10, + 0x06, 0x2a, 0xb1, 0x07, 0x0a, 0x0a, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 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, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x10, + 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, + 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x42, 0x31, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, + 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, + 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x42, 0x32, 0x10, 0x06, 0x12, 0x28, 0x0a, + 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, + 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x08, + 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x33, + 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, + 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0b, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, + 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x34, 0x5f, 0x49, 0x4e, + 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x49, + 0x54, 0x4d, 0x41, 0x50, 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x0e, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0f, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x56, 0x45, - 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x10, 0x12, 0x24, 0x0a, - 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, - 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, - 0x59, 0x10, 0x11, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x12, 0x12, - 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4d, 0x41, 0x58, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x12, - 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, - 0x4c, 0x10, 0x16, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 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, - 0x17, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x18, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x19, 0x12, 0x1a, - 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x1a, 0x2a, 0x92, 0x06, 0x0a, 0x0e, 0x54, - 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, - 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, - 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, - 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, - 0x49, 0x46, 0x49, 0x45, 0x52, 0x10, 0x02, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x41, 0x4d, 0x5f, 0x54, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x03, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x41, 0x4d, 0x5f, 0x54, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x04, 0x12, - 0x35, 0x0a, 0x31, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, - 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, - 0x4c, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x06, 0x12, - 0x36, 0x0a, 0x32, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x07, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x4d, 0x5f, 0x54, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x4d, 0x55, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x10, 0x08, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, - 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x4d, 0x5f, - 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x54, - 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x3e, 0x0a, 0x3a, 0x54, 0x41, + 0x46, 0x52, 0x41, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x0d, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, + 0x53, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0e, 0x12, 0x23, 0x0a, 0x1f, + 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, + 0x0f, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, + 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x10, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, + 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x4e, 0x43, 0x59, + 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x11, 0x12, 0x1a, + 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x12, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, + 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x48, + 0x4f, 0x50, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, + 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, + 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x50, 0x41, + 0x43, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x50, 0x41, + 0x43, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x16, 0x12, 0x2c, + 0x0a, 0x28, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 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, 0x17, 0x12, 0x1f, 0x0a, 0x1b, + 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x4c, + 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x18, 0x12, 0x1a, 0x0a, + 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, + 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x19, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, + 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x49, 0x44, 0x10, 0x1a, 0x2a, 0xc3, 0x06, 0x0a, 0x0e, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, + 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x10, 0x03, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x04, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, + 0x05, 0x12, 0x37, 0x0a, 0x33, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, 0x06, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x51, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x55, + 0x54, 0x50, 0x55, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x10, 0x07, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x4d, 0x55, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x10, + 0x08, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x3e, 0x0a, 0x3a, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, + 0x43, 0x5f, 0x51, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0d, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, + 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x43, 0x50, + 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0e, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, + 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, + 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x0f, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, + 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, + 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x10, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4e, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0d, 0x12, 0x20, 0x0a, 0x1c, 0x54, - 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0e, 0x12, 0x1f, 0x0a, - 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x0f, 0x12, 0x1f, - 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x10, 0x2a, - 0xe7, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 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, 0x54, 0x41, 0x4d, 0x5f, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, - 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, - 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, - 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x05, 0x2a, 0xd9, 0x01, 0x0a, 0x10, 0x54, 0x61, - 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, - 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, - 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, - 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, - 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, - 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x11, 0x2a, 0xe7, 0x01, 0x0a, 0x10, + 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 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, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, + 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x03, 0x12, 0x2a, 0x0a, + 0x26, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, + 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4d, 0x54, 0x55, 0x10, 0x05, 0x2a, 0xd9, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x56, 0x41, 0x4c, 0x10, 0x04, 0x2a, 0xab, 0x02, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, + 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, + 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, + 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x55, 0x4e, 0x49, 0x54, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, + 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x50, + 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, + 0x04, 0x2a, 0xcf, 0x02, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, + 0x4c, 0x4c, 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, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 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, 0x1d, - 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x1d, 0x0a, - 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, + 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, + 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, + 0x4f, 0x43, 0x41, 0x4c, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, + 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x44, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, + 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x55, 0x4e, 0x43, + 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, + 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x03, 0x12, 0x28, - 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, - 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x52, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x05, 0x12, 0x20, - 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, - 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, - 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, - 0x45, 0x10, 0x07, 0x2a, 0x8d, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x52, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x07, 0x12, + 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x10, 0x08, 0x2a, 0x8d, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, @@ -7007,368 +7475,414 @@ var file_dataplane_proto_sai_tam_proto_rawDesc = []byte{ 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x32, 0xcb, 0x2c, - 0x0a, 0x03, 0x54, 0x61, 0x6d, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x6d, 0x12, 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, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x54, 0x61, 0x6d, 0x12, 0x27, 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, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x2a, 0xf8, 0x01, + 0x0a, 0x1a, 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, 0x12, 0x2d, 0x0a, 0x29, + 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, + 0x43, 0x52, 0x49, 0x50, 0x54, 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, 0x54, + 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, + 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x49, 0x44, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, + 0x27, 0x0a, 0x23, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, + 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x04, 0x32, 0xb1, 0x30, 0x0a, 0x03, 0x54, 0x61, 0x6d, + 0x12, 0x60, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x12, 0x27, 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, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x74, - 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 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, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 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, 0x54, 0x61, 0x6d, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x54, 0x61, 0x6d, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, - 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x12, + 0x27, 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, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, + 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x53, + 0x65, 0x74, 0x54, 0x61, 0x6d, 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, 0x54, + 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 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, 0x54, 0x61, 0x6d, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, - 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, - 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, 0x54, - 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, - 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, - 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, - 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, - 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, - 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, + 0x63, 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, - 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, - 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x54, - 0x61, 0x6d, 0x52, 0x65, 0x70, 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, + 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, + 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, + 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, + 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, + 0x75, 0x6e, 0x63, 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, 0x54, + 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, + 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, 0x54, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, + 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, 0x54, 0x61, 0x6d, 0x4d, + 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, + 0x65, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, + 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, + 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, + 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, + 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, + 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 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, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, - 0x72, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 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, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x9c, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, 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, 0x3b, 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, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, - 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, 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9c, - 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 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, 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, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 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, 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, - 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, + 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, + 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9c, 0x01, 0x0a, 0x1d, 0x53, + 0x65, 0x74, 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, 0x3b, 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, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, + 0x69, 0x2e, 0x53, 0x65, 0x74, 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, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x9c, 0x01, 0x0a, 0x1d, 0x47, 0x65, + 0x74, 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, 0x3b, 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, 0x61, 0x6d, 0x49, 0x6e, 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, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 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, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, - 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, - 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 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, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x2e, 0x47, 0x65, 0x74, 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, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, - 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, + 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, + 0x6d, 0x49, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, + 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, 0x49, 0x6e, 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, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, + 0x65, 0x74, 0x54, 0x61, 0x6d, 0x49, 0x6e, 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, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x61, 0x6d, + 0x49, 0x6e, 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, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x61, 0x6d, 0x49, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, - 0x70, 0x65, 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, 0x54, 0x61, 0x6d, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, + 0x6c, 0x54, 0x79, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, + 0x79, 0x70, 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, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 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, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 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, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, - 0x74, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 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, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, - 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x6c, + 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, + 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, + 0x65, 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, 0x54, 0x61, 0x6d, + 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, + 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, + 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 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, 0x54, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, - 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 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, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x54, 0x61, 0x6d, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, + 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, - 0x0a, 0x18, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 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, 0x54, 0x61, - 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x8d, 0x01, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 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, 0x54, 0x61, - 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 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, 0x81, 0x01, - 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 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, 0x54, + 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 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, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 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, 0x54, + 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x53, 0x65, 0x74, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 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, + 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, + 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, + 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, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, + 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, 0x81, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, + 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, + 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, - 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, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 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, 0x54, - 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, - 0x76, 0x65, 0x6e, 0x74, 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, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 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, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, + 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, + 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 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, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x61, + 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xab, + 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 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, 0x40, 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, 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, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 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, 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, 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 ( @@ -7383,265 +7897,284 @@ func file_dataplane_proto_sai_tam_proto_rawDescGZIP() []byte { return file_dataplane_proto_sai_tam_proto_rawDescData } -var file_dataplane_proto_sai_tam_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_dataplane_proto_sai_tam_proto_msgTypes = make([]protoimpl.MessageInfo, 88) +var file_dataplane_proto_sai_tam_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_dataplane_proto_sai_tam_proto_msgTypes = make([]protoimpl.MessageInfo, 94) var file_dataplane_proto_sai_tam_proto_goTypes = []any{ - (TamAttr)(0), // 0: lemming.dataplane.sai.TamAttr - (TamMathFuncAttr)(0), // 1: lemming.dataplane.sai.TamMathFuncAttr - (TamReportAttr)(0), // 2: lemming.dataplane.sai.TamReportAttr - (TamEventThresholdAttr)(0), // 3: lemming.dataplane.sai.TamEventThresholdAttr - (TamIntAttr)(0), // 4: lemming.dataplane.sai.TamIntAttr - (TamTelTypeAttr)(0), // 5: lemming.dataplane.sai.TamTelTypeAttr - (TamTransportAttr)(0), // 6: lemming.dataplane.sai.TamTransportAttr - (TamTelemetryAttr)(0), // 7: lemming.dataplane.sai.TamTelemetryAttr - (TamCollectorAttr)(0), // 8: lemming.dataplane.sai.TamCollectorAttr - (TamEventActionAttr)(0), // 9: lemming.dataplane.sai.TamEventActionAttr - (TamEventAttr)(0), // 10: lemming.dataplane.sai.TamEventAttr - (*CreateTamRequest)(nil), // 11: lemming.dataplane.sai.CreateTamRequest - (*CreateTamResponse)(nil), // 12: lemming.dataplane.sai.CreateTamResponse - (*RemoveTamRequest)(nil), // 13: lemming.dataplane.sai.RemoveTamRequest - (*RemoveTamResponse)(nil), // 14: lemming.dataplane.sai.RemoveTamResponse - (*SetTamAttributeRequest)(nil), // 15: lemming.dataplane.sai.SetTamAttributeRequest - (*SetTamAttributeResponse)(nil), // 16: lemming.dataplane.sai.SetTamAttributeResponse - (*GetTamAttributeRequest)(nil), // 17: lemming.dataplane.sai.GetTamAttributeRequest - (*GetTamAttributeResponse)(nil), // 18: lemming.dataplane.sai.GetTamAttributeResponse - (*CreateTamMathFuncRequest)(nil), // 19: lemming.dataplane.sai.CreateTamMathFuncRequest - (*CreateTamMathFuncResponse)(nil), // 20: lemming.dataplane.sai.CreateTamMathFuncResponse - (*RemoveTamMathFuncRequest)(nil), // 21: lemming.dataplane.sai.RemoveTamMathFuncRequest - (*RemoveTamMathFuncResponse)(nil), // 22: lemming.dataplane.sai.RemoveTamMathFuncResponse - (*SetTamMathFuncAttributeRequest)(nil), // 23: lemming.dataplane.sai.SetTamMathFuncAttributeRequest - (*SetTamMathFuncAttributeResponse)(nil), // 24: lemming.dataplane.sai.SetTamMathFuncAttributeResponse - (*GetTamMathFuncAttributeRequest)(nil), // 25: lemming.dataplane.sai.GetTamMathFuncAttributeRequest - (*GetTamMathFuncAttributeResponse)(nil), // 26: lemming.dataplane.sai.GetTamMathFuncAttributeResponse - (*CreateTamReportRequest)(nil), // 27: lemming.dataplane.sai.CreateTamReportRequest - (*CreateTamReportResponse)(nil), // 28: lemming.dataplane.sai.CreateTamReportResponse - (*RemoveTamReportRequest)(nil), // 29: lemming.dataplane.sai.RemoveTamReportRequest - (*RemoveTamReportResponse)(nil), // 30: lemming.dataplane.sai.RemoveTamReportResponse - (*SetTamReportAttributeRequest)(nil), // 31: lemming.dataplane.sai.SetTamReportAttributeRequest - (*SetTamReportAttributeResponse)(nil), // 32: lemming.dataplane.sai.SetTamReportAttributeResponse - (*GetTamReportAttributeRequest)(nil), // 33: lemming.dataplane.sai.GetTamReportAttributeRequest - (*GetTamReportAttributeResponse)(nil), // 34: lemming.dataplane.sai.GetTamReportAttributeResponse - (*CreateTamEventThresholdRequest)(nil), // 35: lemming.dataplane.sai.CreateTamEventThresholdRequest - (*CreateTamEventThresholdResponse)(nil), // 36: lemming.dataplane.sai.CreateTamEventThresholdResponse - (*RemoveTamEventThresholdRequest)(nil), // 37: lemming.dataplane.sai.RemoveTamEventThresholdRequest - (*RemoveTamEventThresholdResponse)(nil), // 38: lemming.dataplane.sai.RemoveTamEventThresholdResponse - (*SetTamEventThresholdAttributeRequest)(nil), // 39: lemming.dataplane.sai.SetTamEventThresholdAttributeRequest - (*SetTamEventThresholdAttributeResponse)(nil), // 40: lemming.dataplane.sai.SetTamEventThresholdAttributeResponse - (*GetTamEventThresholdAttributeRequest)(nil), // 41: lemming.dataplane.sai.GetTamEventThresholdAttributeRequest - (*GetTamEventThresholdAttributeResponse)(nil), // 42: lemming.dataplane.sai.GetTamEventThresholdAttributeResponse - (*CreateTamIntRequest)(nil), // 43: lemming.dataplane.sai.CreateTamIntRequest - (*CreateTamIntResponse)(nil), // 44: lemming.dataplane.sai.CreateTamIntResponse - (*RemoveTamIntRequest)(nil), // 45: lemming.dataplane.sai.RemoveTamIntRequest - (*RemoveTamIntResponse)(nil), // 46: lemming.dataplane.sai.RemoveTamIntResponse - (*SetTamIntAttributeRequest)(nil), // 47: lemming.dataplane.sai.SetTamIntAttributeRequest - (*SetTamIntAttributeResponse)(nil), // 48: lemming.dataplane.sai.SetTamIntAttributeResponse - (*GetTamIntAttributeRequest)(nil), // 49: lemming.dataplane.sai.GetTamIntAttributeRequest - (*GetTamIntAttributeResponse)(nil), // 50: lemming.dataplane.sai.GetTamIntAttributeResponse - (*CreateTamTelTypeRequest)(nil), // 51: lemming.dataplane.sai.CreateTamTelTypeRequest - (*CreateTamTelTypeResponse)(nil), // 52: lemming.dataplane.sai.CreateTamTelTypeResponse - (*RemoveTamTelTypeRequest)(nil), // 53: lemming.dataplane.sai.RemoveTamTelTypeRequest - (*RemoveTamTelTypeResponse)(nil), // 54: lemming.dataplane.sai.RemoveTamTelTypeResponse - (*SetTamTelTypeAttributeRequest)(nil), // 55: lemming.dataplane.sai.SetTamTelTypeAttributeRequest - (*SetTamTelTypeAttributeResponse)(nil), // 56: lemming.dataplane.sai.SetTamTelTypeAttributeResponse - (*GetTamTelTypeAttributeRequest)(nil), // 57: lemming.dataplane.sai.GetTamTelTypeAttributeRequest - (*GetTamTelTypeAttributeResponse)(nil), // 58: lemming.dataplane.sai.GetTamTelTypeAttributeResponse - (*CreateTamTransportRequest)(nil), // 59: lemming.dataplane.sai.CreateTamTransportRequest - (*CreateTamTransportResponse)(nil), // 60: lemming.dataplane.sai.CreateTamTransportResponse - (*RemoveTamTransportRequest)(nil), // 61: lemming.dataplane.sai.RemoveTamTransportRequest - (*RemoveTamTransportResponse)(nil), // 62: lemming.dataplane.sai.RemoveTamTransportResponse - (*SetTamTransportAttributeRequest)(nil), // 63: lemming.dataplane.sai.SetTamTransportAttributeRequest - (*SetTamTransportAttributeResponse)(nil), // 64: lemming.dataplane.sai.SetTamTransportAttributeResponse - (*GetTamTransportAttributeRequest)(nil), // 65: lemming.dataplane.sai.GetTamTransportAttributeRequest - (*GetTamTransportAttributeResponse)(nil), // 66: lemming.dataplane.sai.GetTamTransportAttributeResponse - (*CreateTamTelemetryRequest)(nil), // 67: lemming.dataplane.sai.CreateTamTelemetryRequest - (*CreateTamTelemetryResponse)(nil), // 68: lemming.dataplane.sai.CreateTamTelemetryResponse - (*RemoveTamTelemetryRequest)(nil), // 69: lemming.dataplane.sai.RemoveTamTelemetryRequest - (*RemoveTamTelemetryResponse)(nil), // 70: lemming.dataplane.sai.RemoveTamTelemetryResponse - (*SetTamTelemetryAttributeRequest)(nil), // 71: lemming.dataplane.sai.SetTamTelemetryAttributeRequest - (*SetTamTelemetryAttributeResponse)(nil), // 72: lemming.dataplane.sai.SetTamTelemetryAttributeResponse - (*GetTamTelemetryAttributeRequest)(nil), // 73: lemming.dataplane.sai.GetTamTelemetryAttributeRequest - (*GetTamTelemetryAttributeResponse)(nil), // 74: lemming.dataplane.sai.GetTamTelemetryAttributeResponse - (*CreateTamCollectorRequest)(nil), // 75: lemming.dataplane.sai.CreateTamCollectorRequest - (*CreateTamCollectorResponse)(nil), // 76: lemming.dataplane.sai.CreateTamCollectorResponse - (*RemoveTamCollectorRequest)(nil), // 77: lemming.dataplane.sai.RemoveTamCollectorRequest - (*RemoveTamCollectorResponse)(nil), // 78: lemming.dataplane.sai.RemoveTamCollectorResponse - (*SetTamCollectorAttributeRequest)(nil), // 79: lemming.dataplane.sai.SetTamCollectorAttributeRequest - (*SetTamCollectorAttributeResponse)(nil), // 80: lemming.dataplane.sai.SetTamCollectorAttributeResponse - (*GetTamCollectorAttributeRequest)(nil), // 81: lemming.dataplane.sai.GetTamCollectorAttributeRequest - (*GetTamCollectorAttributeResponse)(nil), // 82: lemming.dataplane.sai.GetTamCollectorAttributeResponse - (*CreateTamEventActionRequest)(nil), // 83: lemming.dataplane.sai.CreateTamEventActionRequest - (*CreateTamEventActionResponse)(nil), // 84: lemming.dataplane.sai.CreateTamEventActionResponse - (*RemoveTamEventActionRequest)(nil), // 85: lemming.dataplane.sai.RemoveTamEventActionRequest - (*RemoveTamEventActionResponse)(nil), // 86: lemming.dataplane.sai.RemoveTamEventActionResponse - (*SetTamEventActionAttributeRequest)(nil), // 87: lemming.dataplane.sai.SetTamEventActionAttributeRequest - (*SetTamEventActionAttributeResponse)(nil), // 88: lemming.dataplane.sai.SetTamEventActionAttributeResponse - (*GetTamEventActionAttributeRequest)(nil), // 89: lemming.dataplane.sai.GetTamEventActionAttributeRequest - (*GetTamEventActionAttributeResponse)(nil), // 90: lemming.dataplane.sai.GetTamEventActionAttributeResponse - (*CreateTamEventRequest)(nil), // 91: lemming.dataplane.sai.CreateTamEventRequest - (*CreateTamEventResponse)(nil), // 92: lemming.dataplane.sai.CreateTamEventResponse - (*RemoveTamEventRequest)(nil), // 93: lemming.dataplane.sai.RemoveTamEventRequest - (*RemoveTamEventResponse)(nil), // 94: lemming.dataplane.sai.RemoveTamEventResponse - (*SetTamEventAttributeRequest)(nil), // 95: lemming.dataplane.sai.SetTamEventAttributeRequest - (*SetTamEventAttributeResponse)(nil), // 96: lemming.dataplane.sai.SetTamEventAttributeResponse - (*GetTamEventAttributeRequest)(nil), // 97: lemming.dataplane.sai.GetTamEventAttributeRequest - (*GetTamEventAttributeResponse)(nil), // 98: lemming.dataplane.sai.GetTamEventAttributeResponse - (TamBindPointType)(0), // 99: lemming.dataplane.sai.TamBindPointType - (*TamAttribute)(nil), // 100: lemming.dataplane.sai.TamAttribute - (TamTelMathFuncType)(0), // 101: lemming.dataplane.sai.TamTelMathFuncType - (*TamMathFuncAttribute)(nil), // 102: lemming.dataplane.sai.TamMathFuncAttribute - (TamReportType)(0), // 103: lemming.dataplane.sai.TamReportType - (TamReportMode)(0), // 104: lemming.dataplane.sai.TamReportMode - (*TamReportAttribute)(nil), // 105: lemming.dataplane.sai.TamReportAttribute - (TamEventThresholdUnit)(0), // 106: lemming.dataplane.sai.TamEventThresholdUnit - (*TamEventThresholdAttribute)(nil), // 107: lemming.dataplane.sai.TamEventThresholdAttribute - (TamIntType)(0), // 108: lemming.dataplane.sai.TamIntType - (TamIntPresenceType)(0), // 109: lemming.dataplane.sai.TamIntPresenceType - (*TamIntAttribute)(nil), // 110: lemming.dataplane.sai.TamIntAttribute - (TamTelemetryType)(0), // 111: lemming.dataplane.sai.TamTelemetryType - (*TamTelTypeAttribute)(nil), // 112: lemming.dataplane.sai.TamTelTypeAttribute - (TamTransportType)(0), // 113: lemming.dataplane.sai.TamTransportType - (TamTransportAuthType)(0), // 114: lemming.dataplane.sai.TamTransportAuthType - (*TamTransportAttribute)(nil), // 115: lemming.dataplane.sai.TamTransportAttribute - (TamReportingUnit)(0), // 116: lemming.dataplane.sai.TamReportingUnit - (*TamTelemetryAttribute)(nil), // 117: lemming.dataplane.sai.TamTelemetryAttribute - (*TamCollectorAttribute)(nil), // 118: lemming.dataplane.sai.TamCollectorAttribute - (*TamEventActionAttribute)(nil), // 119: lemming.dataplane.sai.TamEventActionAttribute - (TamEventType)(0), // 120: lemming.dataplane.sai.TamEventType - (*TamEventAttribute)(nil), // 121: lemming.dataplane.sai.TamEventAttribute + (TamAttr)(0), // 0: lemming.dataplane.sai.TamAttr + (TamMathFuncAttr)(0), // 1: lemming.dataplane.sai.TamMathFuncAttr + (TamReportAttr)(0), // 2: lemming.dataplane.sai.TamReportAttr + (TamEventThresholdAttr)(0), // 3: lemming.dataplane.sai.TamEventThresholdAttr + (TamIntAttr)(0), // 4: lemming.dataplane.sai.TamIntAttr + (TamTelTypeAttr)(0), // 5: lemming.dataplane.sai.TamTelTypeAttr + (TamTransportAttr)(0), // 6: lemming.dataplane.sai.TamTransportAttr + (TamTelemetryAttr)(0), // 7: lemming.dataplane.sai.TamTelemetryAttr + (TamCollectorAttr)(0), // 8: lemming.dataplane.sai.TamCollectorAttr + (TamEventActionAttr)(0), // 9: lemming.dataplane.sai.TamEventActionAttr + (TamEventAttr)(0), // 10: lemming.dataplane.sai.TamEventAttr + (TamCounterSubscriptionAttr)(0), // 11: lemming.dataplane.sai.TamCounterSubscriptionAttr + (*CreateTamRequest)(nil), // 12: lemming.dataplane.sai.CreateTamRequest + (*CreateTamResponse)(nil), // 13: lemming.dataplane.sai.CreateTamResponse + (*RemoveTamRequest)(nil), // 14: lemming.dataplane.sai.RemoveTamRequest + (*RemoveTamResponse)(nil), // 15: lemming.dataplane.sai.RemoveTamResponse + (*SetTamAttributeRequest)(nil), // 16: lemming.dataplane.sai.SetTamAttributeRequest + (*SetTamAttributeResponse)(nil), // 17: lemming.dataplane.sai.SetTamAttributeResponse + (*GetTamAttributeRequest)(nil), // 18: lemming.dataplane.sai.GetTamAttributeRequest + (*GetTamAttributeResponse)(nil), // 19: lemming.dataplane.sai.GetTamAttributeResponse + (*CreateTamMathFuncRequest)(nil), // 20: lemming.dataplane.sai.CreateTamMathFuncRequest + (*CreateTamMathFuncResponse)(nil), // 21: lemming.dataplane.sai.CreateTamMathFuncResponse + (*RemoveTamMathFuncRequest)(nil), // 22: lemming.dataplane.sai.RemoveTamMathFuncRequest + (*RemoveTamMathFuncResponse)(nil), // 23: lemming.dataplane.sai.RemoveTamMathFuncResponse + (*SetTamMathFuncAttributeRequest)(nil), // 24: lemming.dataplane.sai.SetTamMathFuncAttributeRequest + (*SetTamMathFuncAttributeResponse)(nil), // 25: lemming.dataplane.sai.SetTamMathFuncAttributeResponse + (*GetTamMathFuncAttributeRequest)(nil), // 26: lemming.dataplane.sai.GetTamMathFuncAttributeRequest + (*GetTamMathFuncAttributeResponse)(nil), // 27: lemming.dataplane.sai.GetTamMathFuncAttributeResponse + (*CreateTamReportRequest)(nil), // 28: lemming.dataplane.sai.CreateTamReportRequest + (*CreateTamReportResponse)(nil), // 29: lemming.dataplane.sai.CreateTamReportResponse + (*RemoveTamReportRequest)(nil), // 30: lemming.dataplane.sai.RemoveTamReportRequest + (*RemoveTamReportResponse)(nil), // 31: lemming.dataplane.sai.RemoveTamReportResponse + (*SetTamReportAttributeRequest)(nil), // 32: lemming.dataplane.sai.SetTamReportAttributeRequest + (*SetTamReportAttributeResponse)(nil), // 33: lemming.dataplane.sai.SetTamReportAttributeResponse + (*GetTamReportAttributeRequest)(nil), // 34: lemming.dataplane.sai.GetTamReportAttributeRequest + (*GetTamReportAttributeResponse)(nil), // 35: lemming.dataplane.sai.GetTamReportAttributeResponse + (*CreateTamEventThresholdRequest)(nil), // 36: lemming.dataplane.sai.CreateTamEventThresholdRequest + (*CreateTamEventThresholdResponse)(nil), // 37: lemming.dataplane.sai.CreateTamEventThresholdResponse + (*RemoveTamEventThresholdRequest)(nil), // 38: lemming.dataplane.sai.RemoveTamEventThresholdRequest + (*RemoveTamEventThresholdResponse)(nil), // 39: lemming.dataplane.sai.RemoveTamEventThresholdResponse + (*SetTamEventThresholdAttributeRequest)(nil), // 40: lemming.dataplane.sai.SetTamEventThresholdAttributeRequest + (*SetTamEventThresholdAttributeResponse)(nil), // 41: lemming.dataplane.sai.SetTamEventThresholdAttributeResponse + (*GetTamEventThresholdAttributeRequest)(nil), // 42: lemming.dataplane.sai.GetTamEventThresholdAttributeRequest + (*GetTamEventThresholdAttributeResponse)(nil), // 43: lemming.dataplane.sai.GetTamEventThresholdAttributeResponse + (*CreateTamIntRequest)(nil), // 44: lemming.dataplane.sai.CreateTamIntRequest + (*CreateTamIntResponse)(nil), // 45: lemming.dataplane.sai.CreateTamIntResponse + (*RemoveTamIntRequest)(nil), // 46: lemming.dataplane.sai.RemoveTamIntRequest + (*RemoveTamIntResponse)(nil), // 47: lemming.dataplane.sai.RemoveTamIntResponse + (*SetTamIntAttributeRequest)(nil), // 48: lemming.dataplane.sai.SetTamIntAttributeRequest + (*SetTamIntAttributeResponse)(nil), // 49: lemming.dataplane.sai.SetTamIntAttributeResponse + (*GetTamIntAttributeRequest)(nil), // 50: lemming.dataplane.sai.GetTamIntAttributeRequest + (*GetTamIntAttributeResponse)(nil), // 51: lemming.dataplane.sai.GetTamIntAttributeResponse + (*CreateTamTelTypeRequest)(nil), // 52: lemming.dataplane.sai.CreateTamTelTypeRequest + (*CreateTamTelTypeResponse)(nil), // 53: lemming.dataplane.sai.CreateTamTelTypeResponse + (*RemoveTamTelTypeRequest)(nil), // 54: lemming.dataplane.sai.RemoveTamTelTypeRequest + (*RemoveTamTelTypeResponse)(nil), // 55: lemming.dataplane.sai.RemoveTamTelTypeResponse + (*SetTamTelTypeAttributeRequest)(nil), // 56: lemming.dataplane.sai.SetTamTelTypeAttributeRequest + (*SetTamTelTypeAttributeResponse)(nil), // 57: lemming.dataplane.sai.SetTamTelTypeAttributeResponse + (*GetTamTelTypeAttributeRequest)(nil), // 58: lemming.dataplane.sai.GetTamTelTypeAttributeRequest + (*GetTamTelTypeAttributeResponse)(nil), // 59: lemming.dataplane.sai.GetTamTelTypeAttributeResponse + (*CreateTamTransportRequest)(nil), // 60: lemming.dataplane.sai.CreateTamTransportRequest + (*CreateTamTransportResponse)(nil), // 61: lemming.dataplane.sai.CreateTamTransportResponse + (*RemoveTamTransportRequest)(nil), // 62: lemming.dataplane.sai.RemoveTamTransportRequest + (*RemoveTamTransportResponse)(nil), // 63: lemming.dataplane.sai.RemoveTamTransportResponse + (*SetTamTransportAttributeRequest)(nil), // 64: lemming.dataplane.sai.SetTamTransportAttributeRequest + (*SetTamTransportAttributeResponse)(nil), // 65: lemming.dataplane.sai.SetTamTransportAttributeResponse + (*GetTamTransportAttributeRequest)(nil), // 66: lemming.dataplane.sai.GetTamTransportAttributeRequest + (*GetTamTransportAttributeResponse)(nil), // 67: lemming.dataplane.sai.GetTamTransportAttributeResponse + (*CreateTamTelemetryRequest)(nil), // 68: lemming.dataplane.sai.CreateTamTelemetryRequest + (*CreateTamTelemetryResponse)(nil), // 69: lemming.dataplane.sai.CreateTamTelemetryResponse + (*RemoveTamTelemetryRequest)(nil), // 70: lemming.dataplane.sai.RemoveTamTelemetryRequest + (*RemoveTamTelemetryResponse)(nil), // 71: lemming.dataplane.sai.RemoveTamTelemetryResponse + (*SetTamTelemetryAttributeRequest)(nil), // 72: lemming.dataplane.sai.SetTamTelemetryAttributeRequest + (*SetTamTelemetryAttributeResponse)(nil), // 73: lemming.dataplane.sai.SetTamTelemetryAttributeResponse + (*GetTamTelemetryAttributeRequest)(nil), // 74: lemming.dataplane.sai.GetTamTelemetryAttributeRequest + (*GetTamTelemetryAttributeResponse)(nil), // 75: lemming.dataplane.sai.GetTamTelemetryAttributeResponse + (*CreateTamCollectorRequest)(nil), // 76: lemming.dataplane.sai.CreateTamCollectorRequest + (*CreateTamCollectorResponse)(nil), // 77: lemming.dataplane.sai.CreateTamCollectorResponse + (*RemoveTamCollectorRequest)(nil), // 78: lemming.dataplane.sai.RemoveTamCollectorRequest + (*RemoveTamCollectorResponse)(nil), // 79: lemming.dataplane.sai.RemoveTamCollectorResponse + (*SetTamCollectorAttributeRequest)(nil), // 80: lemming.dataplane.sai.SetTamCollectorAttributeRequest + (*SetTamCollectorAttributeResponse)(nil), // 81: lemming.dataplane.sai.SetTamCollectorAttributeResponse + (*GetTamCollectorAttributeRequest)(nil), // 82: lemming.dataplane.sai.GetTamCollectorAttributeRequest + (*GetTamCollectorAttributeResponse)(nil), // 83: lemming.dataplane.sai.GetTamCollectorAttributeResponse + (*CreateTamEventActionRequest)(nil), // 84: lemming.dataplane.sai.CreateTamEventActionRequest + (*CreateTamEventActionResponse)(nil), // 85: lemming.dataplane.sai.CreateTamEventActionResponse + (*RemoveTamEventActionRequest)(nil), // 86: lemming.dataplane.sai.RemoveTamEventActionRequest + (*RemoveTamEventActionResponse)(nil), // 87: lemming.dataplane.sai.RemoveTamEventActionResponse + (*SetTamEventActionAttributeRequest)(nil), // 88: lemming.dataplane.sai.SetTamEventActionAttributeRequest + (*SetTamEventActionAttributeResponse)(nil), // 89: lemming.dataplane.sai.SetTamEventActionAttributeResponse + (*GetTamEventActionAttributeRequest)(nil), // 90: lemming.dataplane.sai.GetTamEventActionAttributeRequest + (*GetTamEventActionAttributeResponse)(nil), // 91: lemming.dataplane.sai.GetTamEventActionAttributeResponse + (*CreateTamEventRequest)(nil), // 92: lemming.dataplane.sai.CreateTamEventRequest + (*CreateTamEventResponse)(nil), // 93: lemming.dataplane.sai.CreateTamEventResponse + (*RemoveTamEventRequest)(nil), // 94: lemming.dataplane.sai.RemoveTamEventRequest + (*RemoveTamEventResponse)(nil), // 95: lemming.dataplane.sai.RemoveTamEventResponse + (*SetTamEventAttributeRequest)(nil), // 96: lemming.dataplane.sai.SetTamEventAttributeRequest + (*SetTamEventAttributeResponse)(nil), // 97: lemming.dataplane.sai.SetTamEventAttributeResponse + (*GetTamEventAttributeRequest)(nil), // 98: lemming.dataplane.sai.GetTamEventAttributeRequest + (*GetTamEventAttributeResponse)(nil), // 99: lemming.dataplane.sai.GetTamEventAttributeResponse + (*CreateTamCounterSubscriptionRequest)(nil), // 100: lemming.dataplane.sai.CreateTamCounterSubscriptionRequest + (*CreateTamCounterSubscriptionResponse)(nil), // 101: lemming.dataplane.sai.CreateTamCounterSubscriptionResponse + (*RemoveTamCounterSubscriptionRequest)(nil), // 102: lemming.dataplane.sai.RemoveTamCounterSubscriptionRequest + (*RemoveTamCounterSubscriptionResponse)(nil), // 103: lemming.dataplane.sai.RemoveTamCounterSubscriptionResponse + (*GetTamCounterSubscriptionAttributeRequest)(nil), // 104: lemming.dataplane.sai.GetTamCounterSubscriptionAttributeRequest + (*GetTamCounterSubscriptionAttributeResponse)(nil), // 105: lemming.dataplane.sai.GetTamCounterSubscriptionAttributeResponse + (TamBindPointType)(0), // 106: lemming.dataplane.sai.TamBindPointType + (*TamAttribute)(nil), // 107: lemming.dataplane.sai.TamAttribute + (TamTelMathFuncType)(0), // 108: lemming.dataplane.sai.TamTelMathFuncType + (*TamMathFuncAttribute)(nil), // 109: lemming.dataplane.sai.TamMathFuncAttribute + (TamReportType)(0), // 110: lemming.dataplane.sai.TamReportType + (TamReportMode)(0), // 111: lemming.dataplane.sai.TamReportMode + (TamReportIntervalUnit)(0), // 112: lemming.dataplane.sai.TamReportIntervalUnit + (*TamReportAttribute)(nil), // 113: lemming.dataplane.sai.TamReportAttribute + (TamEventThresholdUnit)(0), // 114: lemming.dataplane.sai.TamEventThresholdUnit + (*TamEventThresholdAttribute)(nil), // 115: lemming.dataplane.sai.TamEventThresholdAttribute + (TamIntType)(0), // 116: lemming.dataplane.sai.TamIntType + (TamIntPresenceType)(0), // 117: lemming.dataplane.sai.TamIntPresenceType + (*TamIntAttribute)(nil), // 118: lemming.dataplane.sai.TamIntAttribute + (TamTelemetryType)(0), // 119: lemming.dataplane.sai.TamTelemetryType + (*TamTelTypeAttribute)(nil), // 120: lemming.dataplane.sai.TamTelTypeAttribute + (TamTransportType)(0), // 121: lemming.dataplane.sai.TamTransportType + (TamTransportAuthType)(0), // 122: lemming.dataplane.sai.TamTransportAuthType + (*TamTransportAttribute)(nil), // 123: lemming.dataplane.sai.TamTransportAttribute + (TamReportingUnit)(0), // 124: lemming.dataplane.sai.TamReportingUnit + (*TamTelemetryAttribute)(nil), // 125: lemming.dataplane.sai.TamTelemetryAttribute + (*TamCollectorAttribute)(nil), // 126: lemming.dataplane.sai.TamCollectorAttribute + (*TamEventActionAttribute)(nil), // 127: lemming.dataplane.sai.TamEventActionAttribute + (TamEventType)(0), // 128: lemming.dataplane.sai.TamEventType + (*TamEventAttribute)(nil), // 129: lemming.dataplane.sai.TamEventAttribute + (*TamCounterSubscriptionAttribute)(nil), // 130: lemming.dataplane.sai.TamCounterSubscriptionAttribute } var file_dataplane_proto_sai_tam_proto_depIdxs = []int32{ - 99, // 0: lemming.dataplane.sai.CreateTamRequest.tam_bind_point_type_list:type_name -> lemming.dataplane.sai.TamBindPointType + 106, // 0: lemming.dataplane.sai.CreateTamRequest.tam_bind_point_type_list:type_name -> lemming.dataplane.sai.TamBindPointType 0, // 1: lemming.dataplane.sai.GetTamAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamAttr - 100, // 2: lemming.dataplane.sai.GetTamAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamAttribute - 101, // 3: lemming.dataplane.sai.CreateTamMathFuncRequest.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType - 101, // 4: lemming.dataplane.sai.SetTamMathFuncAttributeRequest.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType + 107, // 2: lemming.dataplane.sai.GetTamAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamAttribute + 108, // 3: lemming.dataplane.sai.CreateTamMathFuncRequest.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType + 108, // 4: lemming.dataplane.sai.SetTamMathFuncAttributeRequest.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType 1, // 5: lemming.dataplane.sai.GetTamMathFuncAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamMathFuncAttr - 102, // 6: lemming.dataplane.sai.GetTamMathFuncAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamMathFuncAttribute - 103, // 7: lemming.dataplane.sai.CreateTamReportRequest.type:type_name -> lemming.dataplane.sai.TamReportType - 104, // 8: lemming.dataplane.sai.CreateTamReportRequest.report_mode:type_name -> lemming.dataplane.sai.TamReportMode - 103, // 9: lemming.dataplane.sai.SetTamReportAttributeRequest.type:type_name -> lemming.dataplane.sai.TamReportType - 2, // 10: lemming.dataplane.sai.GetTamReportAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamReportAttr - 105, // 11: lemming.dataplane.sai.GetTamReportAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamReportAttribute - 106, // 12: lemming.dataplane.sai.CreateTamEventThresholdRequest.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit - 106, // 13: lemming.dataplane.sai.SetTamEventThresholdAttributeRequest.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit - 3, // 14: lemming.dataplane.sai.GetTamEventThresholdAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventThresholdAttr - 107, // 15: lemming.dataplane.sai.GetTamEventThresholdAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventThresholdAttribute - 108, // 16: lemming.dataplane.sai.CreateTamIntRequest.type:type_name -> lemming.dataplane.sai.TamIntType - 109, // 17: lemming.dataplane.sai.CreateTamIntRequest.int_presence_type:type_name -> lemming.dataplane.sai.TamIntPresenceType - 4, // 18: lemming.dataplane.sai.GetTamIntAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamIntAttr - 110, // 19: lemming.dataplane.sai.GetTamIntAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamIntAttribute - 111, // 20: lemming.dataplane.sai.CreateTamTelTypeRequest.tam_telemetry_type:type_name -> lemming.dataplane.sai.TamTelemetryType - 5, // 21: lemming.dataplane.sai.GetTamTelTypeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTelTypeAttr - 112, // 22: lemming.dataplane.sai.GetTamTelTypeAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTelTypeAttribute - 113, // 23: lemming.dataplane.sai.CreateTamTransportRequest.transport_type:type_name -> lemming.dataplane.sai.TamTransportType - 114, // 24: lemming.dataplane.sai.CreateTamTransportRequest.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType - 114, // 25: lemming.dataplane.sai.SetTamTransportAttributeRequest.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType - 6, // 26: lemming.dataplane.sai.GetTamTransportAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTransportAttr - 115, // 27: lemming.dataplane.sai.GetTamTransportAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTransportAttribute - 116, // 28: lemming.dataplane.sai.CreateTamTelemetryRequest.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit - 116, // 29: lemming.dataplane.sai.SetTamTelemetryAttributeRequest.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit - 7, // 30: lemming.dataplane.sai.GetTamTelemetryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTelemetryAttr - 117, // 31: lemming.dataplane.sai.GetTamTelemetryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTelemetryAttribute - 8, // 32: lemming.dataplane.sai.GetTamCollectorAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamCollectorAttr - 118, // 33: lemming.dataplane.sai.GetTamCollectorAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamCollectorAttribute - 9, // 34: lemming.dataplane.sai.GetTamEventActionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventActionAttr - 119, // 35: lemming.dataplane.sai.GetTamEventActionAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventActionAttribute - 120, // 36: lemming.dataplane.sai.CreateTamEventRequest.type:type_name -> lemming.dataplane.sai.TamEventType - 10, // 37: lemming.dataplane.sai.GetTamEventAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventAttr - 121, // 38: lemming.dataplane.sai.GetTamEventAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventAttribute - 11, // 39: lemming.dataplane.sai.Tam.CreateTam:input_type -> lemming.dataplane.sai.CreateTamRequest - 13, // 40: lemming.dataplane.sai.Tam.RemoveTam:input_type -> lemming.dataplane.sai.RemoveTamRequest - 15, // 41: lemming.dataplane.sai.Tam.SetTamAttribute:input_type -> lemming.dataplane.sai.SetTamAttributeRequest - 17, // 42: lemming.dataplane.sai.Tam.GetTamAttribute:input_type -> lemming.dataplane.sai.GetTamAttributeRequest - 19, // 43: lemming.dataplane.sai.Tam.CreateTamMathFunc:input_type -> lemming.dataplane.sai.CreateTamMathFuncRequest - 21, // 44: lemming.dataplane.sai.Tam.RemoveTamMathFunc:input_type -> lemming.dataplane.sai.RemoveTamMathFuncRequest - 23, // 45: lemming.dataplane.sai.Tam.SetTamMathFuncAttribute:input_type -> lemming.dataplane.sai.SetTamMathFuncAttributeRequest - 25, // 46: lemming.dataplane.sai.Tam.GetTamMathFuncAttribute:input_type -> lemming.dataplane.sai.GetTamMathFuncAttributeRequest - 27, // 47: lemming.dataplane.sai.Tam.CreateTamReport:input_type -> lemming.dataplane.sai.CreateTamReportRequest - 29, // 48: lemming.dataplane.sai.Tam.RemoveTamReport:input_type -> lemming.dataplane.sai.RemoveTamReportRequest - 31, // 49: lemming.dataplane.sai.Tam.SetTamReportAttribute:input_type -> lemming.dataplane.sai.SetTamReportAttributeRequest - 33, // 50: lemming.dataplane.sai.Tam.GetTamReportAttribute:input_type -> lemming.dataplane.sai.GetTamReportAttributeRequest - 35, // 51: lemming.dataplane.sai.Tam.CreateTamEventThreshold:input_type -> lemming.dataplane.sai.CreateTamEventThresholdRequest - 37, // 52: lemming.dataplane.sai.Tam.RemoveTamEventThreshold:input_type -> lemming.dataplane.sai.RemoveTamEventThresholdRequest - 39, // 53: lemming.dataplane.sai.Tam.SetTamEventThresholdAttribute:input_type -> lemming.dataplane.sai.SetTamEventThresholdAttributeRequest - 41, // 54: lemming.dataplane.sai.Tam.GetTamEventThresholdAttribute:input_type -> lemming.dataplane.sai.GetTamEventThresholdAttributeRequest - 43, // 55: lemming.dataplane.sai.Tam.CreateTamInt:input_type -> lemming.dataplane.sai.CreateTamIntRequest - 45, // 56: lemming.dataplane.sai.Tam.RemoveTamInt:input_type -> lemming.dataplane.sai.RemoveTamIntRequest - 47, // 57: lemming.dataplane.sai.Tam.SetTamIntAttribute:input_type -> lemming.dataplane.sai.SetTamIntAttributeRequest - 49, // 58: lemming.dataplane.sai.Tam.GetTamIntAttribute:input_type -> lemming.dataplane.sai.GetTamIntAttributeRequest - 51, // 59: lemming.dataplane.sai.Tam.CreateTamTelType:input_type -> lemming.dataplane.sai.CreateTamTelTypeRequest - 53, // 60: lemming.dataplane.sai.Tam.RemoveTamTelType:input_type -> lemming.dataplane.sai.RemoveTamTelTypeRequest - 55, // 61: lemming.dataplane.sai.Tam.SetTamTelTypeAttribute:input_type -> lemming.dataplane.sai.SetTamTelTypeAttributeRequest - 57, // 62: lemming.dataplane.sai.Tam.GetTamTelTypeAttribute:input_type -> lemming.dataplane.sai.GetTamTelTypeAttributeRequest - 59, // 63: lemming.dataplane.sai.Tam.CreateTamTransport:input_type -> lemming.dataplane.sai.CreateTamTransportRequest - 61, // 64: lemming.dataplane.sai.Tam.RemoveTamTransport:input_type -> lemming.dataplane.sai.RemoveTamTransportRequest - 63, // 65: lemming.dataplane.sai.Tam.SetTamTransportAttribute:input_type -> lemming.dataplane.sai.SetTamTransportAttributeRequest - 65, // 66: lemming.dataplane.sai.Tam.GetTamTransportAttribute:input_type -> lemming.dataplane.sai.GetTamTransportAttributeRequest - 67, // 67: lemming.dataplane.sai.Tam.CreateTamTelemetry:input_type -> lemming.dataplane.sai.CreateTamTelemetryRequest - 69, // 68: lemming.dataplane.sai.Tam.RemoveTamTelemetry:input_type -> lemming.dataplane.sai.RemoveTamTelemetryRequest - 71, // 69: lemming.dataplane.sai.Tam.SetTamTelemetryAttribute:input_type -> lemming.dataplane.sai.SetTamTelemetryAttributeRequest - 73, // 70: lemming.dataplane.sai.Tam.GetTamTelemetryAttribute:input_type -> lemming.dataplane.sai.GetTamTelemetryAttributeRequest - 75, // 71: lemming.dataplane.sai.Tam.CreateTamCollector:input_type -> lemming.dataplane.sai.CreateTamCollectorRequest - 77, // 72: lemming.dataplane.sai.Tam.RemoveTamCollector:input_type -> lemming.dataplane.sai.RemoveTamCollectorRequest - 79, // 73: lemming.dataplane.sai.Tam.SetTamCollectorAttribute:input_type -> lemming.dataplane.sai.SetTamCollectorAttributeRequest - 81, // 74: lemming.dataplane.sai.Tam.GetTamCollectorAttribute:input_type -> lemming.dataplane.sai.GetTamCollectorAttributeRequest - 83, // 75: lemming.dataplane.sai.Tam.CreateTamEventAction:input_type -> lemming.dataplane.sai.CreateTamEventActionRequest - 85, // 76: lemming.dataplane.sai.Tam.RemoveTamEventAction:input_type -> lemming.dataplane.sai.RemoveTamEventActionRequest - 87, // 77: lemming.dataplane.sai.Tam.SetTamEventActionAttribute:input_type -> lemming.dataplane.sai.SetTamEventActionAttributeRequest - 89, // 78: lemming.dataplane.sai.Tam.GetTamEventActionAttribute:input_type -> lemming.dataplane.sai.GetTamEventActionAttributeRequest - 91, // 79: lemming.dataplane.sai.Tam.CreateTamEvent:input_type -> lemming.dataplane.sai.CreateTamEventRequest - 93, // 80: lemming.dataplane.sai.Tam.RemoveTamEvent:input_type -> lemming.dataplane.sai.RemoveTamEventRequest - 95, // 81: lemming.dataplane.sai.Tam.SetTamEventAttribute:input_type -> lemming.dataplane.sai.SetTamEventAttributeRequest - 97, // 82: lemming.dataplane.sai.Tam.GetTamEventAttribute:input_type -> lemming.dataplane.sai.GetTamEventAttributeRequest - 12, // 83: lemming.dataplane.sai.Tam.CreateTam:output_type -> lemming.dataplane.sai.CreateTamResponse - 14, // 84: lemming.dataplane.sai.Tam.RemoveTam:output_type -> lemming.dataplane.sai.RemoveTamResponse - 16, // 85: lemming.dataplane.sai.Tam.SetTamAttribute:output_type -> lemming.dataplane.sai.SetTamAttributeResponse - 18, // 86: lemming.dataplane.sai.Tam.GetTamAttribute:output_type -> lemming.dataplane.sai.GetTamAttributeResponse - 20, // 87: lemming.dataplane.sai.Tam.CreateTamMathFunc:output_type -> lemming.dataplane.sai.CreateTamMathFuncResponse - 22, // 88: lemming.dataplane.sai.Tam.RemoveTamMathFunc:output_type -> lemming.dataplane.sai.RemoveTamMathFuncResponse - 24, // 89: lemming.dataplane.sai.Tam.SetTamMathFuncAttribute:output_type -> lemming.dataplane.sai.SetTamMathFuncAttributeResponse - 26, // 90: lemming.dataplane.sai.Tam.GetTamMathFuncAttribute:output_type -> lemming.dataplane.sai.GetTamMathFuncAttributeResponse - 28, // 91: lemming.dataplane.sai.Tam.CreateTamReport:output_type -> lemming.dataplane.sai.CreateTamReportResponse - 30, // 92: lemming.dataplane.sai.Tam.RemoveTamReport:output_type -> lemming.dataplane.sai.RemoveTamReportResponse - 32, // 93: lemming.dataplane.sai.Tam.SetTamReportAttribute:output_type -> lemming.dataplane.sai.SetTamReportAttributeResponse - 34, // 94: lemming.dataplane.sai.Tam.GetTamReportAttribute:output_type -> lemming.dataplane.sai.GetTamReportAttributeResponse - 36, // 95: lemming.dataplane.sai.Tam.CreateTamEventThreshold:output_type -> lemming.dataplane.sai.CreateTamEventThresholdResponse - 38, // 96: lemming.dataplane.sai.Tam.RemoveTamEventThreshold:output_type -> lemming.dataplane.sai.RemoveTamEventThresholdResponse - 40, // 97: lemming.dataplane.sai.Tam.SetTamEventThresholdAttribute:output_type -> lemming.dataplane.sai.SetTamEventThresholdAttributeResponse - 42, // 98: lemming.dataplane.sai.Tam.GetTamEventThresholdAttribute:output_type -> lemming.dataplane.sai.GetTamEventThresholdAttributeResponse - 44, // 99: lemming.dataplane.sai.Tam.CreateTamInt:output_type -> lemming.dataplane.sai.CreateTamIntResponse - 46, // 100: lemming.dataplane.sai.Tam.RemoveTamInt:output_type -> lemming.dataplane.sai.RemoveTamIntResponse - 48, // 101: lemming.dataplane.sai.Tam.SetTamIntAttribute:output_type -> lemming.dataplane.sai.SetTamIntAttributeResponse - 50, // 102: lemming.dataplane.sai.Tam.GetTamIntAttribute:output_type -> lemming.dataplane.sai.GetTamIntAttributeResponse - 52, // 103: lemming.dataplane.sai.Tam.CreateTamTelType:output_type -> lemming.dataplane.sai.CreateTamTelTypeResponse - 54, // 104: lemming.dataplane.sai.Tam.RemoveTamTelType:output_type -> lemming.dataplane.sai.RemoveTamTelTypeResponse - 56, // 105: lemming.dataplane.sai.Tam.SetTamTelTypeAttribute:output_type -> lemming.dataplane.sai.SetTamTelTypeAttributeResponse - 58, // 106: lemming.dataplane.sai.Tam.GetTamTelTypeAttribute:output_type -> lemming.dataplane.sai.GetTamTelTypeAttributeResponse - 60, // 107: lemming.dataplane.sai.Tam.CreateTamTransport:output_type -> lemming.dataplane.sai.CreateTamTransportResponse - 62, // 108: lemming.dataplane.sai.Tam.RemoveTamTransport:output_type -> lemming.dataplane.sai.RemoveTamTransportResponse - 64, // 109: lemming.dataplane.sai.Tam.SetTamTransportAttribute:output_type -> lemming.dataplane.sai.SetTamTransportAttributeResponse - 66, // 110: lemming.dataplane.sai.Tam.GetTamTransportAttribute:output_type -> lemming.dataplane.sai.GetTamTransportAttributeResponse - 68, // 111: lemming.dataplane.sai.Tam.CreateTamTelemetry:output_type -> lemming.dataplane.sai.CreateTamTelemetryResponse - 70, // 112: lemming.dataplane.sai.Tam.RemoveTamTelemetry:output_type -> lemming.dataplane.sai.RemoveTamTelemetryResponse - 72, // 113: lemming.dataplane.sai.Tam.SetTamTelemetryAttribute:output_type -> lemming.dataplane.sai.SetTamTelemetryAttributeResponse - 74, // 114: lemming.dataplane.sai.Tam.GetTamTelemetryAttribute:output_type -> lemming.dataplane.sai.GetTamTelemetryAttributeResponse - 76, // 115: lemming.dataplane.sai.Tam.CreateTamCollector:output_type -> lemming.dataplane.sai.CreateTamCollectorResponse - 78, // 116: lemming.dataplane.sai.Tam.RemoveTamCollector:output_type -> lemming.dataplane.sai.RemoveTamCollectorResponse - 80, // 117: lemming.dataplane.sai.Tam.SetTamCollectorAttribute:output_type -> lemming.dataplane.sai.SetTamCollectorAttributeResponse - 82, // 118: lemming.dataplane.sai.Tam.GetTamCollectorAttribute:output_type -> lemming.dataplane.sai.GetTamCollectorAttributeResponse - 84, // 119: lemming.dataplane.sai.Tam.CreateTamEventAction:output_type -> lemming.dataplane.sai.CreateTamEventActionResponse - 86, // 120: lemming.dataplane.sai.Tam.RemoveTamEventAction:output_type -> lemming.dataplane.sai.RemoveTamEventActionResponse - 88, // 121: lemming.dataplane.sai.Tam.SetTamEventActionAttribute:output_type -> lemming.dataplane.sai.SetTamEventActionAttributeResponse - 90, // 122: lemming.dataplane.sai.Tam.GetTamEventActionAttribute:output_type -> lemming.dataplane.sai.GetTamEventActionAttributeResponse - 92, // 123: lemming.dataplane.sai.Tam.CreateTamEvent:output_type -> lemming.dataplane.sai.CreateTamEventResponse - 94, // 124: lemming.dataplane.sai.Tam.RemoveTamEvent:output_type -> lemming.dataplane.sai.RemoveTamEventResponse - 96, // 125: lemming.dataplane.sai.Tam.SetTamEventAttribute:output_type -> lemming.dataplane.sai.SetTamEventAttributeResponse - 98, // 126: lemming.dataplane.sai.Tam.GetTamEventAttribute:output_type -> lemming.dataplane.sai.GetTamEventAttributeResponse - 83, // [83:127] is the sub-list for method output_type - 39, // [39:83] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 39, // [39:39] is the sub-list for extension extendee - 0, // [0:39] is the sub-list for field type_name + 109, // 6: lemming.dataplane.sai.GetTamMathFuncAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamMathFuncAttribute + 110, // 7: lemming.dataplane.sai.CreateTamReportRequest.type:type_name -> lemming.dataplane.sai.TamReportType + 111, // 8: lemming.dataplane.sai.CreateTamReportRequest.report_mode:type_name -> lemming.dataplane.sai.TamReportMode + 112, // 9: lemming.dataplane.sai.CreateTamReportRequest.report_interval_unit:type_name -> lemming.dataplane.sai.TamReportIntervalUnit + 110, // 10: lemming.dataplane.sai.SetTamReportAttributeRequest.type:type_name -> lemming.dataplane.sai.TamReportType + 112, // 11: lemming.dataplane.sai.SetTamReportAttributeRequest.report_interval_unit:type_name -> lemming.dataplane.sai.TamReportIntervalUnit + 2, // 12: lemming.dataplane.sai.GetTamReportAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamReportAttr + 113, // 13: lemming.dataplane.sai.GetTamReportAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamReportAttribute + 114, // 14: lemming.dataplane.sai.CreateTamEventThresholdRequest.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit + 114, // 15: lemming.dataplane.sai.SetTamEventThresholdAttributeRequest.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit + 3, // 16: lemming.dataplane.sai.GetTamEventThresholdAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventThresholdAttr + 115, // 17: lemming.dataplane.sai.GetTamEventThresholdAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventThresholdAttribute + 116, // 18: lemming.dataplane.sai.CreateTamIntRequest.type:type_name -> lemming.dataplane.sai.TamIntType + 117, // 19: lemming.dataplane.sai.CreateTamIntRequest.int_presence_type:type_name -> lemming.dataplane.sai.TamIntPresenceType + 4, // 20: lemming.dataplane.sai.GetTamIntAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamIntAttr + 118, // 21: lemming.dataplane.sai.GetTamIntAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamIntAttribute + 119, // 22: lemming.dataplane.sai.CreateTamTelTypeRequest.tam_telemetry_type:type_name -> lemming.dataplane.sai.TamTelemetryType + 5, // 23: lemming.dataplane.sai.GetTamTelTypeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTelTypeAttr + 120, // 24: lemming.dataplane.sai.GetTamTelTypeAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTelTypeAttribute + 121, // 25: lemming.dataplane.sai.CreateTamTransportRequest.transport_type:type_name -> lemming.dataplane.sai.TamTransportType + 122, // 26: lemming.dataplane.sai.CreateTamTransportRequest.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType + 122, // 27: lemming.dataplane.sai.SetTamTransportAttributeRequest.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType + 6, // 28: lemming.dataplane.sai.GetTamTransportAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTransportAttr + 123, // 29: lemming.dataplane.sai.GetTamTransportAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTransportAttribute + 124, // 30: lemming.dataplane.sai.CreateTamTelemetryRequest.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit + 124, // 31: lemming.dataplane.sai.SetTamTelemetryAttributeRequest.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit + 7, // 32: lemming.dataplane.sai.GetTamTelemetryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamTelemetryAttr + 125, // 33: lemming.dataplane.sai.GetTamTelemetryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamTelemetryAttribute + 8, // 34: lemming.dataplane.sai.GetTamCollectorAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamCollectorAttr + 126, // 35: lemming.dataplane.sai.GetTamCollectorAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamCollectorAttribute + 9, // 36: lemming.dataplane.sai.GetTamEventActionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventActionAttr + 127, // 37: lemming.dataplane.sai.GetTamEventActionAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventActionAttribute + 128, // 38: lemming.dataplane.sai.CreateTamEventRequest.type:type_name -> lemming.dataplane.sai.TamEventType + 10, // 39: lemming.dataplane.sai.GetTamEventAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamEventAttr + 129, // 40: lemming.dataplane.sai.GetTamEventAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamEventAttribute + 11, // 41: lemming.dataplane.sai.GetTamCounterSubscriptionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TamCounterSubscriptionAttr + 130, // 42: lemming.dataplane.sai.GetTamCounterSubscriptionAttributeResponse.attr:type_name -> lemming.dataplane.sai.TamCounterSubscriptionAttribute + 12, // 43: lemming.dataplane.sai.Tam.CreateTam:input_type -> lemming.dataplane.sai.CreateTamRequest + 14, // 44: lemming.dataplane.sai.Tam.RemoveTam:input_type -> lemming.dataplane.sai.RemoveTamRequest + 16, // 45: lemming.dataplane.sai.Tam.SetTamAttribute:input_type -> lemming.dataplane.sai.SetTamAttributeRequest + 18, // 46: lemming.dataplane.sai.Tam.GetTamAttribute:input_type -> lemming.dataplane.sai.GetTamAttributeRequest + 20, // 47: lemming.dataplane.sai.Tam.CreateTamMathFunc:input_type -> lemming.dataplane.sai.CreateTamMathFuncRequest + 22, // 48: lemming.dataplane.sai.Tam.RemoveTamMathFunc:input_type -> lemming.dataplane.sai.RemoveTamMathFuncRequest + 24, // 49: lemming.dataplane.sai.Tam.SetTamMathFuncAttribute:input_type -> lemming.dataplane.sai.SetTamMathFuncAttributeRequest + 26, // 50: lemming.dataplane.sai.Tam.GetTamMathFuncAttribute:input_type -> lemming.dataplane.sai.GetTamMathFuncAttributeRequest + 28, // 51: lemming.dataplane.sai.Tam.CreateTamReport:input_type -> lemming.dataplane.sai.CreateTamReportRequest + 30, // 52: lemming.dataplane.sai.Tam.RemoveTamReport:input_type -> lemming.dataplane.sai.RemoveTamReportRequest + 32, // 53: lemming.dataplane.sai.Tam.SetTamReportAttribute:input_type -> lemming.dataplane.sai.SetTamReportAttributeRequest + 34, // 54: lemming.dataplane.sai.Tam.GetTamReportAttribute:input_type -> lemming.dataplane.sai.GetTamReportAttributeRequest + 36, // 55: lemming.dataplane.sai.Tam.CreateTamEventThreshold:input_type -> lemming.dataplane.sai.CreateTamEventThresholdRequest + 38, // 56: lemming.dataplane.sai.Tam.RemoveTamEventThreshold:input_type -> lemming.dataplane.sai.RemoveTamEventThresholdRequest + 40, // 57: lemming.dataplane.sai.Tam.SetTamEventThresholdAttribute:input_type -> lemming.dataplane.sai.SetTamEventThresholdAttributeRequest + 42, // 58: lemming.dataplane.sai.Tam.GetTamEventThresholdAttribute:input_type -> lemming.dataplane.sai.GetTamEventThresholdAttributeRequest + 44, // 59: lemming.dataplane.sai.Tam.CreateTamInt:input_type -> lemming.dataplane.sai.CreateTamIntRequest + 46, // 60: lemming.dataplane.sai.Tam.RemoveTamInt:input_type -> lemming.dataplane.sai.RemoveTamIntRequest + 48, // 61: lemming.dataplane.sai.Tam.SetTamIntAttribute:input_type -> lemming.dataplane.sai.SetTamIntAttributeRequest + 50, // 62: lemming.dataplane.sai.Tam.GetTamIntAttribute:input_type -> lemming.dataplane.sai.GetTamIntAttributeRequest + 52, // 63: lemming.dataplane.sai.Tam.CreateTamTelType:input_type -> lemming.dataplane.sai.CreateTamTelTypeRequest + 54, // 64: lemming.dataplane.sai.Tam.RemoveTamTelType:input_type -> lemming.dataplane.sai.RemoveTamTelTypeRequest + 56, // 65: lemming.dataplane.sai.Tam.SetTamTelTypeAttribute:input_type -> lemming.dataplane.sai.SetTamTelTypeAttributeRequest + 58, // 66: lemming.dataplane.sai.Tam.GetTamTelTypeAttribute:input_type -> lemming.dataplane.sai.GetTamTelTypeAttributeRequest + 60, // 67: lemming.dataplane.sai.Tam.CreateTamTransport:input_type -> lemming.dataplane.sai.CreateTamTransportRequest + 62, // 68: lemming.dataplane.sai.Tam.RemoveTamTransport:input_type -> lemming.dataplane.sai.RemoveTamTransportRequest + 64, // 69: lemming.dataplane.sai.Tam.SetTamTransportAttribute:input_type -> lemming.dataplane.sai.SetTamTransportAttributeRequest + 66, // 70: lemming.dataplane.sai.Tam.GetTamTransportAttribute:input_type -> lemming.dataplane.sai.GetTamTransportAttributeRequest + 68, // 71: lemming.dataplane.sai.Tam.CreateTamTelemetry:input_type -> lemming.dataplane.sai.CreateTamTelemetryRequest + 70, // 72: lemming.dataplane.sai.Tam.RemoveTamTelemetry:input_type -> lemming.dataplane.sai.RemoveTamTelemetryRequest + 72, // 73: lemming.dataplane.sai.Tam.SetTamTelemetryAttribute:input_type -> lemming.dataplane.sai.SetTamTelemetryAttributeRequest + 74, // 74: lemming.dataplane.sai.Tam.GetTamTelemetryAttribute:input_type -> lemming.dataplane.sai.GetTamTelemetryAttributeRequest + 76, // 75: lemming.dataplane.sai.Tam.CreateTamCollector:input_type -> lemming.dataplane.sai.CreateTamCollectorRequest + 78, // 76: lemming.dataplane.sai.Tam.RemoveTamCollector:input_type -> lemming.dataplane.sai.RemoveTamCollectorRequest + 80, // 77: lemming.dataplane.sai.Tam.SetTamCollectorAttribute:input_type -> lemming.dataplane.sai.SetTamCollectorAttributeRequest + 82, // 78: lemming.dataplane.sai.Tam.GetTamCollectorAttribute:input_type -> lemming.dataplane.sai.GetTamCollectorAttributeRequest + 84, // 79: lemming.dataplane.sai.Tam.CreateTamEventAction:input_type -> lemming.dataplane.sai.CreateTamEventActionRequest + 86, // 80: lemming.dataplane.sai.Tam.RemoveTamEventAction:input_type -> lemming.dataplane.sai.RemoveTamEventActionRequest + 88, // 81: lemming.dataplane.sai.Tam.SetTamEventActionAttribute:input_type -> lemming.dataplane.sai.SetTamEventActionAttributeRequest + 90, // 82: lemming.dataplane.sai.Tam.GetTamEventActionAttribute:input_type -> lemming.dataplane.sai.GetTamEventActionAttributeRequest + 92, // 83: lemming.dataplane.sai.Tam.CreateTamEvent:input_type -> lemming.dataplane.sai.CreateTamEventRequest + 94, // 84: lemming.dataplane.sai.Tam.RemoveTamEvent:input_type -> lemming.dataplane.sai.RemoveTamEventRequest + 96, // 85: lemming.dataplane.sai.Tam.SetTamEventAttribute:input_type -> lemming.dataplane.sai.SetTamEventAttributeRequest + 98, // 86: lemming.dataplane.sai.Tam.GetTamEventAttribute:input_type -> lemming.dataplane.sai.GetTamEventAttributeRequest + 100, // 87: lemming.dataplane.sai.Tam.CreateTamCounterSubscription:input_type -> lemming.dataplane.sai.CreateTamCounterSubscriptionRequest + 102, // 88: lemming.dataplane.sai.Tam.RemoveTamCounterSubscription:input_type -> lemming.dataplane.sai.RemoveTamCounterSubscriptionRequest + 104, // 89: lemming.dataplane.sai.Tam.GetTamCounterSubscriptionAttribute:input_type -> lemming.dataplane.sai.GetTamCounterSubscriptionAttributeRequest + 13, // 90: lemming.dataplane.sai.Tam.CreateTam:output_type -> lemming.dataplane.sai.CreateTamResponse + 15, // 91: lemming.dataplane.sai.Tam.RemoveTam:output_type -> lemming.dataplane.sai.RemoveTamResponse + 17, // 92: lemming.dataplane.sai.Tam.SetTamAttribute:output_type -> lemming.dataplane.sai.SetTamAttributeResponse + 19, // 93: lemming.dataplane.sai.Tam.GetTamAttribute:output_type -> lemming.dataplane.sai.GetTamAttributeResponse + 21, // 94: lemming.dataplane.sai.Tam.CreateTamMathFunc:output_type -> lemming.dataplane.sai.CreateTamMathFuncResponse + 23, // 95: lemming.dataplane.sai.Tam.RemoveTamMathFunc:output_type -> lemming.dataplane.sai.RemoveTamMathFuncResponse + 25, // 96: lemming.dataplane.sai.Tam.SetTamMathFuncAttribute:output_type -> lemming.dataplane.sai.SetTamMathFuncAttributeResponse + 27, // 97: lemming.dataplane.sai.Tam.GetTamMathFuncAttribute:output_type -> lemming.dataplane.sai.GetTamMathFuncAttributeResponse + 29, // 98: lemming.dataplane.sai.Tam.CreateTamReport:output_type -> lemming.dataplane.sai.CreateTamReportResponse + 31, // 99: lemming.dataplane.sai.Tam.RemoveTamReport:output_type -> lemming.dataplane.sai.RemoveTamReportResponse + 33, // 100: lemming.dataplane.sai.Tam.SetTamReportAttribute:output_type -> lemming.dataplane.sai.SetTamReportAttributeResponse + 35, // 101: lemming.dataplane.sai.Tam.GetTamReportAttribute:output_type -> lemming.dataplane.sai.GetTamReportAttributeResponse + 37, // 102: lemming.dataplane.sai.Tam.CreateTamEventThreshold:output_type -> lemming.dataplane.sai.CreateTamEventThresholdResponse + 39, // 103: lemming.dataplane.sai.Tam.RemoveTamEventThreshold:output_type -> lemming.dataplane.sai.RemoveTamEventThresholdResponse + 41, // 104: lemming.dataplane.sai.Tam.SetTamEventThresholdAttribute:output_type -> lemming.dataplane.sai.SetTamEventThresholdAttributeResponse + 43, // 105: lemming.dataplane.sai.Tam.GetTamEventThresholdAttribute:output_type -> lemming.dataplane.sai.GetTamEventThresholdAttributeResponse + 45, // 106: lemming.dataplane.sai.Tam.CreateTamInt:output_type -> lemming.dataplane.sai.CreateTamIntResponse + 47, // 107: lemming.dataplane.sai.Tam.RemoveTamInt:output_type -> lemming.dataplane.sai.RemoveTamIntResponse + 49, // 108: lemming.dataplane.sai.Tam.SetTamIntAttribute:output_type -> lemming.dataplane.sai.SetTamIntAttributeResponse + 51, // 109: lemming.dataplane.sai.Tam.GetTamIntAttribute:output_type -> lemming.dataplane.sai.GetTamIntAttributeResponse + 53, // 110: lemming.dataplane.sai.Tam.CreateTamTelType:output_type -> lemming.dataplane.sai.CreateTamTelTypeResponse + 55, // 111: lemming.dataplane.sai.Tam.RemoveTamTelType:output_type -> lemming.dataplane.sai.RemoveTamTelTypeResponse + 57, // 112: lemming.dataplane.sai.Tam.SetTamTelTypeAttribute:output_type -> lemming.dataplane.sai.SetTamTelTypeAttributeResponse + 59, // 113: lemming.dataplane.sai.Tam.GetTamTelTypeAttribute:output_type -> lemming.dataplane.sai.GetTamTelTypeAttributeResponse + 61, // 114: lemming.dataplane.sai.Tam.CreateTamTransport:output_type -> lemming.dataplane.sai.CreateTamTransportResponse + 63, // 115: lemming.dataplane.sai.Tam.RemoveTamTransport:output_type -> lemming.dataplane.sai.RemoveTamTransportResponse + 65, // 116: lemming.dataplane.sai.Tam.SetTamTransportAttribute:output_type -> lemming.dataplane.sai.SetTamTransportAttributeResponse + 67, // 117: lemming.dataplane.sai.Tam.GetTamTransportAttribute:output_type -> lemming.dataplane.sai.GetTamTransportAttributeResponse + 69, // 118: lemming.dataplane.sai.Tam.CreateTamTelemetry:output_type -> lemming.dataplane.sai.CreateTamTelemetryResponse + 71, // 119: lemming.dataplane.sai.Tam.RemoveTamTelemetry:output_type -> lemming.dataplane.sai.RemoveTamTelemetryResponse + 73, // 120: lemming.dataplane.sai.Tam.SetTamTelemetryAttribute:output_type -> lemming.dataplane.sai.SetTamTelemetryAttributeResponse + 75, // 121: lemming.dataplane.sai.Tam.GetTamTelemetryAttribute:output_type -> lemming.dataplane.sai.GetTamTelemetryAttributeResponse + 77, // 122: lemming.dataplane.sai.Tam.CreateTamCollector:output_type -> lemming.dataplane.sai.CreateTamCollectorResponse + 79, // 123: lemming.dataplane.sai.Tam.RemoveTamCollector:output_type -> lemming.dataplane.sai.RemoveTamCollectorResponse + 81, // 124: lemming.dataplane.sai.Tam.SetTamCollectorAttribute:output_type -> lemming.dataplane.sai.SetTamCollectorAttributeResponse + 83, // 125: lemming.dataplane.sai.Tam.GetTamCollectorAttribute:output_type -> lemming.dataplane.sai.GetTamCollectorAttributeResponse + 85, // 126: lemming.dataplane.sai.Tam.CreateTamEventAction:output_type -> lemming.dataplane.sai.CreateTamEventActionResponse + 87, // 127: lemming.dataplane.sai.Tam.RemoveTamEventAction:output_type -> lemming.dataplane.sai.RemoveTamEventActionResponse + 89, // 128: lemming.dataplane.sai.Tam.SetTamEventActionAttribute:output_type -> lemming.dataplane.sai.SetTamEventActionAttributeResponse + 91, // 129: lemming.dataplane.sai.Tam.GetTamEventActionAttribute:output_type -> lemming.dataplane.sai.GetTamEventActionAttributeResponse + 93, // 130: lemming.dataplane.sai.Tam.CreateTamEvent:output_type -> lemming.dataplane.sai.CreateTamEventResponse + 95, // 131: lemming.dataplane.sai.Tam.RemoveTamEvent:output_type -> lemming.dataplane.sai.RemoveTamEventResponse + 97, // 132: lemming.dataplane.sai.Tam.SetTamEventAttribute:output_type -> lemming.dataplane.sai.SetTamEventAttributeResponse + 99, // 133: lemming.dataplane.sai.Tam.GetTamEventAttribute:output_type -> lemming.dataplane.sai.GetTamEventAttributeResponse + 101, // 134: lemming.dataplane.sai.Tam.CreateTamCounterSubscription:output_type -> lemming.dataplane.sai.CreateTamCounterSubscriptionResponse + 103, // 135: lemming.dataplane.sai.Tam.RemoveTamCounterSubscription:output_type -> lemming.dataplane.sai.RemoveTamCounterSubscriptionResponse + 105, // 136: lemming.dataplane.sai.Tam.GetTamCounterSubscriptionAttribute:output_type -> lemming.dataplane.sai.GetTamCounterSubscriptionAttributeResponse + 90, // [90:137] is the sub-list for method output_type + 43, // [43:90] is the sub-list for method input_type + 43, // [43:43] is the sub-list for extension type_name + 43, // [43:43] is the sub-list for extension extendee + 0, // [0:43] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_tam_proto_init() } @@ -7670,13 +8203,14 @@ func file_dataplane_proto_sai_tam_proto_init() { file_dataplane_proto_sai_tam_proto_msgTypes[76].OneofWrappers = []any{} file_dataplane_proto_sai_tam_proto_msgTypes[80].OneofWrappers = []any{} file_dataplane_proto_sai_tam_proto_msgTypes[84].OneofWrappers = []any{} + file_dataplane_proto_sai_tam_proto_msgTypes[88].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dataplane_proto_sai_tam_proto_rawDesc, - NumEnums: 11, - NumMessages: 88, + NumEnums: 12, + NumMessages: 94, NumExtensions: 0, NumServices: 1, }, @@ -7747,6 +8281,9 @@ type TamClient interface { RemoveTamEvent(ctx context.Context, in *RemoveTamEventRequest, opts ...grpc.CallOption) (*RemoveTamEventResponse, error) SetTamEventAttribute(ctx context.Context, in *SetTamEventAttributeRequest, opts ...grpc.CallOption) (*SetTamEventAttributeResponse, error) GetTamEventAttribute(ctx context.Context, in *GetTamEventAttributeRequest, opts ...grpc.CallOption) (*GetTamEventAttributeResponse, error) + CreateTamCounterSubscription(ctx context.Context, in *CreateTamCounterSubscriptionRequest, opts ...grpc.CallOption) (*CreateTamCounterSubscriptionResponse, error) + RemoveTamCounterSubscription(ctx context.Context, in *RemoveTamCounterSubscriptionRequest, opts ...grpc.CallOption) (*RemoveTamCounterSubscriptionResponse, error) + GetTamCounterSubscriptionAttribute(ctx context.Context, in *GetTamCounterSubscriptionAttributeRequest, opts ...grpc.CallOption) (*GetTamCounterSubscriptionAttributeResponse, error) } type tamClient struct { @@ -8153,6 +8690,33 @@ func (c *tamClient) GetTamEventAttribute(ctx context.Context, in *GetTamEventAtt return out, nil } +func (c *tamClient) CreateTamCounterSubscription(ctx context.Context, in *CreateTamCounterSubscriptionRequest, opts ...grpc.CallOption) (*CreateTamCounterSubscriptionResponse, error) { + out := new(CreateTamCounterSubscriptionResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Tam/CreateTamCounterSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tamClient) RemoveTamCounterSubscription(ctx context.Context, in *RemoveTamCounterSubscriptionRequest, opts ...grpc.CallOption) (*RemoveTamCounterSubscriptionResponse, error) { + out := new(RemoveTamCounterSubscriptionResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Tam/RemoveTamCounterSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tamClient) GetTamCounterSubscriptionAttribute(ctx context.Context, in *GetTamCounterSubscriptionAttributeRequest, opts ...grpc.CallOption) (*GetTamCounterSubscriptionAttributeResponse, error) { + out := new(GetTamCounterSubscriptionAttributeResponse) + err := c.cc.Invoke(ctx, "/lemming.dataplane.sai.Tam/GetTamCounterSubscriptionAttribute", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // TamServer is the server API for Tam service. type TamServer interface { CreateTam(context.Context, *CreateTamRequest) (*CreateTamResponse, error) @@ -8199,6 +8763,9 @@ type TamServer interface { RemoveTamEvent(context.Context, *RemoveTamEventRequest) (*RemoveTamEventResponse, error) SetTamEventAttribute(context.Context, *SetTamEventAttributeRequest) (*SetTamEventAttributeResponse, error) GetTamEventAttribute(context.Context, *GetTamEventAttributeRequest) (*GetTamEventAttributeResponse, error) + CreateTamCounterSubscription(context.Context, *CreateTamCounterSubscriptionRequest) (*CreateTamCounterSubscriptionResponse, error) + RemoveTamCounterSubscription(context.Context, *RemoveTamCounterSubscriptionRequest) (*RemoveTamCounterSubscriptionResponse, error) + GetTamCounterSubscriptionAttribute(context.Context, *GetTamCounterSubscriptionAttributeRequest) (*GetTamCounterSubscriptionAttributeResponse, error) } // UnimplementedTamServer can be embedded to have forward compatible implementations. @@ -8337,6 +8904,15 @@ func (*UnimplementedTamServer) SetTamEventAttribute(context.Context, *SetTamEven func (*UnimplementedTamServer) GetTamEventAttribute(context.Context, *GetTamEventAttributeRequest) (*GetTamEventAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTamEventAttribute not implemented") } +func (*UnimplementedTamServer) CreateTamCounterSubscription(context.Context, *CreateTamCounterSubscriptionRequest) (*CreateTamCounterSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTamCounterSubscription not implemented") +} +func (*UnimplementedTamServer) RemoveTamCounterSubscription(context.Context, *RemoveTamCounterSubscriptionRequest) (*RemoveTamCounterSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveTamCounterSubscription not implemented") +} +func (*UnimplementedTamServer) GetTamCounterSubscriptionAttribute(context.Context, *GetTamCounterSubscriptionAttributeRequest) (*GetTamCounterSubscriptionAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTamCounterSubscriptionAttribute not implemented") +} func RegisterTamServer(s *grpc.Server, srv TamServer) { s.RegisterService(&_Tam_serviceDesc, srv) @@ -9134,6 +9710,60 @@ func _Tam_GetTamEventAttribute_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Tam_CreateTamCounterSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTamCounterSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TamServer).CreateTamCounterSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Tam/CreateTamCounterSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TamServer).CreateTamCounterSubscription(ctx, req.(*CreateTamCounterSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Tam_RemoveTamCounterSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveTamCounterSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TamServer).RemoveTamCounterSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Tam/RemoveTamCounterSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TamServer).RemoveTamCounterSubscription(ctx, req.(*RemoveTamCounterSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Tam_GetTamCounterSubscriptionAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTamCounterSubscriptionAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TamServer).GetTamCounterSubscriptionAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lemming.dataplane.sai.Tam/GetTamCounterSubscriptionAttribute", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TamServer).GetTamCounterSubscriptionAttribute(ctx, req.(*GetTamCounterSubscriptionAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Tam_serviceDesc = grpc.ServiceDesc{ ServiceName: "lemming.dataplane.sai.Tam", HandlerType: (*TamServer)(nil), @@ -9314,6 +9944,18 @@ var _Tam_serviceDesc = grpc.ServiceDesc{ MethodName: "GetTamEventAttribute", Handler: _Tam_GetTamEventAttribute_Handler, }, + { + MethodName: "CreateTamCounterSubscription", + Handler: _Tam_CreateTamCounterSubscription_Handler, + }, + { + MethodName: "RemoveTamCounterSubscription", + Handler: _Tam_RemoveTamCounterSubscription_Handler, + }, + { + MethodName: "GetTamCounterSubscriptionAttribute", + Handler: _Tam_GetTamCounterSubscriptionAttribute_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "dataplane/proto/sai/tam.proto", diff --git a/dataplane/proto/sai/tam.proto b/dataplane/proto/sai/tam.proto index 4a70c766..594f44af 100644 --- a/dataplane/proto/sai/tam.proto +++ b/dataplane/proto/sai/tam.proto @@ -7,698 +7,726 @@ 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_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_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_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; } 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]; + 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]; + 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]; + 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]; + 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]; +} + +message CreateTamCounterSubscriptionResponse { + uint64 oid = 1; } +message RemoveTamCounterSubscriptionRequest { + uint64 oid = 1; +} + +message RemoveTamCounterSubscriptionResponse { +} + +message GetTamCounterSubscriptionAttributeRequest { + uint64 oid = 1; + repeated TamCounterSubscriptionAttr attr_type = 2; +} + +message GetTamCounterSubscriptionAttributeResponse { + 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 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 489fc32a..be44429d 100644 --- a/dataplane/proto/sai/tunnel.pb.go +++ b/dataplane/proto/sai/tunnel.pb.go @@ -220,6 +220,7 @@ const ( TunnelTermTableEntryAttr_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID TunnelTermTableEntryAttr = 8 TunnelTermTableEntryAttr_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY TunnelTermTableEntryAttr = 9 TunnelTermTableEntryAttr_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED TunnelTermTableEntryAttr = 10 + TunnelTermTableEntryAttr_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY TunnelTermTableEntryAttr = 11 ) // Enum value maps for TunnelTermTableEntryAttr. @@ -236,6 +237,7 @@ var ( 8: "TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID", 9: "TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY", 10: "TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED", + 11: "TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY", } TunnelTermTableEntryAttr_value = map[string]int32{ "TUNNEL_TERM_TABLE_ENTRY_ATTR_UNSPECIFIED": 0, @@ -249,6 +251,7 @@ var ( "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, } ) @@ -299,6 +302,8 @@ const ( TunnelMapEntryAttr_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE TunnelMapEntryAttr = 14 TunnelMapEntryAttr_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY TunnelMapEntryAttr = 15 TunnelMapEntryAttr_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE TunnelMapEntryAttr = 16 + TunnelMapEntryAttr_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY TunnelMapEntryAttr = 17 + TunnelMapEntryAttr_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE TunnelMapEntryAttr = 18 ) // Enum value maps for TunnelMapEntryAttr. @@ -321,6 +326,8 @@ var ( 14: "TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE", 15: "TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY", 16: "TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE", + 17: "TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY", + 18: "TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE", } TunnelMapEntryAttr_value = map[string]int32{ "TUNNEL_MAP_ENTRY_ATTR_UNSPECIFIED": 0, @@ -340,6 +347,8 @@ var ( "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, } ) @@ -1470,6 +1479,7 @@ type CreateTunnelTermTableEntryRequest struct { TunnelType *TunnelType `protobuf:"varint,8,opt,name=tunnel_type,json=tunnelType,proto3,enum=lemming.dataplane.sai.TunnelType,oneof" json:"tunnel_type,omitempty"` ActionTunnelId *uint64 `protobuf:"varint,9,opt,name=action_tunnel_id,json=actionTunnelId,proto3,oneof" json:"action_tunnel_id,omitempty"` IpsecVerified *bool `protobuf:"varint,10,opt,name=ipsec_verified,json=ipsecVerified,proto3,oneof" json:"ipsec_verified,omitempty"` + Priority *uint32 `protobuf:"varint,11,opt,name=priority,proto3,oneof" json:"priority,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1574,6 +1584,13 @@ func (x *CreateTunnelTermTableEntryRequest) GetIpsecVerified() bool { return false } +func (x *CreateTunnelTermTableEntryRequest) GetPriority() uint32 { + if x != nil && x.Priority != nil { + return *x.Priority + } + return 0 +} + type CreateTunnelTermTableEntryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1701,7 +1718,9 @@ func (*RemoveTunnelTermTableEntryResponse) Descriptor() ([]byte, []int) { type SetTunnelTermTableEntryAttributeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - IpsecVerified *bool `protobuf:"varint,2,opt,name=ipsec_verified,json=ipsecVerified,proto3,oneof" json:"ipsec_verified,omitempty"` + VrId *uint64 `protobuf:"varint,2,opt,name=vr_id,json=vrId,proto3,oneof" json:"vr_id,omitempty"` + IpsecVerified *bool `protobuf:"varint,3,opt,name=ipsec_verified,json=ipsecVerified,proto3,oneof" json:"ipsec_verified,omitempty"` + Priority *uint32 `protobuf:"varint,4,opt,name=priority,proto3,oneof" json:"priority,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1743,6 +1762,13 @@ func (x *SetTunnelTermTableEntryAttributeRequest) GetOid() uint64 { return 0 } +func (x *SetTunnelTermTableEntryAttributeRequest) GetVrId() uint64 { + if x != nil && x.VrId != nil { + return *x.VrId + } + return 0 +} + func (x *SetTunnelTermTableEntryAttributeRequest) GetIpsecVerified() bool { if x != nil && x.IpsecVerified != nil { return *x.IpsecVerified @@ -1750,6 +1776,13 @@ func (x *SetTunnelTermTableEntryAttributeRequest) GetIpsecVerified() bool { return false } +func (x *SetTunnelTermTableEntryAttributeRequest) GetPriority() uint32 { + if x != nil && x.Priority != nil { + return *x.Priority + } + return 0 +} + type SetTunnelTermTableEntryAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1901,6 +1934,8 @@ type CreateTunnelMapEntryRequest struct { VirtualRouterIdValue *uint64 `protobuf:"varint,15,opt,name=virtual_router_id_value,json=virtualRouterIdValue,proto3,oneof" json:"virtual_router_id_value,omitempty"` VsidIdKey *uint32 `protobuf:"varint,16,opt,name=vsid_id_key,json=vsidIdKey,proto3,oneof" json:"vsid_id_key,omitempty"` VsidIdValue *uint32 `protobuf:"varint,17,opt,name=vsid_id_value,json=vsidIdValue,proto3,oneof" json:"vsid_id_value,omitempty"` + PrefixAggIdKey *uint32 `protobuf:"varint,18,opt,name=prefix_agg_id_key,json=prefixAggIdKey,proto3,oneof" json:"prefix_agg_id_key,omitempty"` + Srv6VpnSidValue []byte `protobuf:"bytes,19,opt,name=srv6_vpn_sid_value,json=srv6VpnSidValue,proto3,oneof" json:"srv6_vpn_sid_value,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2054,6 +2089,20 @@ func (x *CreateTunnelMapEntryRequest) GetVsidIdValue() uint32 { return 0 } +func (x *CreateTunnelMapEntryRequest) GetPrefixAggIdKey() uint32 { + if x != nil && x.PrefixAggIdKey != nil { + return *x.PrefixAggIdKey + } + return 0 +} + +func (x *CreateTunnelMapEntryRequest) GetSrv6VpnSidValue() []byte { + if x != nil { + return x.Srv6VpnSidValue + } + return nil +} + type CreateTunnelMapEntryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -2795,7 +2844,7 @@ var file_dataplane_proto_sai_tunnel_proto_rawDesc = []byte{ 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, - 0x96, 0x05, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 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, @@ -2827,465 +2876,493 @@ var file_dataplane_proto_sai_tunnel_proto_rawDesc = []byte{ 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, 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, 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, 0x82, 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, 0x32, 0x0a, 0x0e, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x00, 0x52, 0x0d, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x65, 0x64, 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, 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, + 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, 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, 0x87, 0x09, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, 0x2a, 0x88, - 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, + 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, + 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, + 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, 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, + 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, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x05, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, + 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, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x5f, - 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x06, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 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, 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, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, 0x2a, 0xc6, 0x05, 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, + 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, + 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, + 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, + 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, 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, 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, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, + 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, + 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, 0x47, 0x65, + 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, 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, + 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, + 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, 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, 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, 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, 0x52, + 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, 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, 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, + 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, - 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, + 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, 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, + 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, 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, + 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 ( diff --git a/dataplane/proto/sai/tunnel.proto b/dataplane/proto/sai/tunnel.proto index 80a8e11b..5fb14883 100644 --- a/dataplane/proto/sai/tunnel.proto +++ b/dataplane/proto/sai/tunnel.proto @@ -7,321 +7,319 @@ 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; } 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_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_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]; } 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]; +} + +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]; + 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 bool ipsec_verified = 2 [(attr_enum_value) = 10]; + 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]; + 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.pb.go b/dataplane/proto/sai/twamp.pb.go new file mode 100755 index 00000000..c5a12bda --- /dev/null +++ b/dataplane/proto/sai/twamp.pb.go @@ -0,0 +1,113 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.3 +// protoc v5.29.3 +// source: dataplane/proto/sai/twamp.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +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_twamp_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_twamp_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x74, 0x77, 0x61, 0x6d, 0x70, 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, 0x07, 0x0a, 0x05, 0x54, 0x77, + 0x61, 0x6d, 0x70, 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_twamp_proto_goTypes = []any{} +var file_dataplane_proto_sai_twamp_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_twamp_proto_init() } +func file_dataplane_proto_sai_twamp_proto_init() { + if File_dataplane_proto_sai_twamp_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: file_dataplane_proto_sai_twamp_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_twamp_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_twamp_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_twamp_proto = out.File + file_dataplane_proto_sai_twamp_proto_rawDesc = nil + file_dataplane_proto_sai_twamp_proto_goTypes = nil + file_dataplane_proto_sai_twamp_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// TwampClient is the client API for Twamp service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type TwampClient interface { +} + +type twampClient struct { + cc grpc.ClientConnInterface +} + +func NewTwampClient(cc grpc.ClientConnInterface) TwampClient { + return &twampClient{cc} +} + +// TwampServer is the server API for Twamp service. +type TwampServer interface { +} + +// UnimplementedTwampServer can be embedded to have forward compatible implementations. +type UnimplementedTwampServer struct { +} + +func RegisterTwampServer(s *grpc.Server, srv TwampServer) { + s.RegisterService(&_Twamp_serviceDesc, srv) +} + +var _Twamp_serviceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.Twamp", + HandlerType: (*TwampServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/twamp.proto", +} diff --git a/dataplane/proto/sai/twamp.proto b/dataplane/proto/sai/twamp.proto new file mode 100644 index 00000000..911b4013 --- /dev/null +++ b/dataplane/proto/sai/twamp.proto @@ -0,0 +1,13 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + + + +service Twamp { +} diff --git a/dataplane/proto/sai/udf.pb.go b/dataplane/proto/sai/udf.pb.go index 1a12e493..0fbeedc1 100644 --- a/dataplane/proto/sai/udf.pb.go +++ b/dataplane/proto/sai/udf.pb.go @@ -85,11 +85,12 @@ func (UdfAttr) EnumDescriptor() ([]byte, []int) { type UdfMatchAttr int32 const ( - UdfMatchAttr_UDF_MATCH_ATTR_UNSPECIFIED UdfMatchAttr = 0 - UdfMatchAttr_UDF_MATCH_ATTR_L2_TYPE UdfMatchAttr = 1 - UdfMatchAttr_UDF_MATCH_ATTR_L3_TYPE UdfMatchAttr = 2 - UdfMatchAttr_UDF_MATCH_ATTR_GRE_TYPE UdfMatchAttr = 3 - UdfMatchAttr_UDF_MATCH_ATTR_PRIORITY UdfMatchAttr = 4 + UdfMatchAttr_UDF_MATCH_ATTR_UNSPECIFIED UdfMatchAttr = 0 + UdfMatchAttr_UDF_MATCH_ATTR_L2_TYPE UdfMatchAttr = 1 + UdfMatchAttr_UDF_MATCH_ATTR_L3_TYPE UdfMatchAttr = 2 + UdfMatchAttr_UDF_MATCH_ATTR_GRE_TYPE UdfMatchAttr = 3 + UdfMatchAttr_UDF_MATCH_ATTR_PRIORITY UdfMatchAttr = 4 + UdfMatchAttr_UDF_MATCH_ATTR_L4_DST_PORT_TYPE UdfMatchAttr = 5 ) // Enum value maps for UdfMatchAttr. @@ -100,13 +101,15 @@ var ( 2: "UDF_MATCH_ATTR_L3_TYPE", 3: "UDF_MATCH_ATTR_GRE_TYPE", 4: "UDF_MATCH_ATTR_PRIORITY", + 5: "UDF_MATCH_ATTR_L4_DST_PORT_TYPE", } UdfMatchAttr_value = map[string]int32{ - "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_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, } ) @@ -596,6 +599,7 @@ type CreateUdfMatchRequest struct { L3Type *AclFieldData `protobuf:"bytes,3,opt,name=l3_type,json=l3Type,proto3,oneof" json:"l3_type,omitempty"` GreType *AclFieldData `protobuf:"bytes,4,opt,name=gre_type,json=greType,proto3,oneof" json:"gre_type,omitempty"` Priority *uint32 `protobuf:"varint,5,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + L4DstPortType *AclFieldData `protobuf:"bytes,6,opt,name=l4_dst_port_type,json=l4DstPortType,proto3,oneof" json:"l4_dst_port_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -665,6 +669,13 @@ func (x *CreateUdfMatchRequest) GetPriority() uint32 { return 0 } +func (x *CreateUdfMatchRequest) GetL4DstPortType() *AclFieldData { + if x != nil { + return x.L4DstPortType + } + return nil +} + type CreateUdfMatchResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1222,7 +1233,7 @@ var file_dataplane_proto_sai_udf_proto_rawDesc = []byte{ 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 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, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xf5, 0x02, 0x0a, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xe5, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x49, @@ -1242,11 +1253,18 @@ var file_dataplane_proto_sai_udf_proto_rawDesc = []byte{ 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, 0x05, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, - 0x0f, 0x1f, 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, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, + 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, 0x06, + 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x1f, 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, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, @@ -1307,7 +1325,7 @@ var file_dataplane_proto_sai_udf_proto_rawDesc = []byte{ 0x52, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x44, 0x46, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x44, 0x46, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4d, - 0x41, 0x53, 0x4b, 0x10, 0x05, 0x2a, 0xa0, 0x01, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, + 0x41, 0x53, 0x4b, 0x10, 0x05, 0x2a, 0xc5, 0x01, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x44, 0x46, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x44, 0x46, 0x5f, 0x4d, 0x41, @@ -1317,91 +1335,93 @@ var file_dataplane_proto_sai_udf_proto_rawDesc = []byte{ 0x0a, 0x17, 0x55, 0x44, 0x46, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x44, 0x46, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, - 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x2a, 0x7f, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x44, 0x46, 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, 0x1b, 0x0a, 0x17, 0x55, 0x44, 0x46, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x44, 0x46, 0x5f, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x19, - 0x0a, 0x15, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x03, 0x32, 0xfd, 0x08, 0x0a, 0x03, 0x55, 0x64, - 0x66, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x12, 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, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x55, 0x64, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x64, 0x66, - 0x12, 0x27, 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, 0x55, - 0x64, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x55, 0x64, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x55, 0x64, 0x66, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 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, - 0x53, 0x65, 0x74, 0x55, 0x64, 0x66, 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, - 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x6c, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x44, 0x46, 0x5f, + 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, + 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x2a, 0x7f, 0x0a, + 0x0c, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, + 0x1a, 0x55, 0x44, 0x46, 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, 0x1b, 0x0a, + 0x17, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x55, 0x44, 0x46, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x44, + 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x03, 0x32, 0xfd, + 0x08, 0x0a, 0x03, 0x55, 0x64, 0x66, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x55, 0x64, 0x66, 0x12, 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, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x64, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 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, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 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, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, - 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, - 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, - 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, 0x55, - 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x55, 0x64, 0x66, 0x12, 0x27, 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, 0x55, 0x64, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 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, 0x55, 0x64, 0x66, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x53, 0x65, + 0x74, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x53, 0x65, 0x74, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, - 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x55, 0x64, 0x66, 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, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 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, 0x55, 0x64, 0x66, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x55, 0x64, 0x66, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x64, 0x66, 0x4d, + 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x64, 0x66, + 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x64, - 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x64, 0x66, - 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, - 0x75, 0x70, 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, 0x55, 0x64, - 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x64, 0x66, 0x4d, + 0x61, 0x74, 0x63, 0x68, 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, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, + 0x68, 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, 0x55, 0x64, 0x66, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, + 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, + 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, + 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 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 ( @@ -1457,36 +1477,37 @@ var file_dataplane_proto_sai_udf_proto_depIdxs = []int32{ 25, // 4: lemming.dataplane.sai.CreateUdfMatchRequest.l2_type:type_name -> lemming.dataplane.sai.AclFieldData 25, // 5: lemming.dataplane.sai.CreateUdfMatchRequest.l3_type:type_name -> lemming.dataplane.sai.AclFieldData 25, // 6: lemming.dataplane.sai.CreateUdfMatchRequest.gre_type:type_name -> lemming.dataplane.sai.AclFieldData - 1, // 7: lemming.dataplane.sai.GetUdfMatchAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.UdfMatchAttr - 26, // 8: lemming.dataplane.sai.GetUdfMatchAttributeResponse.attr:type_name -> lemming.dataplane.sai.UdfMatchAttribute - 27, // 9: lemming.dataplane.sai.CreateUdfGroupRequest.type:type_name -> lemming.dataplane.sai.UdfGroupType - 2, // 10: lemming.dataplane.sai.GetUdfGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.UdfGroupAttr - 28, // 11: lemming.dataplane.sai.GetUdfGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.UdfGroupAttribute - 3, // 12: lemming.dataplane.sai.Udf.CreateUdf:input_type -> lemming.dataplane.sai.CreateUdfRequest - 5, // 13: lemming.dataplane.sai.Udf.RemoveUdf:input_type -> lemming.dataplane.sai.RemoveUdfRequest - 7, // 14: lemming.dataplane.sai.Udf.SetUdfAttribute:input_type -> lemming.dataplane.sai.SetUdfAttributeRequest - 9, // 15: lemming.dataplane.sai.Udf.GetUdfAttribute:input_type -> lemming.dataplane.sai.GetUdfAttributeRequest - 11, // 16: lemming.dataplane.sai.Udf.CreateUdfMatch:input_type -> lemming.dataplane.sai.CreateUdfMatchRequest - 13, // 17: lemming.dataplane.sai.Udf.RemoveUdfMatch:input_type -> lemming.dataplane.sai.RemoveUdfMatchRequest - 15, // 18: lemming.dataplane.sai.Udf.GetUdfMatchAttribute:input_type -> lemming.dataplane.sai.GetUdfMatchAttributeRequest - 17, // 19: lemming.dataplane.sai.Udf.CreateUdfGroup:input_type -> lemming.dataplane.sai.CreateUdfGroupRequest - 19, // 20: lemming.dataplane.sai.Udf.RemoveUdfGroup:input_type -> lemming.dataplane.sai.RemoveUdfGroupRequest - 21, // 21: lemming.dataplane.sai.Udf.GetUdfGroupAttribute:input_type -> lemming.dataplane.sai.GetUdfGroupAttributeRequest - 4, // 22: lemming.dataplane.sai.Udf.CreateUdf:output_type -> lemming.dataplane.sai.CreateUdfResponse - 6, // 23: lemming.dataplane.sai.Udf.RemoveUdf:output_type -> lemming.dataplane.sai.RemoveUdfResponse - 8, // 24: lemming.dataplane.sai.Udf.SetUdfAttribute:output_type -> lemming.dataplane.sai.SetUdfAttributeResponse - 10, // 25: lemming.dataplane.sai.Udf.GetUdfAttribute:output_type -> lemming.dataplane.sai.GetUdfAttributeResponse - 12, // 26: lemming.dataplane.sai.Udf.CreateUdfMatch:output_type -> lemming.dataplane.sai.CreateUdfMatchResponse - 14, // 27: lemming.dataplane.sai.Udf.RemoveUdfMatch:output_type -> lemming.dataplane.sai.RemoveUdfMatchResponse - 16, // 28: lemming.dataplane.sai.Udf.GetUdfMatchAttribute:output_type -> lemming.dataplane.sai.GetUdfMatchAttributeResponse - 18, // 29: lemming.dataplane.sai.Udf.CreateUdfGroup:output_type -> lemming.dataplane.sai.CreateUdfGroupResponse - 20, // 30: lemming.dataplane.sai.Udf.RemoveUdfGroup:output_type -> lemming.dataplane.sai.RemoveUdfGroupResponse - 22, // 31: lemming.dataplane.sai.Udf.GetUdfGroupAttribute:output_type -> lemming.dataplane.sai.GetUdfGroupAttributeResponse - 22, // [22:32] is the sub-list for method output_type - 12, // [12:22] 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 + 25, // 7: lemming.dataplane.sai.CreateUdfMatchRequest.l4_dst_port_type:type_name -> lemming.dataplane.sai.AclFieldData + 1, // 8: lemming.dataplane.sai.GetUdfMatchAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.UdfMatchAttr + 26, // 9: lemming.dataplane.sai.GetUdfMatchAttributeResponse.attr:type_name -> lemming.dataplane.sai.UdfMatchAttribute + 27, // 10: lemming.dataplane.sai.CreateUdfGroupRequest.type:type_name -> lemming.dataplane.sai.UdfGroupType + 2, // 11: lemming.dataplane.sai.GetUdfGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.UdfGroupAttr + 28, // 12: lemming.dataplane.sai.GetUdfGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.UdfGroupAttribute + 3, // 13: lemming.dataplane.sai.Udf.CreateUdf:input_type -> lemming.dataplane.sai.CreateUdfRequest + 5, // 14: lemming.dataplane.sai.Udf.RemoveUdf:input_type -> lemming.dataplane.sai.RemoveUdfRequest + 7, // 15: lemming.dataplane.sai.Udf.SetUdfAttribute:input_type -> lemming.dataplane.sai.SetUdfAttributeRequest + 9, // 16: lemming.dataplane.sai.Udf.GetUdfAttribute:input_type -> lemming.dataplane.sai.GetUdfAttributeRequest + 11, // 17: lemming.dataplane.sai.Udf.CreateUdfMatch:input_type -> lemming.dataplane.sai.CreateUdfMatchRequest + 13, // 18: lemming.dataplane.sai.Udf.RemoveUdfMatch:input_type -> lemming.dataplane.sai.RemoveUdfMatchRequest + 15, // 19: lemming.dataplane.sai.Udf.GetUdfMatchAttribute:input_type -> lemming.dataplane.sai.GetUdfMatchAttributeRequest + 17, // 20: lemming.dataplane.sai.Udf.CreateUdfGroup:input_type -> lemming.dataplane.sai.CreateUdfGroupRequest + 19, // 21: lemming.dataplane.sai.Udf.RemoveUdfGroup:input_type -> lemming.dataplane.sai.RemoveUdfGroupRequest + 21, // 22: lemming.dataplane.sai.Udf.GetUdfGroupAttribute:input_type -> lemming.dataplane.sai.GetUdfGroupAttributeRequest + 4, // 23: lemming.dataplane.sai.Udf.CreateUdf:output_type -> lemming.dataplane.sai.CreateUdfResponse + 6, // 24: lemming.dataplane.sai.Udf.RemoveUdf:output_type -> lemming.dataplane.sai.RemoveUdfResponse + 8, // 25: lemming.dataplane.sai.Udf.SetUdfAttribute:output_type -> lemming.dataplane.sai.SetUdfAttributeResponse + 10, // 26: lemming.dataplane.sai.Udf.GetUdfAttribute:output_type -> lemming.dataplane.sai.GetUdfAttributeResponse + 12, // 27: lemming.dataplane.sai.Udf.CreateUdfMatch:output_type -> lemming.dataplane.sai.CreateUdfMatchResponse + 14, // 28: lemming.dataplane.sai.Udf.RemoveUdfMatch:output_type -> lemming.dataplane.sai.RemoveUdfMatchResponse + 16, // 29: lemming.dataplane.sai.Udf.GetUdfMatchAttribute:output_type -> lemming.dataplane.sai.GetUdfMatchAttributeResponse + 18, // 30: lemming.dataplane.sai.Udf.CreateUdfGroup:output_type -> lemming.dataplane.sai.CreateUdfGroupResponse + 20, // 31: lemming.dataplane.sai.Udf.RemoveUdfGroup:output_type -> lemming.dataplane.sai.RemoveUdfGroupResponse + 22, // 32: lemming.dataplane.sai.Udf.GetUdfGroupAttribute:output_type -> lemming.dataplane.sai.GetUdfGroupAttributeResponse + 23, // [23:33] is the sub-list for method output_type + 13, // [13:23] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_udf_proto_init() } diff --git a/dataplane/proto/sai/udf.proto b/dataplane/proto/sai/udf.proto index 4e44b1b9..d755c1d1 100644 --- a/dataplane/proto/sai/udf.proto +++ b/dataplane/proto/sai/udf.proto @@ -7,134 +7,138 @@ 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_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]; + 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 25f35fbd..12141ca7 100644 --- a/dataplane/proto/sai/virtual_router.proto +++ b/dataplane/proto/sai/virtual_router.proto @@ -7,74 +7,68 @@ 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.proto b/dataplane/proto/sai/vlan.proto index 2424d7a4..ad0bb174 100644 --- a/dataplane/proto/sai/vlan.proto +++ b/dataplane/proto/sai/vlan.proto @@ -7,205 +7,185 @@ 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; } 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]; } 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]; +} + +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.pb.go b/dataplane/proto/sai/wred.pb.go index 71afe8c8..4c168e16 100644 --- a/dataplane/proto/sai/wred.pb.go +++ b/dataplane/proto/sai/wred.pb.go @@ -54,6 +54,20 @@ const ( WredAttr_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD WredAttr = 24 WredAttr_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD WredAttr = 25 WredAttr_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY WredAttr = 26 + WredAttr_WRED_ATTR_GREEN_MIN_THRESHOLD_64 WredAttr = 27 + WredAttr_WRED_ATTR_GREEN_MAX_THRESHOLD_64 WredAttr = 28 + WredAttr_WRED_ATTR_YELLOW_MIN_THRESHOLD_64 WredAttr = 29 + WredAttr_WRED_ATTR_YELLOW_MAX_THRESHOLD_64 WredAttr = 30 + WredAttr_WRED_ATTR_RED_MIN_THRESHOLD_64 WredAttr = 31 + WredAttr_WRED_ATTR_RED_MAX_THRESHOLD_64 WredAttr = 32 + WredAttr_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64 WredAttr = 33 + WredAttr_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64 WredAttr = 34 + WredAttr_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64 WredAttr = 35 + WredAttr_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64 WredAttr = 36 + WredAttr_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64 WredAttr = 37 + WredAttr_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64 WredAttr = 38 + WredAttr_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64 WredAttr = 39 + WredAttr_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64 WredAttr = 40 ) // Enum value maps for WredAttr. @@ -86,6 +100,20 @@ var ( 24: "WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD", 25: "WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD", 26: "WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY", + 27: "WRED_ATTR_GREEN_MIN_THRESHOLD_64", + 28: "WRED_ATTR_GREEN_MAX_THRESHOLD_64", + 29: "WRED_ATTR_YELLOW_MIN_THRESHOLD_64", + 30: "WRED_ATTR_YELLOW_MAX_THRESHOLD_64", + 31: "WRED_ATTR_RED_MIN_THRESHOLD_64", + 32: "WRED_ATTR_RED_MAX_THRESHOLD_64", + 33: "WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64", + 34: "WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64", + 35: "WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64", + 36: "WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64", + 37: "WRED_ATTR_ECN_RED_MIN_THRESHOLD_64", + 38: "WRED_ATTR_ECN_RED_MAX_THRESHOLD_64", + 39: "WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64", + 40: "WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64", } WredAttr_value = map[string]int32{ "WRED_ATTR_UNSPECIFIED": 0, @@ -115,6 +143,20 @@ var ( "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, } ) @@ -174,6 +216,20 @@ type CreateWredRequest struct { EcnColorUnawareMinThreshold *uint32 `protobuf:"varint,25,opt,name=ecn_color_unaware_min_threshold,json=ecnColorUnawareMinThreshold,proto3,oneof" json:"ecn_color_unaware_min_threshold,omitempty"` EcnColorUnawareMaxThreshold *uint32 `protobuf:"varint,26,opt,name=ecn_color_unaware_max_threshold,json=ecnColorUnawareMaxThreshold,proto3,oneof" json:"ecn_color_unaware_max_threshold,omitempty"` EcnColorUnawareMarkProbability *uint32 `protobuf:"varint,27,opt,name=ecn_color_unaware_mark_probability,json=ecnColorUnawareMarkProbability,proto3,oneof" json:"ecn_color_unaware_mark_probability,omitempty"` + GreenMinThreshold_64 *uint64 `protobuf:"varint,28,opt,name=green_min_threshold_64,json=greenMinThreshold64,proto3,oneof" json:"green_min_threshold_64,omitempty"` + GreenMaxThreshold_64 *uint64 `protobuf:"varint,29,opt,name=green_max_threshold_64,json=greenMaxThreshold64,proto3,oneof" json:"green_max_threshold_64,omitempty"` + YellowMinThreshold_64 *uint64 `protobuf:"varint,30,opt,name=yellow_min_threshold_64,json=yellowMinThreshold64,proto3,oneof" json:"yellow_min_threshold_64,omitempty"` + YellowMaxThreshold_64 *uint64 `protobuf:"varint,31,opt,name=yellow_max_threshold_64,json=yellowMaxThreshold64,proto3,oneof" json:"yellow_max_threshold_64,omitempty"` + RedMinThreshold_64 *uint64 `protobuf:"varint,32,opt,name=red_min_threshold_64,json=redMinThreshold64,proto3,oneof" json:"red_min_threshold_64,omitempty"` + RedMaxThreshold_64 *uint64 `protobuf:"varint,33,opt,name=red_max_threshold_64,json=redMaxThreshold64,proto3,oneof" json:"red_max_threshold_64,omitempty"` + EcnGreenMinThreshold_64 *uint64 `protobuf:"varint,34,opt,name=ecn_green_min_threshold_64,json=ecnGreenMinThreshold64,proto3,oneof" json:"ecn_green_min_threshold_64,omitempty"` + EcnGreenMaxThreshold_64 *uint64 `protobuf:"varint,35,opt,name=ecn_green_max_threshold_64,json=ecnGreenMaxThreshold64,proto3,oneof" json:"ecn_green_max_threshold_64,omitempty"` + EcnYellowMinThreshold_64 *uint64 `protobuf:"varint,36,opt,name=ecn_yellow_min_threshold_64,json=ecnYellowMinThreshold64,proto3,oneof" json:"ecn_yellow_min_threshold_64,omitempty"` + EcnYellowMaxThreshold_64 *uint64 `protobuf:"varint,37,opt,name=ecn_yellow_max_threshold_64,json=ecnYellowMaxThreshold64,proto3,oneof" json:"ecn_yellow_max_threshold_64,omitempty"` + EcnRedMinThreshold_64 *uint64 `protobuf:"varint,38,opt,name=ecn_red_min_threshold_64,json=ecnRedMinThreshold64,proto3,oneof" json:"ecn_red_min_threshold_64,omitempty"` + EcnRedMaxThreshold_64 *uint64 `protobuf:"varint,39,opt,name=ecn_red_max_threshold_64,json=ecnRedMaxThreshold64,proto3,oneof" json:"ecn_red_max_threshold_64,omitempty"` + EcnColorUnawareMinThreshold_64 *uint64 `protobuf:"varint,40,opt,name=ecn_color_unaware_min_threshold_64,json=ecnColorUnawareMinThreshold64,proto3,oneof" json:"ecn_color_unaware_min_threshold_64,omitempty"` + EcnColorUnawareMaxThreshold_64 *uint64 `protobuf:"varint,41,opt,name=ecn_color_unaware_max_threshold_64,json=ecnColorUnawareMaxThreshold64,proto3,oneof" json:"ecn_color_unaware_max_threshold_64,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -397,6 +453,104 @@ func (x *CreateWredRequest) GetEcnColorUnawareMarkProbability() uint32 { return 0 } +func (x *CreateWredRequest) GetGreenMinThreshold_64() uint64 { + if x != nil && x.GreenMinThreshold_64 != nil { + return *x.GreenMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetGreenMaxThreshold_64() uint64 { + if x != nil && x.GreenMaxThreshold_64 != nil { + return *x.GreenMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetYellowMinThreshold_64() uint64 { + if x != nil && x.YellowMinThreshold_64 != nil { + return *x.YellowMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetYellowMaxThreshold_64() uint64 { + if x != nil && x.YellowMaxThreshold_64 != nil { + return *x.YellowMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetRedMinThreshold_64() uint64 { + if x != nil && x.RedMinThreshold_64 != nil { + return *x.RedMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetRedMaxThreshold_64() uint64 { + if x != nil && x.RedMaxThreshold_64 != nil { + return *x.RedMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnGreenMinThreshold_64() uint64 { + if x != nil && x.EcnGreenMinThreshold_64 != nil { + return *x.EcnGreenMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnGreenMaxThreshold_64() uint64 { + if x != nil && x.EcnGreenMaxThreshold_64 != nil { + return *x.EcnGreenMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnYellowMinThreshold_64() uint64 { + if x != nil && x.EcnYellowMinThreshold_64 != nil { + return *x.EcnYellowMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnYellowMaxThreshold_64() uint64 { + if x != nil && x.EcnYellowMaxThreshold_64 != nil { + return *x.EcnYellowMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnRedMinThreshold_64() uint64 { + if x != nil && x.EcnRedMinThreshold_64 != nil { + return *x.EcnRedMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnRedMaxThreshold_64() uint64 { + if x != nil && x.EcnRedMaxThreshold_64 != nil { + return *x.EcnRedMaxThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnColorUnawareMinThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMinThreshold_64 != nil { + return *x.EcnColorUnawareMinThreshold_64 + } + return 0 +} + +func (x *CreateWredRequest) GetEcnColorUnawareMaxThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMaxThreshold_64 != nil { + return *x.EcnColorUnawareMaxThreshold_64 + } + return 0 +} + type CreateWredResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -550,6 +704,20 @@ type SetWredAttributeRequest struct { EcnColorUnawareMinThreshold *uint32 `protobuf:"varint,25,opt,name=ecn_color_unaware_min_threshold,json=ecnColorUnawareMinThreshold,proto3,oneof" json:"ecn_color_unaware_min_threshold,omitempty"` EcnColorUnawareMaxThreshold *uint32 `protobuf:"varint,26,opt,name=ecn_color_unaware_max_threshold,json=ecnColorUnawareMaxThreshold,proto3,oneof" json:"ecn_color_unaware_max_threshold,omitempty"` EcnColorUnawareMarkProbability *uint32 `protobuf:"varint,27,opt,name=ecn_color_unaware_mark_probability,json=ecnColorUnawareMarkProbability,proto3,oneof" json:"ecn_color_unaware_mark_probability,omitempty"` + GreenMinThreshold_64 *uint64 `protobuf:"varint,28,opt,name=green_min_threshold_64,json=greenMinThreshold64,proto3,oneof" json:"green_min_threshold_64,omitempty"` + GreenMaxThreshold_64 *uint64 `protobuf:"varint,29,opt,name=green_max_threshold_64,json=greenMaxThreshold64,proto3,oneof" json:"green_max_threshold_64,omitempty"` + YellowMinThreshold_64 *uint64 `protobuf:"varint,30,opt,name=yellow_min_threshold_64,json=yellowMinThreshold64,proto3,oneof" json:"yellow_min_threshold_64,omitempty"` + YellowMaxThreshold_64 *uint64 `protobuf:"varint,31,opt,name=yellow_max_threshold_64,json=yellowMaxThreshold64,proto3,oneof" json:"yellow_max_threshold_64,omitempty"` + RedMinThreshold_64 *uint64 `protobuf:"varint,32,opt,name=red_min_threshold_64,json=redMinThreshold64,proto3,oneof" json:"red_min_threshold_64,omitempty"` + RedMaxThreshold_64 *uint64 `protobuf:"varint,33,opt,name=red_max_threshold_64,json=redMaxThreshold64,proto3,oneof" json:"red_max_threshold_64,omitempty"` + EcnGreenMinThreshold_64 *uint64 `protobuf:"varint,34,opt,name=ecn_green_min_threshold_64,json=ecnGreenMinThreshold64,proto3,oneof" json:"ecn_green_min_threshold_64,omitempty"` + EcnGreenMaxThreshold_64 *uint64 `protobuf:"varint,35,opt,name=ecn_green_max_threshold_64,json=ecnGreenMaxThreshold64,proto3,oneof" json:"ecn_green_max_threshold_64,omitempty"` + EcnYellowMinThreshold_64 *uint64 `protobuf:"varint,36,opt,name=ecn_yellow_min_threshold_64,json=ecnYellowMinThreshold64,proto3,oneof" json:"ecn_yellow_min_threshold_64,omitempty"` + EcnYellowMaxThreshold_64 *uint64 `protobuf:"varint,37,opt,name=ecn_yellow_max_threshold_64,json=ecnYellowMaxThreshold64,proto3,oneof" json:"ecn_yellow_max_threshold_64,omitempty"` + EcnRedMinThreshold_64 *uint64 `protobuf:"varint,38,opt,name=ecn_red_min_threshold_64,json=ecnRedMinThreshold64,proto3,oneof" json:"ecn_red_min_threshold_64,omitempty"` + EcnRedMaxThreshold_64 *uint64 `protobuf:"varint,39,opt,name=ecn_red_max_threshold_64,json=ecnRedMaxThreshold64,proto3,oneof" json:"ecn_red_max_threshold_64,omitempty"` + EcnColorUnawareMinThreshold_64 *uint64 `protobuf:"varint,40,opt,name=ecn_color_unaware_min_threshold_64,json=ecnColorUnawareMinThreshold64,proto3,oneof" json:"ecn_color_unaware_min_threshold_64,omitempty"` + EcnColorUnawareMaxThreshold_64 *uint64 `protobuf:"varint,41,opt,name=ecn_color_unaware_max_threshold_64,json=ecnColorUnawareMaxThreshold64,proto3,oneof" json:"ecn_color_unaware_max_threshold_64,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -773,6 +941,104 @@ func (x *SetWredAttributeRequest) GetEcnColorUnawareMarkProbability() uint32 { return 0 } +func (x *SetWredAttributeRequest) GetGreenMinThreshold_64() uint64 { + if x != nil && x.GreenMinThreshold_64 != nil { + return *x.GreenMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetGreenMaxThreshold_64() uint64 { + if x != nil && x.GreenMaxThreshold_64 != nil { + return *x.GreenMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetYellowMinThreshold_64() uint64 { + if x != nil && x.YellowMinThreshold_64 != nil { + return *x.YellowMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetYellowMaxThreshold_64() uint64 { + if x != nil && x.YellowMaxThreshold_64 != nil { + return *x.YellowMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetRedMinThreshold_64() uint64 { + if x != nil && x.RedMinThreshold_64 != nil { + return *x.RedMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetRedMaxThreshold_64() uint64 { + if x != nil && x.RedMaxThreshold_64 != nil { + return *x.RedMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnGreenMinThreshold_64() uint64 { + if x != nil && x.EcnGreenMinThreshold_64 != nil { + return *x.EcnGreenMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnGreenMaxThreshold_64() uint64 { + if x != nil && x.EcnGreenMaxThreshold_64 != nil { + return *x.EcnGreenMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnYellowMinThreshold_64() uint64 { + if x != nil && x.EcnYellowMinThreshold_64 != nil { + return *x.EcnYellowMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnYellowMaxThreshold_64() uint64 { + if x != nil && x.EcnYellowMaxThreshold_64 != nil { + return *x.EcnYellowMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnRedMinThreshold_64() uint64 { + if x != nil && x.EcnRedMinThreshold_64 != nil { + return *x.EcnRedMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnRedMaxThreshold_64() uint64 { + if x != nil && x.EcnRedMaxThreshold_64 != nil { + return *x.EcnRedMaxThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnColorUnawareMinThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMinThreshold_64 != nil { + return *x.EcnColorUnawareMinThreshold_64 + } + return 0 +} + +func (x *SetWredAttributeRequest) GetEcnColorUnawareMaxThreshold_64() uint64 { + if x != nil && x.EcnColorUnawareMaxThreshold_64 != nil { + return *x.EcnColorUnawareMaxThreshold_64 + } + return 0 +} + type SetWredAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -913,7 +1179,7 @@ var file_dataplane_proto_sai_wred_proto_rawDesc = []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, 0xf9, 0x12, 0x0a, 0x11, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x1e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x65, 0x64, 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, 0x2e, 0x0a, 0x0c, 0x67, 0x72, 0x65, 0x65, 0x6e, @@ -1022,56 +1288,145 @@ var file_dataplane_proto_sai_wred_proto_rawDesc = []byte{ 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x1b, 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, 0x3a, - 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x14, 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, 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, + 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, 0x1c, 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, 0x1d, 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, 0x1e, + 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, 0x1f, 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, 0x20, 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, 0x21, 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, 0x22, 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, 0x23, + 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, 0x24, 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, 0x25, 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, 0x26, 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, 0x27, 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, + 0x28, 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, 0x29, 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, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, + 0x14, 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, 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, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x26, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, + 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x22, 0x26, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x65, 0x64, 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, 0x57, 0x72, 0x65, 0x64, 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, 0x57, 0x72, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf1, 0x12, 0x0a, 0x17, 0x53, + 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x81, 0x1e, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x57, 0x72, 0x65, 0x64, 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, 0x2e, 0x0a, 0x0c, 0x67, 0x72, 0x65, 0x65, @@ -1181,48 +1536,137 @@ var file_dataplane_proto_sai_wred_proto_rawDesc = []byte{ 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, - 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, + 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, 0x1c, 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, 0x1d, 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, + 0x1e, 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, - 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, + 0x5f, 0x36, 0x34, 0x18, 0x1f, 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, 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, + 0x64, 0x5f, 0x36, 0x34, 0x18, 0x20, 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, 0x21, 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, 0x22, 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, + 0x23, 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, 0x24, 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, 0x25, 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, 0x26, 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, 0x27, 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, 0x28, 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, 0x29, 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, 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, - 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, + 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, 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, - 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x1a, + 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, @@ -1236,7 +1680,7 @@ var file_dataplane_proto_sai_wred_proto_rawDesc = []byte{ 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, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xe1, 0x07, 0x0a, 0x08, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xa1, 0x0c, 0x0a, 0x08, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, @@ -1298,7 +1742,43 @@ var file_dataplane_proto_sai_wred_proto_rawDesc = []byte{ 0x58, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x19, 0x12, 0x30, 0x0a, 0x2c, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x1a, 0x32, + 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x1a, 0x12, + 0x24, 0x0a, 0x20, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, + 0x5f, 0x36, 0x34, 0x10, 0x1b, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, + 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, + 0x10, 0x1d, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, + 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x1e, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x52, 0x45, + 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, + 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x1f, 0x12, 0x22, 0x0a, + 0x1e, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x4d, + 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, + 0x20, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, + 0x43, 0x4e, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x48, 0x52, + 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x21, 0x12, 0x28, 0x0a, 0x24, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, + 0x5f, 0x36, 0x34, 0x10, 0x22, 0x12, 0x29, 0x0a, 0x25, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x4d, 0x49, + 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x23, + 0x12, 0x29, 0x0a, 0x25, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, + 0x4e, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, + 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x24, 0x12, 0x26, 0x0a, 0x22, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x52, 0x45, 0x44, + 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, + 0x34, 0x10, 0x25, 0x12, 0x26, 0x0a, 0x22, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x48, 0x52, + 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x26, 0x12, 0x30, 0x0a, 0x2c, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x43, 0x4f, 0x4c, + 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, + 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x27, 0x12, 0x30, 0x0a, + 0x2c, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x43, + 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x58, + 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x36, 0x34, 0x10, 0x28, 0x32, 0xbe, 0x03, 0x0a, 0x04, 0x57, 0x72, 0x65, 0x64, 0x12, 0x63, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x72, 0x65, 0x64, 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, diff --git a/dataplane/proto/sai/wred.proto b/dataplane/proto/sai/wred.proto index f1f8dd15..e992022c 100644 --- a/dataplane/proto/sai/wred.proto +++ b/dataplane/proto/sai/wred.proto @@ -7,125 +7,167 @@ 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_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]; + 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]; + 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 4a3cd7e6..6254725d 100644 --- a/dataplane/standalone/sai/acl.cc +++ b/dataplane/standalone/sai/acl.cc @@ -13,2874 +13,2481 @@ // 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 = 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; - } - } - 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_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; - } - } - 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; - } - } - 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_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; - } - } - - 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_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; - } - - 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_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; - } - } - - 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; -} - -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; - } - } - - 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__; - - 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; - } - } - - 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; +} + diff --git a/dataplane/standalone/sai/acl.h b/dataplane/standalone/sai/acl.h index 4b59e4f7..6be12fdb 100644 --- a/dataplane/standalone/sai/acl.h +++ b/dataplane/standalone/sai/acl.h @@ -25,85 +25,62 @@ 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_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_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_remove_acl_table_group_member(sai_object_id_t acl_table_group_member_id); + +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_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_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_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_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_remove_acl_table_chain_group(sai_object_id_t acl_table_chain_group_id); -sai_status_t l_remove_acl_table_group_member( - sai_object_id_t acl_table_group_member_id); +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_set_acl_table_group_member_attribute( - sai_object_id_t acl_table_group_member_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); -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); #endif // DATAPLANE_STANDALONE_SAI_ACL_H_ diff --git a/dataplane/standalone/sai/ars.cc b/dataplane/standalone/sai/ars.cc new file mode 100644 index 00000000..6e2a4046 --- /dev/null +++ b/dataplane/standalone/sai/ars.cc @@ -0,0 +1,29 @@ +// 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/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 = { +}; + + + + + + diff --git a/dataplane/standalone/sai/ars.h b/dataplane/standalone/sai/ars.h new file mode 100644 index 00000000..f14bac25 --- /dev/null +++ b/dataplane/standalone/sai/ars.h @@ -0,0 +1,34 @@ +// 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_ARS_H_ +#define DATAPLANE_STANDALONE_SAI_ARS_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..a8a9f7f3 --- /dev/null +++ b/dataplane/standalone/sai/ars_profile.cc @@ -0,0 +1,29 @@ +// 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/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 = { +}; + + + + + + diff --git a/dataplane/standalone/sai/ars_profile.h b/dataplane/standalone/sai/ars_profile.h new file mode 100644 index 00000000..712cda16 --- /dev/null +++ b/dataplane/standalone/sai/ars_profile.h @@ -0,0 +1,34 @@ +// 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_ARS_PROFILE_H_ +#define DATAPLANE_STANDALONE_SAI_ARS_PROFILE_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 14f97e09..fea8f31b 100644 --- a/dataplane/standalone/sai/bfd.cc +++ b/dataplane/standalone/sai/bfd.cc @@ -13,484 +13,462 @@ // 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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__; + + 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; } -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; - } - - 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_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; } -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; - } - } - - return SAI_STATUS_SUCCESS; + 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; } -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; +} - 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__; +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; +} - 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 52418d6d..bdbe5bad 100644 --- a/dataplane/standalone/sai/bfd.h +++ b/dataplane/standalone/sai/bfd.h @@ -25,33 +25,20 @@ 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_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_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(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_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_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_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); -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 4cc48ba9..093ddbd9 100644 --- a/dataplane/standalone/sai/bmtor.cc +++ b/dataplane/standalone/sai/bmtor.cc @@ -13,654 +13,574 @@ // 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; -} - -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; + +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; +} + diff --git a/dataplane/standalone/sai/bmtor.h b/dataplane/standalone/sai/bmtor.h index 50879ed8..79904916 100644 --- a/dataplane/standalone/sai/bmtor.h +++ b/dataplane/standalone/sai/bmtor.h @@ -25,88 +25,48 @@ 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_remove_table_bitmap_classification_entry( - sai_object_id_t table_bitmap_classification_entry_id); +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_set_table_bitmap_classification_entry_attribute( - sai_object_id_t table_bitmap_classification_entry_id, - const sai_attribute_t *attr); +sai_status_t l_remove_table_bitmap_classification_entry(sai_object_id_t table_bitmap_classification_entry_id); -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_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_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_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_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(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_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_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_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_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_remove_table_bitmap_router_entry( - sai_object_id_t table_bitmap_router_entry_id); +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_set_table_bitmap_router_entry_attribute( - sai_object_id_t table_bitmap_router_entry_id, const sai_attribute_t *attr); +sai_status_t l_remove_table_bitmap_router_entry(sai_object_id_t table_bitmap_router_entry_id); -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_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_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_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_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(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_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_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_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_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_remove_table_meta_tunnel_entry( - sai_object_id_t table_meta_tunnel_entry_id); +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_set_table_meta_tunnel_entry_attribute( - sai_object_id_t table_meta_tunnel_entry_id, const sai_attribute_t *attr); +sai_status_t l_remove_table_meta_tunnel_entry(sai_object_id_t table_meta_tunnel_entry_id); -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_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_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_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_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_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_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 2ac2548c..05f0d32f 100644 --- a/dataplane/standalone/sai/bridge.cc +++ b/dataplane/standalone/sai/bridge.cc @@ -13,599 +13,557 @@ // 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; +} + +} +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; +} + +} +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; - } - - 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_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_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; - } - } - - 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + 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; - } - - 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_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_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; - } - } - - 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/bridge.h b/dataplane/standalone/sai/bridge.h index 9479479c..c711118d 100644 --- a/dataplane/standalone/sai/bridge.h +++ b/dataplane/standalone/sai/bridge.h @@ -25,60 +25,34 @@ 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_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_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(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_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_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_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); -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 990f1536..fa16cdde 100644 --- a/dataplane/standalone/sai/buffer.cc +++ b/dataplane/standalone/sai/buffer.cc @@ -13,686 +13,645 @@ // 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, }; -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; +} + +} +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; } 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; +} + + 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; } 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; } + diff --git a/dataplane/standalone/sai/buffer.h b/dataplane/standalone/sai/buffer.h index f206447c..90a3446d 100644 --- a/dataplane/standalone/sai/buffer.h +++ b/dataplane/standalone/sai/buffer.h @@ -25,74 +25,42 @@ 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); #endif // DATAPLANE_STANDALONE_SAI_BUFFER_H_ diff --git a/dataplane/standalone/sai/counter.cc b/dataplane/standalone/sai/counter.cc index cdd0e0aa..2732d5ae 100644 --- a/dataplane/standalone/sai/counter.cc +++ b/dataplane/standalone/sai/counter.cc @@ -13,212 +13,204 @@ // limitations under the License. #include "dataplane/standalone/sai/counter.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/counter.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/counter.pb.h" +#include 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; - - 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; - } - } - return msg; + +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; + + + 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; } -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; +} +return 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); + + 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; } 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; + 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; } -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; - } - - 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__; + + 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; } -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; - } - } - - 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_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; } -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; +} - 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__; +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; +} - 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 6f5d9dfd..15cdb3bd 100644 --- a/dataplane/standalone/sai/counter.h +++ b/dataplane/standalone/sai/counter.h @@ -25,31 +25,20 @@ 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_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_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(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_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_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_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); -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 new file mode 100644 index 00000000..a6753aba --- /dev/null +++ b/dataplane/standalone/sai/dash_acl.cc @@ -0,0 +1,37 @@ +// 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_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 = { +}; + + + + + + + + + + + + + + diff --git a/dataplane/standalone/sai/dash_acl.h b/dataplane/standalone/sai/dash_acl.h new file mode 100644 index 00000000..7f404ea2 --- /dev/null +++ b/dataplane/standalone/sai/dash_acl.h @@ -0,0 +1,42 @@ +// 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_ACL_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_ACL_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_acl_api_t l_dash_acl; + + + + + + + + + + + + + + + +#endif // DATAPLANE_STANDALONE_SAI_DASH_ACL_H_ diff --git a/dataplane/standalone/sai/dash_direction_lookup.cc b/dataplane/standalone/sai/dash_direction_lookup.cc new file mode 100644 index 00000000..701021e1 --- /dev/null +++ b/dataplane/standalone/sai/dash_direction_lookup.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_direction_lookup.h b/dataplane/standalone/sai/dash_direction_lookup.h new file mode 100644 index 00000000..d2192a1e --- /dev/null +++ b/dataplane/standalone/sai/dash_direction_lookup.h @@ -0,0 +1,36 @@ +// 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_DIRECTION_LOOKUP_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_DIRECTION_LOOKUP_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..c3f82f59 --- /dev/null +++ b/dataplane/standalone/sai/dash_eni.cc @@ -0,0 +1,40 @@ +// 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_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 = { +}; + + + + + + + + + + + + + + + + + diff --git a/dataplane/standalone/sai/dash_eni.h b/dataplane/standalone/sai/dash_eni.h new file mode 100644 index 00000000..c3efe002 --- /dev/null +++ b/dataplane/standalone/sai/dash_eni.h @@ -0,0 +1,45 @@ +// 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_ENI_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_ENI_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_eni_api_t l_dash_eni; + + + + + + + + + + + + + + + + + + +#endif // DATAPLANE_STANDALONE_SAI_DASH_ENI_H_ diff --git a/dataplane/standalone/sai/dash_inbound_routing.cc b/dataplane/standalone/sai/dash_inbound_routing.cc new file mode 100644 index 00000000..19c34f88 --- /dev/null +++ b/dataplane/standalone/sai/dash_inbound_routing.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_inbound_routing.h b/dataplane/standalone/sai/dash_inbound_routing.h new file mode 100644 index 00000000..7b040363 --- /dev/null +++ b/dataplane/standalone/sai/dash_inbound_routing.h @@ -0,0 +1,36 @@ +// 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_INBOUND_ROUTING_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_INBOUND_ROUTING_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..98403448 --- /dev/null +++ b/dataplane/standalone/sai/dash_meter.cc @@ -0,0 +1,43 @@ +// 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_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 = { +}; + + + + + + + + + + + + + + + + + + + + diff --git a/dataplane/standalone/sai/dash_meter.h b/dataplane/standalone/sai/dash_meter.h new file mode 100644 index 00000000..cfc14b98 --- /dev/null +++ b/dataplane/standalone/sai/dash_meter.h @@ -0,0 +1,48 @@ +// 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_METER_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_METER_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..10694780 --- /dev/null +++ b/dataplane/standalone/sai/dash_outbound_ca_to_pa.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_outbound_ca_to_pa.h b/dataplane/standalone/sai/dash_outbound_ca_to_pa.h new file mode 100644 index 00000000..18f8acee --- /dev/null +++ b/dataplane/standalone/sai/dash_outbound_ca_to_pa.h @@ -0,0 +1,36 @@ +// 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_OUTBOUND_CA_TO_PA_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_OUTBOUND_CA_TO_PA_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..2b29affb --- /dev/null +++ b/dataplane/standalone/sai/dash_outbound_routing.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_outbound_routing.h b/dataplane/standalone/sai/dash_outbound_routing.h new file mode 100644 index 00000000..925cabaf --- /dev/null +++ b/dataplane/standalone/sai/dash_outbound_routing.h @@ -0,0 +1,36 @@ +// 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_OUTBOUND_ROUTING_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_OUTBOUND_ROUTING_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..1987c7f8 --- /dev/null +++ b/dataplane/standalone/sai/dash_pa_validation.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_pa_validation.h b/dataplane/standalone/sai/dash_pa_validation.h new file mode 100644 index 00000000..e6e0d3e0 --- /dev/null +++ b/dataplane/standalone/sai/dash_pa_validation.h @@ -0,0 +1,36 @@ +// 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_PA_VALIDATION_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_PA_VALIDATION_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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_vip.cc b/dataplane/standalone/sai/dash_vip.cc new file mode 100644 index 00000000..ab8e131d --- /dev/null +++ b/dataplane/standalone/sai/dash_vip.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_vip.h b/dataplane/standalone/sai/dash_vip.h new file mode 100644 index 00000000..09b408d7 --- /dev/null +++ b/dataplane/standalone/sai/dash_vip.h @@ -0,0 +1,36 @@ +// 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_VIP_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_VIP_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 new file mode 100644 index 00000000..a16b1381 --- /dev/null +++ b/dataplane/standalone/sai/dash_vnet.cc @@ -0,0 +1,31 @@ +// 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_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 = { +}; + + + + + + + + diff --git a/dataplane/standalone/sai/dash_vnet.h b/dataplane/standalone/sai/dash_vnet.h new file mode 100644 index 00000000..cb10641e --- /dev/null +++ b/dataplane/standalone/sai/dash_vnet.h @@ -0,0 +1,36 @@ +// 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_VNET_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_VNET_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 d0215c89..23ec8d7e 100644 --- a/dataplane/standalone/sai/debug_counter.cc +++ b/dataplane/standalone/sai/debug_counter.cc @@ -13,192 +13,179 @@ // limitations under the License. #include "dataplane/standalone/sai/debug_counter.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/debug_counter.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/debug_counter.pb.h" +#include 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/debug_counter.h b/dataplane/standalone/sai/debug_counter.h index 6d1175e3..efed3212 100644 --- a/dataplane/standalone/sai/debug_counter.h +++ b/dataplane/standalone/sai/debug_counter.h @@ -25,18 +25,14 @@ 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_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_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 258556d4..9fe61bfd 100644 --- a/dataplane/standalone/sai/dtel.cc +++ b/dataplane/standalone/sai/dtel.cc @@ -13,920 +13,924 @@ // limitations under the License. #include "dataplane/standalone/sai/dtel.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dtel.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/dtel.pb.h" +#include 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; -} - -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; + 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; +} + diff --git a/dataplane/standalone/sai/dtel.h b/dataplane/standalone/sai/dtel.h index 176d5d5c..523beca5 100644 --- a/dataplane/standalone/sai/dtel.h +++ b/dataplane/standalone/sai/dtel.h @@ -25,71 +25,46 @@ 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_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_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 f4633f9d..4db4136b 100644 --- a/dataplane/standalone/sai/enum.cc +++ b/dataplane/standalone/sai/enum.cc @@ -15,27057 +15,21215 @@ #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; - 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; - - 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; - - 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_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; - - 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_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; - - 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; - - 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; - - 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_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; - - 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_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; - - 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::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; - - 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; - - 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; - - 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; - - 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::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_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_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_MAX: - return lemming::dataplane::sai::API_MAX; - - 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_MAX: - return SAI_API_MAX; - - 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; - - 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; - - 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; - - 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; - - 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::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::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::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_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_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_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_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; - - 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; - - 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; - - 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; - - 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; - - 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; - - 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_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_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_MAX: - return lemming::dataplane::sai::OBJECT_TYPE_MAX; - - 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_MAX: - return SAI_OBJECT_TYPE_MAX; - - 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::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::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; - - 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; - - 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::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::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::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_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_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; - - 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; - - 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::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; - - 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; - - 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::PortStat convert_sai_port_stat_t_to_proto( - const sai_int32_t val) { - switch (val) { - case SAI_PORT_STAT_IF_IN_OCTETS: - return lemming::dataplane::sai::PORT_STAT_IF_IN_OCTETS; - - 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_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; - - 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_IF_IN_OCTETS: - return SAI_PORT_STAT_IF_IN_OCTETS; - - 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_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; - - default: - return SAI_PORT_STAT_IF_IN_OCTETS; - } -} - -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_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_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; - - 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; - - 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; - - 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; - - 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; - - 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; - - 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::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::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; - - 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; - - 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::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_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_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; - - 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; - - 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; - - 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; - - 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::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; - - 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; - - 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; - - 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; - - 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::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; - - 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; - - 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; - - 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; - - 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; - - 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; - - 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; - - 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; - - 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_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_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; - - 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; - - 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; - - 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; - - 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; - } +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(); } -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::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; + } } - -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; - - default: - return lemming::dataplane::sai::WRED_ATTR_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_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::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; + + 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; + + 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(); } -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; - - 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 6bb5b448..3c73c86f 100644 --- a/dataplane/standalone/sai/enum.h +++ b/dataplane/standalone/sai/enum.h @@ -16,55 +16,132 @@ #ifndef DATAPLANE_STANDALONE_SAI_ENUM_H_ #define DATAPLANE_STANDALONE_SAI_ENUM_H_ -#include "dataplane/proto/sai/acl.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/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/dash_acl.pb.h" + +#include "dataplane/proto/sai/scheduler_group.pb.h" + +#include "dataplane/proto/sai/switch.pb.h" + +#include "dataplane/proto/sai/udf.pb.h" + +#include "dataplane/proto/sai/virtual_router.pb.h" + #include "dataplane/proto/sai/hash.pb.h" + +#include "dataplane/proto/sai/stp.pb.h" + +#include "dataplane/proto/sai/tam.pb.h" + +#include "dataplane/proto/sai/dash_pa_validation.pb.h" + +#include "dataplane/proto/sai/system_port.pb.h" + +#include "dataplane/proto/sai/fdb.pb.h" + +#include "dataplane/proto/sai/macsec.pb.h" + +#include "dataplane/proto/sai/nat.pb.h" + +#include "dataplane/proto/sai/srv6.pb.h" + +#include "dataplane/proto/sai/qos_map.pb.h" + #include "dataplane/proto/sai/hostif.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/bmtor.pb.h" + +#include "dataplane/proto/sai/rpf_group.pb.h" + +#include "dataplane/proto/sai/isolation_group.pb.h" + #include "dataplane/proto/sai/l2mc_group.pb.h" -#include "dataplane/proto/sai/lag.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/next_hop_group.pb.h" + +#include "dataplane/proto/sai/dash_outbound_ca_to_pa.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/ars_profile.pb.h" + +#include "dataplane/proto/sai/dash_outbound_routing.pb.h" + +#include "dataplane/proto/sai/scheduler.pb.h" + +#include "dataplane/proto/sai/acl.pb.h" + #include "dataplane/proto/sai/next_hop.pb.h" -#include "dataplane/proto/sai/next_hop_group.pb.h" + +#include "dataplane/proto/sai/dash_vnet.pb.h" + +#include "dataplane/proto/sai/dash_inbound_routing.pb.h" + +#include "dataplane/proto/sai/dash_eni.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/scheduler_group.pb.h" -#include "dataplane/proto/sai/srv6.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/tam.pb.h" + +#include "dataplane/proto/sai/wred.pb.h" + +#include "dataplane/proto/sai/buffer.pb.h" + #include "dataplane/proto/sai/tunnel.pb.h" -#include "dataplane/proto/sai/udf.pb.h" -#include "dataplane/proto/sai/virtual_router.pb.h" + +#include "dataplane/proto/sai/bfd.pb.h" + +#include "dataplane/proto/sai/dash_vip.pb.h" + +#include "dataplane/proto/sai/ipmc.pb.h" + +#include "dataplane/proto/sai/mcast_fdb.pb.h" + +#include "dataplane/proto/sai/route.pb.h" + +#include "dataplane/proto/sai/generic_programmable.pb.h" + +#include "dataplane/proto/sai/counter.pb.h" + +#include "dataplane/proto/sai/ipsec.pb.h" + #include "dataplane/proto/sai/vlan.pb.h" -#include "dataplane/proto/sai/wred.pb.h" + +#include "dataplane/proto/sai/ars.pb.h" + +#include "dataplane/proto/sai/bridge.pb.h" + +#include "dataplane/proto/sai/ipmc_group.pb.h" + +#include "dataplane/proto/sai/mpls.pb.h" + +#include "dataplane/proto/sai/neighbor.pb.h" + +#include "dataplane/proto/sai/dash_direction_lookup.pb.h" + +#include "dataplane/proto/sai/queue.pb.h" + +#include "dataplane/proto/sai/twamp.pb.h" + +#include "dataplane/proto/sai/mirror.pb.h" + +#include "dataplane/proto/sai/port.pb.h" + +#include "dataplane/proto/sai/samplepacket.pb.h" + +#include "dataplane/proto/sai/dtel.pb.h" + +#include "dataplane/proto/sai/debug_counter.pb.h" + +#include "dataplane/proto/sai/poe.pb.h" + +#include "dataplane/proto/sai/dash_meter.pb.h" + +#include "dataplane/proto/sai/lag.pb.h" + extern "C" { #include "inc/sai.h" @@ -74,2929 +151,1541 @@ 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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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); + #endif // DATAPLANE_STANDALONE_SAI_ENUM_H_ diff --git a/dataplane/standalone/sai/fdb.cc b/dataplane/standalone/sai/fdb.cc index da8a20f7..a447c740 100644 --- a/dataplane/standalone/sai/fdb.cc +++ b/dataplane/standalone/sai/fdb.cc @@ -13,312 +13,301 @@ // limitations under the License. #include "dataplane/standalone/sai/fdb.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/fdb.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/fdb.pb.h" +#include 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::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; } -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 msg; +} - 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_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; + 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_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_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_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; + 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_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, - const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +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_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; + } + + 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++) { - } +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__; + return SAI_STATUS_NOT_IMPLEMENTED; +} - 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; - } +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; +} - 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 4680f1d7..10a58bf3 100644 --- a/dataplane/standalone/sai/fdb.h +++ b/dataplane/standalone/sai/fdb.h @@ -25,45 +25,24 @@ 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_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_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 b80c5e45..c84f7247 100644 --- a/dataplane/standalone/sai/generic_programmable.cc +++ b/dataplane/standalone/sai/generic_programmable.cc @@ -13,166 +13,161 @@ // limitations under the License. #include "dataplane/standalone/sai/generic_programmable.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/generic_programmable.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/generic_programmable.pb.h" +#include 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/generic_programmable.h b/dataplane/standalone/sai/generic_programmable.h index cf137777..edd97282 100644 --- a/dataplane/standalone/sai/generic_programmable.h +++ b/dataplane/standalone/sai/generic_programmable.h @@ -25,18 +25,14 @@ 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_remove_generic_programmable( - sai_object_id_t generic_programmable_id); +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_set_generic_programmable_attribute( - sai_object_id_t generic_programmable_id, const sai_attribute_t *attr); +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_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 92765f5e..940ac28c 100644 --- a/dataplane/standalone/sai/hash.cc +++ b/dataplane/standalone/sai/hash.cc @@ -13,328 +13,307 @@ // limitations under the License. #include "dataplane/standalone/sai/hash.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/hash.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/hash.pb.h" +#include 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; - } - } - return msg; + +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::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; +} +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; - } - - 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_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_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; + 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_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_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_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; + } + + 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_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; +} - 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__; + + 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; - } - } - - 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; } + + } + + return SAI_STATUS_SUCCESS; +} + diff --git a/dataplane/standalone/sai/hash.h b/dataplane/standalone/sai/hash.h index e6f2a6a6..27ec7e52 100644 --- a/dataplane/standalone/sai/hash.h +++ b/dataplane/standalone/sai/hash.h @@ -25,30 +25,22 @@ 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_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_get_hash_attribute(sai_object_id_t hash_id, uint32_t attr_count, - sai_attribute_t *attr_list); +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_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_remove_fine_grained_hash_field(sai_object_id_t fine_grained_hash_field_id); -sai_status_t l_remove_fine_grained_hash_field( - sai_object_id_t fine_grained_hash_field_id); +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_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); -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 bd3c0b80..49e9738b 100644 --- a/dataplane/standalone/sai/hostif.cc +++ b/dataplane/standalone/sai/hostif.cc @@ -13,915 +13,877 @@ // limitations under the License. #include "dataplane/standalone/sai/hostif.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/hostif.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/hostif.pb.h" +#include 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; + 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 96e50e03..77b1a91c 100644 --- a/dataplane/standalone/sai/hostif.h +++ b/dataplane/standalone/sai/hostif.h @@ -25,90 +25,54 @@ 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_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_get_hostif_trap_attribute(sai_object_id_t hostif_trap_id, uint32_t attr_count, sai_attribute_t *attr_list); -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_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_remove_hostif_user_defined_trap( - sai_object_id_t hostif_user_defined_trap_id); +sai_status_t l_remove_hostif_user_defined_trap(sai_object_id_t hostif_user_defined_trap_id); -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_set_hostif_user_defined_trap_attribute(sai_object_id_t hostif_user_defined_trap_id, const sai_attribute_t *attr); -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_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_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_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_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_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_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_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/ipmc.cc b/dataplane/standalone/sai/ipmc.cc index 4d9ef804..b75b5169 100644 --- a/dataplane/standalone/sai/ipmc.cc +++ b/dataplane/standalone/sai/ipmc.cc @@ -13,171 +13,179 @@ // limitations under the License. #include "dataplane/standalone/sai/ipmc.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/ipmc.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/ipmc.pb.h" +#include 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; + 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/ipmc.h b/dataplane/standalone/sai/ipmc.h index 7ffa36f5..9fec2048 100644 --- a/dataplane/standalone/sai/ipmc.h +++ b/dataplane/standalone/sai/ipmc.h @@ -25,17 +25,14 @@ 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_set_ipmc_entry_attribute(const sai_ipmc_entry_t *ipmc_entry, - const sai_attribute_t *attr); +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_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 505f63b5..a0c3e810 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 - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/ipmc_group.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/ipmc_group.pb.h" +#include 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; - for (uint32_t i = 0; i < attr_count; i++) { - switch (attr_list[i].id) {} - } - return 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) { -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; +lemming::dataplane::sai::CreateIpmcGroupRequest 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; -} - -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); + for(uint32_t i = 0; i < attr_count; i++ ) { + + - 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; +switch (attr_list[i].id) { + } -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_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; +return msg; } -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::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::GetIpmcGroupAttributeRequest req; - lemming::dataplane::sai::GetIpmcGroupAttributeResponse resp; - grpc::ClientContext context; +lemming::dataplane::sai::CreateIpmcGroupMemberRequest msg; - 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; - } - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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); +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; +} - 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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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__; +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; +} - return SAI_STATUS_SUCCESS; + } + + 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__; +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; +} - lemming::dataplane::sai::GetIpmcGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetIpmcGroupMemberAttributeResponse resp; - grpc::ClientContext context; +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; +} - req.set_oid(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) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} - 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; - } - } +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; } + diff --git a/dataplane/standalone/sai/ipmc_group.h b/dataplane/standalone/sai/ipmc_group.h index 125cb1fb..0ea2a85e 100644 --- a/dataplane/standalone/sai/ipmc_group.h +++ b/dataplane/standalone/sai/ipmc_group.h @@ -25,31 +25,22 @@ 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_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_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 5f710fdb..e9aa01cc 100644 --- a/dataplane/standalone/sai/ipsec.cc +++ b/dataplane/standalone/sai/ipsec.cc @@ -13,813 +13,777 @@ // limitations under the License. #include "dataplane/standalone/sai/ipsec.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/ipsec.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/ipsec.pb.h" +#include 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; +} + +} +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; } 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; +} + + 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; } 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; +} + + 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; } + diff --git a/dataplane/standalone/sai/ipsec.h b/dataplane/standalone/sai/ipsec.h index d0e0858c..664f8363 100644 --- a/dataplane/standalone/sai/ipsec.h +++ b/dataplane/standalone/sai/ipsec.h @@ -25,73 +25,42 @@ 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_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_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(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_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_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_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); -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 51936774..6e721c9f 100644 --- a/dataplane/standalone/sai/isolation_group.cc +++ b/dataplane/standalone/sai/isolation_group.cc @@ -13,267 +13,254 @@ // limitations under the License. #include "dataplane/standalone/sai/isolation_group.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/isolation_group.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/isolation_group.pb.h" +#include 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; - 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 convert_create_isolation_group(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) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; +lemming::dataplane::sai::CreateIsolationGroupRequest msg; - 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(); - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; } - -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 msg; } -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 convert_create_isolation_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - lemming::dataplane::sai::GetIsolationGroupAttributeRequest req; - lemming::dataplane::sai::GetIsolationGroupAttributeResponse resp; - grpc::ClientContext context; +lemming::dataplane::sai::CreateIsolationGroupMemberRequest msg; - 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; - } - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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); +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; +} - 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(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 SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; +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; +} - lemming::dataplane::sai::GetIsolationGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetIsolationGroupMemberAttributeResponse resp; - grpc::ClientContext context; +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; +} - req.set_oid(isolation_group_member_id); +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; +} - 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; - } - } +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; } + diff --git a/dataplane/standalone/sai/isolation_group.h b/dataplane/standalone/sai/isolation_group.h index 7e7fd8b9..f16c77dd 100644 --- a/dataplane/standalone/sai/isolation_group.h +++ b/dataplane/standalone/sai/isolation_group.h @@ -25,32 +25,22 @@ 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_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_get_isolation_group_attribute(sai_object_id_t isolation_group_id, - uint32_t attr_count, - sai_attribute_t *attr_list); +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_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_remove_isolation_group_member(sai_object_id_t isolation_group_member_id); -sai_status_t l_remove_isolation_group_member( - sai_object_id_t isolation_group_member_id); +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_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); -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 810b8056..ecfedb44 100644 --- a/dataplane/standalone/sai/l2mc.cc +++ b/dataplane/standalone/sai/l2mc.cc @@ -13,153 +13,161 @@ // limitations under the License. #include "dataplane/standalone/sai/l2mc.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/l2mc.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/l2mc.pb.h" +#include 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; + 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/l2mc.h b/dataplane/standalone/sai/l2mc.h index 655482dc..f740f320 100644 --- a/dataplane/standalone/sai/l2mc.h +++ b/dataplane/standalone/sai/l2mc.h @@ -25,17 +25,14 @@ 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_set_l2mc_entry_attribute(const sai_l2mc_entry_t *l2mc_entry, - const sai_attribute_t *attr); +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_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 32be0221..2d32ff1e 100644 --- a/dataplane/standalone/sai/l2mc_group.cc +++ b/dataplane/standalone/sai/l2mc_group.cc @@ -13,259 +13,257 @@ // limitations under the License. #include "dataplane/standalone/sai/l2mc_group.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/l2mc_group.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/l2mc_group.pb.h" +#include 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; - for (uint32_t i = 0; i < attr_count; i++) { - switch (attr_list[i].id) {} - } - return 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) { -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; +lemming::dataplane::sai::CreateL2mcGroupRequest 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; -} - -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); + for(uint32_t i = 0; i < attr_count; i++ ) { + + - 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; +switch (attr_list[i].id) { + } -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_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; +return msg; } -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::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::GetL2mcGroupAttributeRequest req; - lemming::dataplane::sai::GetL2mcGroupAttributeResponse resp; - grpc::ClientContext context; +lemming::dataplane::sai::CreateL2mcGroupMemberRequest msg; - 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; - } - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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); +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; +} - 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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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__; +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; +} - return SAI_STATUS_SUCCESS; + } + + 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__; +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; +} - lemming::dataplane::sai::GetL2mcGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetL2mcGroupMemberAttributeResponse resp; - grpc::ClientContext context; +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; +} - req.set_oid(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) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} - 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; - } - } +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; } + diff --git a/dataplane/standalone/sai/l2mc_group.h b/dataplane/standalone/sai/l2mc_group.h index f4f70b4f..d80864a7 100644 --- a/dataplane/standalone/sai/l2mc_group.h +++ b/dataplane/standalone/sai/l2mc_group.h @@ -25,31 +25,22 @@ 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_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_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 619c20a4..d4d25a6f 100644 --- a/dataplane/standalone/sai/lag.cc +++ b/dataplane/standalone/sai/lag.cc @@ -13,457 +13,473 @@ // limitations under the License. #include "dataplane/standalone/sai/lag.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/lag.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/lag.pb.h" +#include 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; - } - } - return msg; + +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::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; +} +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; + 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; } -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; - } - - 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; +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_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; - } - } - - return SAI_STATUS_SUCCESS; + } + + 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; + 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; } -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; + 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; - } - } - - 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_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; + } + + 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_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; +} + diff --git a/dataplane/standalone/sai/lag.h b/dataplane/standalone/sai/lag.h index 69ee15ca..66772c3c 100644 --- a/dataplane/standalone/sai/lag.h +++ b/dataplane/standalone/sai/lag.h @@ -25,42 +25,26 @@ 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 cd8b8376..abb3bb25 100644 --- a/dataplane/standalone/sai/macsec.cc +++ b/dataplane/standalone/sai/macsec.cc @@ -13,1180 +13,1118 @@ // limitations under the License. #include "dataplane/standalone/sai/macsec.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/macsec.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/macsec.pb.h" +#include 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; - } - } - return msg; + +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; +} + +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; +} + +} +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; } -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; - } - } - return msg; +} +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::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; } -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; +} +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::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; } -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; +} +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_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; + 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; +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; } -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; + 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; } -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_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_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; + } + + 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; - } - - 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_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_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; - } - } - - 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; } -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; +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_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__; + 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; +} - 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_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_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; } -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_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_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; +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; } -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__; +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; +} - 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; } -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; - } - } - - 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_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_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_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_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_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__; +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_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; - } - - 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_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_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; + 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + 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; - } - - 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_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_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; + 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/macsec.h b/dataplane/standalone/sai/macsec.h index fe056867..a320bd0e 100644 --- a/dataplane/standalone/sai/macsec.h +++ b/dataplane/standalone/sai/macsec.h @@ -25,131 +25,70 @@ 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_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_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(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_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_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_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); -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 e76e04d4..10756085 100644 --- a/dataplane/standalone/sai/mcast_fdb.cc +++ b/dataplane/standalone/sai/mcast_fdb.cc @@ -13,167 +13,170 @@ // limitations under the License. #include "dataplane/standalone/sai/mcast_fdb.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/mcast_fdb.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/mcast_fdb.pb.h" +#include 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/mcast_fdb.h b/dataplane/standalone/sai/mcast_fdb.h index 72cb7b61..168d81f2 100644 --- a/dataplane/standalone/sai/mcast_fdb.h +++ b/dataplane/standalone/sai/mcast_fdb.h @@ -25,18 +25,14 @@ 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_remove_mcast_fdb_entry( - const sai_mcast_fdb_entry_t *mcast_fdb_entry); +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_set_mcast_fdb_entry_attribute( - const sai_mcast_fdb_entry_t *mcast_fdb_entry, const sai_attribute_t *attr); +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_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 c3c257f5..8b6f3e75 100644 --- a/dataplane/standalone/sai/mirror.cc +++ b/dataplane/standalone/sai/mirror.cc @@ -13,393 +13,371 @@ // limitations under the License. #include "dataplane/standalone/sai/mirror.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/mirror.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/mirror.pb.h" +#include 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; - 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 convert_create_mirror_session(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) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; +lemming::dataplane::sai::CreateMirrorSessionRequest msg; - 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(); - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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_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; +} - 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; - } +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->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; - } +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); + + + - 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; } -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__; + 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; +} - lemming::dataplane::sai::GetMirrorSessionAttributeRequest req; - lemming::dataplane::sai::GetMirrorSessionAttributeResponse resp; - grpc::ClientContext context; +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); - req.set_oid(mirror_session_id); + 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++ ) { + + - 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; - } - } +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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/mirror.h b/dataplane/standalone/sai/mirror.h index 43b4628a..44d0196d 100644 --- a/dataplane/standalone/sai/mirror.h +++ b/dataplane/standalone/sai/mirror.h @@ -25,18 +25,14 @@ 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_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_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 5e4c1175..403e0fa4 100644 --- a/dataplane/standalone/sai/mpls.cc +++ b/dataplane/standalone/sai/mpls.cc @@ -13,338 +13,322 @@ // limitations under the License. #include "dataplane/standalone/sai/mpls.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/mpls.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/mpls.pb.h" +#include 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; - 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; +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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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; + 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; } -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_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; } -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; + 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; } -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++) { - } + } + + return SAI_STATUS_SUCCESS; +} - 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; - } +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; +} - 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_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_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; +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 f8bb01b3..7703c33c 100644 --- a/dataplane/standalone/sai/mpls.h +++ b/dataplane/standalone/sai/mpls.h @@ -25,42 +25,22 @@ 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_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_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_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 b6a93e65..2c508cec 100644 --- a/dataplane/standalone/sai/my_mac.cc +++ b/dataplane/standalone/sai/my_mac.cc @@ -13,178 +13,179 @@ // limitations under the License. #include "dataplane/standalone/sai/my_mac.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/my_mac.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/my_mac.pb.h" +#include 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; - } - } - return msg; + +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; } -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; +} +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_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; + 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; } -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; +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_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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/my_mac.h b/dataplane/standalone/sai/my_mac.h index c7425fcd..cadb411c 100644 --- a/dataplane/standalone/sai/my_mac.h +++ b/dataplane/standalone/sai/my_mac.h @@ -25,17 +25,14 @@ 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_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_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 9ab9f258..b1f0b812 100644 --- a/dataplane/standalone/sai/nat.cc +++ b/dataplane/standalone/sai/nat.cc @@ -13,565 +13,554 @@ // limitations under the License. #include "dataplane/standalone/sai/nat.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/nat.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/nat.pb.h" +#include 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::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; } -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; +} +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; +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; } 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; + 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_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; } -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; +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_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; + } + + 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; + 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; } -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; + 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; - } - } - - 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; } + + } + + return SAI_STATUS_SUCCESS; +} + diff --git a/dataplane/standalone/sai/nat.h b/dataplane/standalone/sai/nat.h index 609702ed..d4d04aae 100644 --- a/dataplane/standalone/sai/nat.h +++ b/dataplane/standalone/sai/nat.h @@ -25,56 +25,30 @@ 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_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_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_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_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 9e6dad56..76875749 100644 --- a/dataplane/standalone/sai/neighbor.cc +++ b/dataplane/standalone/sai/neighbor.cc @@ -13,325 +13,310 @@ // limitations under the License. #include "dataplane/standalone/sai/neighbor.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/neighbor.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/neighbor.pb.h" +#include 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; - 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; +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; } -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; } - -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; +return msg; } -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_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; } -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; - } - } - - 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; + + *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; } -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; - } +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_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__; +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; +} - lemming::dataplane::sai::RemoveNeighborEntriesRequest req; - lemming::dataplane::sai::RemoveNeighborEntriesResponse resp; - grpc::ClientContext context; + } + + return SAI_STATUS_SUCCESS; +} - 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; - } +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; +} - 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_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_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; +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 e7db8f08..8b75a8c0 100644 --- a/dataplane/standalone/sai/neighbor.h +++ b/dataplane/standalone/sai/neighbor.h @@ -25,37 +25,23 @@ 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 7cf184a4..4478ddc5 100644 --- a/dataplane/standalone/sai/next_hop.cc +++ b/dataplane/standalone/sai/next_hop.cc @@ -13,380 +13,379 @@ // limitations under the License. #include "dataplane/standalone/sai/next_hop.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/next_hop.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/next_hop.pb.h" +#include 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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__; + + 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; } -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; - } - - 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_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; } -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; - } - } - - return SAI_STATUS_SUCCESS; + 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; } -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]); - } + } + + return SAI_STATUS_SUCCESS; +} - 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; - } +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; +} - 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_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_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; +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 a521f5c2..90838349 100644 --- a/dataplane/standalone/sai/next_hop.h +++ b/dataplane/standalone/sai/next_hop.h @@ -25,43 +25,22 @@ 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_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_get_next_hop_attribute(sai_object_id_t next_hop_id, - uint32_t attr_count, - sai_attribute_t *attr_list); +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_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_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_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_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_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); -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 7ec4f2ff..1c36de9d 100644 --- a/dataplane/standalone/sai/next_hop_group.cc +++ b/dataplane/standalone/sai/next_hop_group.cc @@ -13,809 +13,729 @@ // limitations under the License. #include "dataplane/standalone/sai/next_hop_group.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/next_hop_group.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/next_hop_group.pb.h" +#include 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__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - -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__; - return SAI_STATUS_NOT_IMPLEMENTED; + 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__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +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__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + diff --git a/dataplane/standalone/sai/next_hop_group.h b/dataplane/standalone/sai/next_hop_group.h index 808bfeed..cff4cc7d 100644 --- a/dataplane/standalone/sai/next_hop_group.h +++ b/dataplane/standalone/sai/next_hop_group.h @@ -25,95 +25,46 @@ 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 new file mode 100644 index 00000000..74062b5d --- /dev/null +++ b/dataplane/standalone/sai/poe.cc @@ -0,0 +1,37 @@ +// 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/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 = { +}; + + + + + + + + + + + + + + diff --git a/dataplane/standalone/sai/poe.h b/dataplane/standalone/sai/poe.h new file mode 100644 index 00000000..eb1cf2d0 --- /dev/null +++ b/dataplane/standalone/sai/poe.h @@ -0,0 +1,42 @@ +// 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_POE_H_ +#define DATAPLANE_STANDALONE_SAI_POE_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 7ecc491c..f8956642 100644 --- a/dataplane/standalone/sai/policer.cc +++ b/dataplane/standalone/sai/policer.cc @@ -13,314 +13,285 @@ // limitations under the License. #include "dataplane/standalone/sai/policer.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/policer.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/policer.pb.h" +#include 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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__; + + 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; } -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; - } - - 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_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; } -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; + 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; } -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; +} - 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__; +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; +} - 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 083c7a27..506f7bfa 100644 --- a/dataplane/standalone/sai/policer.h +++ b/dataplane/standalone/sai/policer.h @@ -25,31 +25,20 @@ 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_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_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(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_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_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_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); -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 654e81d1..6990c64e 100644 --- a/dataplane/standalone/sai/port.cc +++ b/dataplane/standalone/sai/port.cc @@ -13,2073 +13,2010 @@ // limitations under the License. #include "dataplane/standalone/sai/port.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/port.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/port.pb.h" +#include 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; - } - } - 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; +} + +} +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::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::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::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; +} +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; - } - } - 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; - } - - 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_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_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; - } - } - - 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + 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; - } - - 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_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_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; + 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_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; +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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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_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; +} - 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__; + + 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; - } - - 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_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_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; + 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_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_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_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__; +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; +} - 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; } -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; - } - } - - return 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_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 6a0d0004..66762ed3 100644 --- a/dataplane/standalone/sai/port.h +++ b/dataplane/standalone/sai/port.h @@ -25,111 +25,63 @@ 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_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_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(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_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_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_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_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 35cb743f..6511999b 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 - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/qos_map.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/qos_map.pb.h" +#include 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; - } - } - return msg; + +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; } -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; +} +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_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__; +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; +} - 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; } -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; } + diff --git a/dataplane/standalone/sai/qos_map.h b/dataplane/standalone/sai/qos_map.h index 0b32b70c..1395ac3a 100644 --- a/dataplane/standalone/sai/qos_map.h +++ b/dataplane/standalone/sai/qos_map.h @@ -25,17 +25,14 @@ 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_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_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 3cf13d80..3cdcf1c5 100644 --- a/dataplane/standalone/sai/queue.cc +++ b/dataplane/standalone/sai/queue.cc @@ -13,301 +13,285 @@ // limitations under the License. #include "dataplane/standalone/sai/queue.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/queue.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/queue.pb.h" +#include 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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__; + + 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; } -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; - } - - 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_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; } -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; + 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; } -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; +} - 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__; +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; +} - 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 078b4e98..8ae2bcf3 100644 --- a/dataplane/standalone/sai/queue.h +++ b/dataplane/standalone/sai/queue.h @@ -25,31 +25,20 @@ 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_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_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(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_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_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_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); -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 0a4f1c1c..8caaa335 100644 --- a/dataplane/standalone/sai/route.cc +++ b/dataplane/standalone/sai/route.cc @@ -13,287 +13,282 @@ // limitations under the License. #include "dataplane/standalone/sai/route.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/route.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/route.pb.h" +#include 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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; + 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_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; - } - - 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_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; } -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; - } - } - - 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_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_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_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]); - } + } + + return SAI_STATUS_SUCCESS; +} - 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; - } +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; +} - 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__; - return SAI_STATUS_NOT_IMPLEMENTED; +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__; + return SAI_STATUS_NOT_IMPLEMENTED; } -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; +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 2a5cf5f1..fa8a5fd5 100644 --- a/dataplane/standalone/sai/route.h +++ b/dataplane/standalone/sai/route.h @@ -25,42 +25,22 @@ 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_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_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_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 21edb726..4fa8fd8c 100644 --- a/dataplane/standalone/sai/router_interface.cc +++ b/dataplane/standalone/sai/router_interface.cc @@ -13,478 +13,443 @@ // limitations under the License. #include "dataplane/standalone/sai/router_interface.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/router_interface.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/router_interface.pb.h" +#include 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; - 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; - } - } - return 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; } -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 msg; +} - return SAI_STATUS_SUCCESS; +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; } 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__; + + 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; } -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; - } - - 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_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; } -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; - } - } - - return SAI_STATUS_SUCCESS; + 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_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; } -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; + } + + 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(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_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_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_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]); - } +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; +} - 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; - } +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; +} - 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_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_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; +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 2fc24538..350785eb 100644 --- a/dataplane/standalone/sai/router_interface.h +++ b/dataplane/standalone/sai/router_interface.h @@ -25,58 +25,28 @@ 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 b7b18f38..73657b2f 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 - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/rpf_group.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/rpf_group.pb.h" +#include 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; - for (uint32_t i = 0; i < attr_count; i++) { - switch (attr_list[i].id) {} - } - return 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) { -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; +lemming::dataplane::sai::CreateRpfGroupRequest 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; -} - -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); + for(uint32_t i = 0; i < attr_count; i++ ) { + + - 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; +switch (attr_list[i].id) { + } -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_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; +return msg; } -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::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::GetRpfGroupAttributeRequest req; - lemming::dataplane::sai::GetRpfGroupAttributeResponse resp; - grpc::ClientContext context; +lemming::dataplane::sai::CreateRpfGroupMemberRequest msg; - 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; - } - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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); +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; +} - 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_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; +} - return SAI_STATUS_SUCCESS; +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; } -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__; +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; +} - return SAI_STATUS_SUCCESS; + } + + 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__; +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; +} - lemming::dataplane::sai::GetRpfGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetRpfGroupMemberAttributeResponse resp; - grpc::ClientContext context; +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; +} - req.set_oid(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) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} - 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; - } - } +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; } + diff --git a/dataplane/standalone/sai/rpf_group.h b/dataplane/standalone/sai/rpf_group.h index 94850903..417f2a12 100644 --- a/dataplane/standalone/sai/rpf_group.h +++ b/dataplane/standalone/sai/rpf_group.h @@ -25,31 +25,22 @@ 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_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_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 0fef8c72..d936fdb0 100644 --- a/dataplane/standalone/sai/samplepacket.cc +++ b/dataplane/standalone/sai/samplepacket.cc @@ -13,170 +13,167 @@ // limitations under the License. #include "dataplane/standalone/sai/samplepacket.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/samplepacket.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/samplepacket.pb.h" +#include 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; +} + +} +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; - } - - 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_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_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; + 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; +} + + } + + return SAI_STATUS_SUCCESS; +} + diff --git a/dataplane/standalone/sai/samplepacket.h b/dataplane/standalone/sai/samplepacket.h index bbff05a7..d1bf0cf3 100644 --- a/dataplane/standalone/sai/samplepacket.h +++ b/dataplane/standalone/sai/samplepacket.h @@ -25,18 +25,14 @@ 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_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_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 e36a2c90..a521ee4e 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 - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/scheduler.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/scheduler.pb.h" +#include 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; - } - } - return msg; + +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; } -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; +} +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_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; + 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; } -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; +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_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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/scheduler.h b/dataplane/standalone/sai/scheduler.h index 65bd1460..ea0154f6 100644 --- a/dataplane/standalone/sai/scheduler.h +++ b/dataplane/standalone/sai/scheduler.h @@ -25,17 +25,14 @@ 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_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_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 7cc8a688..0d5f81f0 100644 --- a/dataplane/standalone/sai/scheduler_group.cc +++ b/dataplane/standalone/sai/scheduler_group.cc @@ -13,190 +13,188 @@ // limitations under the License. #include "dataplane/standalone/sai/scheduler_group.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/scheduler_group.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/scheduler_group.pb.h" +#include 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; - } - } - return msg; + +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; } -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; +} +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_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; + 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; } -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; +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_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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/scheduler_group.h b/dataplane/standalone/sai/scheduler_group.h index e68c7c53..d4f2240e 100644 --- a/dataplane/standalone/sai/scheduler_group.h +++ b/dataplane/standalone/sai/scheduler_group.h @@ -25,18 +25,14 @@ 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_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_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 e0cd7cec..a60d7fd5 100644 --- a/dataplane/standalone/sai/srv6.cc +++ b/dataplane/standalone/sai/srv6.cc @@ -13,508 +13,554 @@ // limitations under the License. #include "dataplane/standalone/sai/srv6.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/srv6.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/srv6.pb.h" +#include 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, - .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; - } - } - return msg; + +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::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; +} + +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; } -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; +} +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_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; +} + + 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; } -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__; + } + + 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; +} - 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_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; - } - } - - 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_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_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_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_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_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_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_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; + 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_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_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 47bc371c..552b2538 100644 --- a/dataplane/standalone/sai/srv6.h +++ b/dataplane/standalone/sai/srv6.h @@ -25,66 +25,40 @@ 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_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_get_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, - uint32_t attr_count, - sai_attribute_t *attr_list); +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_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_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_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_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_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_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_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 cd35fbcb..de16152d 100644 --- a/dataplane/standalone/sai/stp.cc +++ b/dataplane/standalone/sai/stp.cc @@ -13,354 +13,351 @@ // limitations under the License. #include "dataplane/standalone/sai/stp.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/stp.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/stp.pb.h" +#include 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; - for (uint32_t i = 0; i < attr_count; i++) { - switch (attr_list[i].id) {} - } - return 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; } -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; +} +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__; +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; +} - 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; } -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_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; + 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; } -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; + 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; - } - } - - 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_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; + } + + 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_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; +} + diff --git a/dataplane/standalone/sai/stp.h b/dataplane/standalone/sai/stp.h index cf8b4022..dfaf6aaa 100644 --- a/dataplane/standalone/sai/stp.h +++ b/dataplane/standalone/sai/stp.h @@ -25,42 +25,26 @@ 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 658c5f89..830d035a 100644 --- a/dataplane/standalone/sai/switch.cc +++ b/dataplane/standalone/sai/switch.cc @@ -13,1568 +13,1539 @@ // limitations under the License. #include "dataplane/standalone/sai/switch.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/switch.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/switch.pb.h" +#include 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) { - 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; - } - } - return msg; -} +lemming::dataplane::sai::CreateSwitchRequest 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 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; + 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; } -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__; +} +return msg; +} - lemming::dataplane::sai::CreateSwitchRequest req = - convert_create_switch(attr_count, attr_list); - lemming::dataplane::sai::CreateSwitchResponse resp; - grpc::ClientContext context; +lemming::dataplane::sai::CreateSwitchTunnelRequest convert_create_switch_tunnel(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - 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(); - } +lemming::dataplane::sai::CreateSwitchTunnelRequest msg; - return SAI_STATUS_SUCCESS; -} -sai_status_t l_remove_switch(sai_object_id_t switch_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + for(uint32_t i = 0; i < attr_count; i++ ) { + + - 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; - } +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 SAI_STATUS_SUCCESS; +} +return msg; } -sai_status_t l_set_switch_attribute(sai_object_id_t switch_id, - const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; +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; +} - lemming::dataplane::sai::SetSwitchAttributeRequest req; - lemming::dataplane::sai::SetSwitchAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(switch_id); +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; +} - 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; - } +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); + + + - 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; - } +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; +} - return SAI_STATUS_SUCCESS; + 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; - } - } - return SAI_STATUS_SUCCESS; -} -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; -} -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__; +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++ ) { + + + +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; } -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; +} - return SAI_STATUS_SUCCESS; +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; } -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__; +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; +} - 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_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; +} - 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_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; } 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); + 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; +} - 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; - } +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); + + + - return SAI_STATUS_SUCCESS; +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; } -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); + 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; +} - 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; - } +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); - 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; - } + 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++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; + } + + return SAI_STATUS_SUCCESS; +} - 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 73315461..e8aefa06 100644 --- a/dataplane/standalone/sai/switch.h +++ b/dataplane/standalone/sai/switch.h @@ -25,44 +25,41 @@ 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_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_attribute(sai_object_id_t switch_id, uint32_t attr_count, sai_attribute_t *attr_list); -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(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_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_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_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_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_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 96bf0163..9e535e5b 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 - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/system_port.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/system_port.pb.h" +#include 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; - } - - 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_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_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; + 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; +} + diff --git a/dataplane/standalone/sai/system_port.h b/dataplane/standalone/sai/system_port.h index 8dd6798b..cd12dc83 100644 --- a/dataplane/standalone/sai/system_port.h +++ b/dataplane/standalone/sai/system_port.h @@ -25,18 +25,14 @@ 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_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_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 b87fdebb..7182fa28 100644 --- a/dataplane/standalone/sai/tam.cc +++ b/dataplane/standalone/sai/tam.cc @@ -13,2213 +13,2327 @@ // limitations under the License. #include "dataplane/standalone/sai/tam.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/tam.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/tam.pb.h" +#include 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 = 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; - } - } - 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; - } - } - 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; -} - -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; - } - - 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; - } - } - - 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; - } - } - - 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; - } - - 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; - } - } - - 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; -} - -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; + 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; +} + diff --git a/dataplane/standalone/sai/tam.h b/dataplane/standalone/sai/tam.h index 3a94e5a3..2638e3be 100644 --- a/dataplane/standalone/sai/tam.h +++ b/dataplane/standalone/sai/tam.h @@ -25,153 +25,102 @@ 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_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_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_remove_tam_counter_subscription(sai_object_id_t tam_counter_subscription_id); + +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); -sai_status_t l_get_tam_event_attribute(sai_object_id_t tam_event_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 65f33cb5..369e2766 100644 --- a/dataplane/standalone/sai/tunnel.cc +++ b/dataplane/standalone/sai/tunnel.cc @@ -13,1104 +13,1042 @@ // limitations under the License. #include "dataplane/standalone/sai/tunnel.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/tunnel.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/tunnel.pb.h" +#include 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::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::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; - } - } - return msg; +} +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; - } - } - 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::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; - } - } - return msg; +} +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; +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_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__; +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; +} - 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; } -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_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; - } - - 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_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_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; - } - } - - 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_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_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_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(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; +} - 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__; + + 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_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; +} - 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_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_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_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; + 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_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_IPSEC_VERIFIED: - req.set_ipsec_verified(attr->value.booldata); - 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; +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_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; - } - } - - return SAI_STATUS_SUCCESS; + } + + 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__; +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; +} - 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; } -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; - } - } - - return 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_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 45cf8e4d..2458625b 100644 --- a/dataplane/standalone/sai/tunnel.h +++ b/dataplane/standalone/sai/tunnel.h @@ -25,97 +25,52 @@ 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 new file mode 100644 index 00000000..4d8bf992 --- /dev/null +++ b/dataplane/standalone/sai/twamp.cc @@ -0,0 +1,32 @@ +// 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/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 = { +}; + + + + + + + + + diff --git a/dataplane/standalone/sai/twamp.h b/dataplane/standalone/sai/twamp.h new file mode 100644 index 00000000..8143cf32 --- /dev/null +++ b/dataplane/standalone/sai/twamp.h @@ -0,0 +1,37 @@ +// 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_TWAMP_H_ +#define DATAPLANE_STANDALONE_SAI_TWAMP_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +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 faa87263..a8aa4817 100644 --- a/dataplane/standalone/sai/udf.cc +++ b/dataplane/standalone/sai/udf.cc @@ -13,452 +13,447 @@ // limitations under the License. #include "dataplane/standalone/sai/udf.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/udf.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/udf.pb.h" +#include 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; - } - } - return msg; + +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::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; - } - } - 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; +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; } -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; +} +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_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; - } - - 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_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_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; + 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_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_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_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__; +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; +} - 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; } -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; - } - } - - return SAI_STATUS_SUCCESS; + } + + 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__; +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; +} - 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; } -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; } + diff --git a/dataplane/standalone/sai/udf.h b/dataplane/standalone/sai/udf.h index a02c9f9e..9cf7af48 100644 --- a/dataplane/standalone/sai/udf.h +++ b/dataplane/standalone/sai/udf.h @@ -25,42 +25,30 @@ 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_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_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 d6c3ecae..3250f403 100644 --- a/dataplane/standalone/sai/virtual_router.cc +++ b/dataplane/standalone/sai/virtual_router.cc @@ -13,221 +13,209 @@ // limitations under the License. #include "dataplane/standalone/sai/virtual_router.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/virtual_router.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/virtual_router.pb.h" +#include 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; - } - } - return msg; + +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; } -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; +} +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_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; + 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; } -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; +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_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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/virtual_router.h b/dataplane/standalone/sai/virtual_router.h index c03c518d..30211c00 100644 --- a/dataplane/standalone/sai/virtual_router.h +++ b/dataplane/standalone/sai/virtual_router.h @@ -25,18 +25,14 @@ 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_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_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 25267d94..36fa38d6 100644 --- a/dataplane/standalone/sai/vlan.cc +++ b/dataplane/standalone/sai/vlan.cc @@ -13,644 +13,600 @@ // limitations under the License. #include "dataplane/standalone/sai/vlan.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/vlan.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/vlan.pb.h" +#include 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::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::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; +} +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; - } - - 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_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_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; + 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_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_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_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; - } - - 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_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_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; + 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_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_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_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; + } + + 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_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_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_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; +} - 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_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_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; +} - 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__; + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/vlan.h b/dataplane/standalone/sai/vlan.h index 76244820..e3f9e15b 100644 --- a/dataplane/standalone/sai/vlan.h +++ b/dataplane/standalone/sai/vlan.h @@ -25,57 +25,32 @@ 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 32c6e8c7..870daa9b 100644 --- a/dataplane/standalone/sai/wred.cc +++ b/dataplane/standalone/sai/wred.cc @@ -13,378 +13,506 @@ // limitations under the License. #include "dataplane/standalone/sai/wred.h" - -#include - -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/wred.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/wred.pb.h" +#include 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; - 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; - } - } - return msg; -} +lemming::dataplane::sai::CreateWredRequest convert_create_wred(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) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; +lemming::dataplane::sai::CreateWredRequest msg; - 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(); - } + for(uint32_t i = 0; i < attr_count; i++ ) { + + - return SAI_STATUS_SUCCESS; +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; } -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; +} +return msg; } -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_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; +} - 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; - } +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->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; - } +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); + + + - 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; } -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__; + 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; +} - lemming::dataplane::sai::GetWredAttributeRequest req; - lemming::dataplane::sai::GetWredAttributeResponse resp; - grpc::ClientContext context; +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); - req.set_oid(wred_id); + 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++ ) { + + - 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; - } - } +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; + } + + return SAI_STATUS_SUCCESS; } + diff --git a/dataplane/standalone/sai/wred.h b/dataplane/standalone/sai/wred.h index 0b684fe8..ef2c7b37 100644 --- a/dataplane/standalone/sai/wred.h +++ b/dataplane/standalone/sai/wred.h @@ -25,16 +25,14 @@ 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_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_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 5021bbde..45d3a23b 100644 --- a/patches/sai.patch +++ b/patches/sai.patch @@ -1,38 +1,5 @@ -diff --git a/inc/sainexthop.h b/inc/sainexthop.h -index ae137f4..163e885 100644 ---- a/inc/sainexthop.h -+++ b/inc/sainexthop.h -@@ -126,6 +126,7 @@ typedef enum _sai_next_hop_attr_t - * @type sai_object_id_t - * @flags MANDATORY_ON_CREATE | CREATE_ONLY - * @objects SAI_OBJECT_TYPE_SRV6_SIDLIST -+ * @allownull true - * @condition SAI_NEXT_HOP_ATTR_TYPE == SAI_NEXT_HOP_TYPE_SRV6_SIDLIST - */ - SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID, -@@ -297,11 +298,15 @@ typedef sai_status_t (*sai_get_next_hop_attribute_fn)( - */ - typedef struct _sai_next_hop_api_t - { -- sai_create_next_hop_fn create_next_hop; -- sai_remove_next_hop_fn remove_next_hop; -- sai_set_next_hop_attribute_fn set_next_hop_attribute; -- sai_get_next_hop_attribute_fn get_next_hop_attribute; -- -+ sai_create_next_hop_fn create_next_hop; -+ sai_remove_next_hop_fn remove_next_hop; -+ sai_set_next_hop_attribute_fn set_next_hop_attribute; -+ sai_get_next_hop_attribute_fn get_next_hop_attribute; -+ -+ sai_bulk_object_create_fn create_next_hops; -+ sai_bulk_object_remove_fn remove_next_hops; -+ sai_bulk_object_set_attribute_fn set_next_hops_attribute; -+ sai_bulk_object_get_attribute_fn get_next_hops_attribute; - } sai_next_hop_api_t; - - /** diff --git a/inc/sainexthopgroup.h b/inc/sainexthopgroup.h -index 1e87356..cb4ed6c 100644 +index 4b7821f..cb4ed6c 100644 --- a/inc/sainexthopgroup.h +++ b/inc/sainexthopgroup.h @@ -56,6 +56,9 @@ typedef enum _sai_next_hop_group_type_t @@ -54,58 +21,10 @@ index 1e87356..cb4ed6c 100644 * @type sai_object_list_t * @flags READ_ONLY * @objects SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER -@@ -184,6 +189,90 @@ typedef enum _sai_next_hop_group_attr_t +@@ -232,6 +237,42 @@ typedef enum _sai_next_hop_group_attr_t */ - SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP, + SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS, -+ /** -+ * @brief Hierarchical next hop group level. -+ * true: Nexthop group consists of tunnel and IP nexthop -+ * false: Nexthop group consists of IP nexthop only -+ * -+ * @type bool -+ * @flags CREATE_ONLY -+ * @default true -+ * @validonly SAI_NEXT_HOP_GROUP_ATTR_TYPE == SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP or SAI_NEXT_HOP_GROUP_ATTR_TYPE == SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP -+ * @isresourcetype true -+ */ -+ SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP, -+ -+ /** -+ * @brief Adaptive routing and switching object for this group. -+ * -+ * @type sai_object_id_t -+ * @flags CREATE_AND_SET -+ * @objects SAI_OBJECT_TYPE_ARS -+ * @allownull true -+ * @default SAI_NULL_OBJECT_ID -+ */ -+ SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID, -+ -+ /** -+ * @brief Number of packets dropped by ARS mechanism -+ * -+ * @type sai_uint32_t -+ * @flags READ_ONLY -+ */ -+ SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS, -+ -+ /** -+ * @brief Number of ARS next hop reassignments done -+ * -+ * @type sai_uint32_t -+ * @flags READ_ONLY -+ */ -+ SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS, -+ -+ /** -+ * @brief Number of ARS port reassignments done -+ * -+ * @type sai_uint32_t -+ * @flags READ_ONLY -+ */ -+ SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS, -+ + /** + * @brief Next hop member list in the order specified by the application + * @@ -145,25 +64,7 @@ index 1e87356..cb4ed6c 100644 /** * @brief End of attributes */ -@@ -314,6 +403,17 @@ typedef enum _sai_next_hop_group_member_attr_t - */ - SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID, - -+ /** -+ * @brief Next hop group member is part of primary or alternate path set -+ * false: Next hop group member is part of primary path set -+ * true: Next hop group member is part of alternate path set -+ * -+ * @type bool -+ * @flags CREATE_AND_SET -+ * @default false -+ */ -+ SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH, -+ - /** - * @brief End of attributes - */ -@@ -548,6 +648,11 @@ typedef struct _sai_next_hop_group_api_t +@@ -607,6 +648,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; @@ -176,7 +77,7 @@ index 1e87356..cb4ed6c 100644 /** diff --git a/inc/sairouterinterface.h b/inc/sairouterinterface.h -index 1d71d48..74c4021 100644 +index c3e65f2..74c4021 100644 --- a/inc/sairouterinterface.h +++ b/inc/sairouterinterface.h @@ -294,6 +294,15 @@ typedef enum _sai_router_interface_attr_t @@ -195,15 +96,3 @@ index 1d71d48..74c4021 100644 /** * @brief End of attributes */ -@@ -451,6 +460,11 @@ typedef struct _sai_router_interface_api_t - sai_get_router_interface_stats_ext_fn get_router_interface_stats_ext; - sai_clear_router_interface_stats_fn clear_router_interface_stats; - -+ sai_bulk_object_create_fn create_router_interfaces; -+ sai_bulk_object_remove_fn remove_router_interfaces; -+ sai_bulk_object_set_attribute_fn set_router_interfaces_attribute; -+ sai_bulk_object_get_attribute_fn get_router_interfaces_attribute; -+ - } sai_router_interface_api_t; - - /**