// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: acl.proto
package acl;

public final class Acl {

    private Acl() {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
    }

    /**
     * Protobuf enum {@code acl.AclRuleTypeEnum}
     */
    public enum AclRuleTypeEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>ACLRULETYPE_UNDEFINED = 0;</code>
         */
        ACLRULETYPE_UNDEFINED(0),
        /**
         * <code>ACLRULETYPE_IPV4 = 1;</code>
         */
        ACLRULETYPE_IPV4(1),
        /**
         * <code>ACLRULETYPE_IPV6 = 2;</code>
         */
        ACLRULETYPE_IPV6(2),
        /**
         * <code>ACLRULETYPE_L2 = 3;</code>
         */
        ACLRULETYPE_L2(3),
        /**
         * <code>ACLRULETYPE_MPLS = 4;</code>
         */
        ACLRULETYPE_MPLS(4),
        /**
         * <code>ACLRULETYPE_MIXED = 5;</code>
         */
        ACLRULETYPE_MIXED(5),
        UNRECOGNIZED(-1);

        /**
         * <code>ACLRULETYPE_UNDEFINED = 0;</code>
         */
        public static final int ACLRULETYPE_UNDEFINED_VALUE = 0;

        /**
         * <code>ACLRULETYPE_IPV4 = 1;</code>
         */
        public static final int ACLRULETYPE_IPV4_VALUE = 1;

        /**
         * <code>ACLRULETYPE_IPV6 = 2;</code>
         */
        public static final int ACLRULETYPE_IPV6_VALUE = 2;

        /**
         * <code>ACLRULETYPE_L2 = 3;</code>
         */
        public static final int ACLRULETYPE_L2_VALUE = 3;

        /**
         * <code>ACLRULETYPE_MPLS = 4;</code>
         */
        public static final int ACLRULETYPE_MPLS_VALUE = 4;

        /**
         * <code>ACLRULETYPE_MIXED = 5;</code>
         */
        public static final int ACLRULETYPE_MIXED_VALUE = 5;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static AclRuleTypeEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static AclRuleTypeEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return ACLRULETYPE_UNDEFINED;
                case 1:
                    return ACLRULETYPE_IPV4;
                case 2:
                    return ACLRULETYPE_IPV6;
                case 3:
                    return ACLRULETYPE_L2;
                case 4:
                    return ACLRULETYPE_MPLS;
                case 5:
                    return ACLRULETYPE_MIXED;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum>() {

            public AclRuleTypeEnum findValueByNumber(int number) {
                return AclRuleTypeEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return acl.Acl.getDescriptor().getEnumTypes().get(0);
        }

        private static final AclRuleTypeEnum[] VALUES = values();

        public static AclRuleTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private AclRuleTypeEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code acl.AclForwardActionEnum}
     */
    public enum AclForwardActionEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
         */
        ACLFORWARDINGACTION_UNDEFINED(0),
        /**
         * <code>ACLFORWARDINGACTION_DROP = 1;</code>
         */
        ACLFORWARDINGACTION_DROP(1),
        /**
         * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
         */
        ACLFORWARDINGACTION_ACCEPT(2),
        /**
         * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
         */
        ACLFORWARDINGACTION_REJECT(3),
        UNRECOGNIZED(-1);

        /**
         * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
         */
        public static final int ACLFORWARDINGACTION_UNDEFINED_VALUE = 0;

        /**
         * <code>ACLFORWARDINGACTION_DROP = 1;</code>
         */
        public static final int ACLFORWARDINGACTION_DROP_VALUE = 1;

        /**
         * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
         */
        public static final int ACLFORWARDINGACTION_ACCEPT_VALUE = 2;

        /**
         * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
         */
        public static final int ACLFORWARDINGACTION_REJECT_VALUE = 3;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static AclForwardActionEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static AclForwardActionEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return ACLFORWARDINGACTION_UNDEFINED;
                case 1:
                    return ACLFORWARDINGACTION_DROP;
                case 2:
                    return ACLFORWARDINGACTION_ACCEPT;
                case 3:
                    return ACLFORWARDINGACTION_REJECT;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum>() {

            public AclForwardActionEnum findValueByNumber(int number) {
                return AclForwardActionEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return acl.Acl.getDescriptor().getEnumTypes().get(1);
        }

        private static final AclForwardActionEnum[] VALUES = values();

        public static AclForwardActionEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private AclForwardActionEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code acl.AclLogActionEnum}
     */
    public enum AclLogActionEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>ACLLOGACTION_UNDEFINED = 0;</code>
         */
        ACLLOGACTION_UNDEFINED(0),
        /**
         * <code>ACLLOGACTION_NOLOG = 1;</code>
         */
        ACLLOGACTION_NOLOG(1),
        /**
         * <code>ACLLOGACTION_SYSLOG = 2;</code>
         */
        ACLLOGACTION_SYSLOG(2),
        UNRECOGNIZED(-1);

        /**
         * <code>ACLLOGACTION_UNDEFINED = 0;</code>
         */
        public static final int ACLLOGACTION_UNDEFINED_VALUE = 0;

        /**
         * <code>ACLLOGACTION_NOLOG = 1;</code>
         */
        public static final int ACLLOGACTION_NOLOG_VALUE = 1;

        /**
         * <code>ACLLOGACTION_SYSLOG = 2;</code>
         */
        public static final int ACLLOGACTION_SYSLOG_VALUE = 2;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static AclLogActionEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static AclLogActionEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return ACLLOGACTION_UNDEFINED;
                case 1:
                    return ACLLOGACTION_NOLOG;
                case 2:
                    return ACLLOGACTION_SYSLOG;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum>() {

            public AclLogActionEnum findValueByNumber(int number) {
                return AclLogActionEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return acl.Acl.getDescriptor().getEnumTypes().get(2);
        }

        private static final AclLogActionEnum[] VALUES = values();

        public static AclLogActionEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private AclLogActionEnum(int value) {
            this.value = value;
        }
    }

    public interface AclMatchOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclMatch)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>uint32 dscp = 1;</code>
         * @return The dscp.
         */
        int getDscp();

        /**
         * <code>uint32 protocol = 2;</code>
         * @return The protocol.
         */
        int getProtocol();

        /**
         * <code>string src_address = 3;</code>
         * @return The srcAddress.
         */
        java.lang.String getSrcAddress();

        /**
         * <code>string src_address = 3;</code>
         * @return The bytes for srcAddress.
         */
        com.google.protobuf.ByteString getSrcAddressBytes();

        /**
         * <code>string dst_address = 4;</code>
         * @return The dstAddress.
         */
        java.lang.String getDstAddress();

        /**
         * <code>string dst_address = 4;</code>
         * @return The bytes for dstAddress.
         */
        com.google.protobuf.ByteString getDstAddressBytes();

        /**
         * <code>uint32 src_port = 5;</code>
         * @return The srcPort.
         */
        int getSrcPort();

        /**
         * <code>uint32 dst_port = 6;</code>
         * @return The dstPort.
         */
        int getDstPort();

        /**
         * <code>uint32 start_mpls_label = 7;</code>
         * @return The startMplsLabel.
         */
        int getStartMplsLabel();

        /**
         * <code>uint32 end_mpls_label = 8;</code>
         * @return The endMplsLabel.
         */
        int getEndMplsLabel();

        /**
         * <code>string tcp_flags = 9;</code>
         * @return The tcpFlags.
         */
        java.lang.String getTcpFlags();

        /**
         * <code>string tcp_flags = 9;</code>
         * @return The bytes for tcpFlags.
         */
        com.google.protobuf.ByteString getTcpFlagsBytes();
    }

    /**
     * Protobuf type {@code acl.AclMatch}
     */
    public static final class AclMatch extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclMatch)
    AclMatchOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use AclMatch.newBuilder() to construct.
        private AclMatch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private AclMatch() {
            srcAddress_ = "";
            dstAddress_ = "";
            tcpFlags_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new AclMatch();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return acl.Acl.internal_static_acl_AclMatch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
        }

        public static final int DSCP_FIELD_NUMBER = 1;

        private int dscp_ = 0;

        /**
         * <code>uint32 dscp = 1;</code>
         * @return The dscp.
         */
        @java.lang.Override
        public int getDscp() {
            return dscp_;
        }

        public static final int PROTOCOL_FIELD_NUMBER = 2;

        private int protocol_ = 0;

        /**
         * <code>uint32 protocol = 2;</code>
         * @return The protocol.
         */
        @java.lang.Override
        public int getProtocol() {
            return protocol_;
        }

        public static final int SRC_ADDRESS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object srcAddress_ = "";

        /**
         * <code>string src_address = 3;</code>
         * @return The srcAddress.
         */
        @java.lang.Override
        public java.lang.String getSrcAddress() {
            java.lang.Object ref = srcAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                srcAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string src_address = 3;</code>
         * @return The bytes for srcAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getSrcAddressBytes() {
            java.lang.Object ref = srcAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                srcAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DST_ADDRESS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private volatile java.lang.Object dstAddress_ = "";

        /**
         * <code>string dst_address = 4;</code>
         * @return The dstAddress.
         */
        @java.lang.Override
        public java.lang.String getDstAddress() {
            java.lang.Object ref = dstAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                dstAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string dst_address = 4;</code>
         * @return The bytes for dstAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDstAddressBytes() {
            java.lang.Object ref = dstAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                dstAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SRC_PORT_FIELD_NUMBER = 5;

        private int srcPort_ = 0;

        /**
         * <code>uint32 src_port = 5;</code>
         * @return The srcPort.
         */
        @java.lang.Override
        public int getSrcPort() {
            return srcPort_;
        }

        public static final int DST_PORT_FIELD_NUMBER = 6;

        private int dstPort_ = 0;

        /**
         * <code>uint32 dst_port = 6;</code>
         * @return The dstPort.
         */
        @java.lang.Override
        public int getDstPort() {
            return dstPort_;
        }

        public static final int START_MPLS_LABEL_FIELD_NUMBER = 7;

        private int startMplsLabel_ = 0;

        /**
         * <code>uint32 start_mpls_label = 7;</code>
         * @return The startMplsLabel.
         */
        @java.lang.Override
        public int getStartMplsLabel() {
            return startMplsLabel_;
        }

        public static final int END_MPLS_LABEL_FIELD_NUMBER = 8;

        private int endMplsLabel_ = 0;

        /**
         * <code>uint32 end_mpls_label = 8;</code>
         * @return The endMplsLabel.
         */
        @java.lang.Override
        public int getEndMplsLabel() {
            return endMplsLabel_;
        }

        public static final int TCP_FLAGS_FIELD_NUMBER = 9;

        @SuppressWarnings("serial")
        private volatile java.lang.Object tcpFlags_ = "";

        /**
         * <code>string tcp_flags = 9;</code>
         * @return The tcpFlags.
         */
        @java.lang.Override
        public java.lang.String getTcpFlags() {
            java.lang.Object ref = tcpFlags_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                tcpFlags_ = s;
                return s;
            }
        }

        /**
         * <code>string tcp_flags = 9;</code>
         * @return The bytes for tcpFlags.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getTcpFlagsBytes() {
            java.lang.Object ref = tcpFlags_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                tcpFlags_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (dscp_ != 0) {
                output.writeUInt32(1, dscp_);
            }
            if (protocol_ != 0) {
                output.writeUInt32(2, protocol_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_);
            }
            if (srcPort_ != 0) {
                output.writeUInt32(5, srcPort_);
            }
            if (dstPort_ != 0) {
                output.writeUInt32(6, dstPort_);
            }
            if (startMplsLabel_ != 0) {
                output.writeUInt32(7, startMplsLabel_);
            }
            if (endMplsLabel_ != 0) {
                output.writeUInt32(8, endMplsLabel_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 9, tcpFlags_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (dscp_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, dscp_);
            }
            if (protocol_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_);
            }
            if (srcPort_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, srcPort_);
            }
            if (dstPort_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, dstPort_);
            }
            if (startMplsLabel_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(7, startMplsLabel_);
            }
            if (endMplsLabel_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tcpFlags_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, tcpFlags_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof acl.Acl.AclMatch)) {
                return super.equals(obj);
            }
            acl.Acl.AclMatch other = (acl.Acl.AclMatch) obj;
            if (getDscp() != other.getDscp())
                return false;
            if (getProtocol() != other.getProtocol())
                return false;
            if (!getSrcAddress().equals(other.getSrcAddress()))
                return false;
            if (!getDstAddress().equals(other.getDstAddress()))
                return false;
            if (getSrcPort() != other.getSrcPort())
                return false;
            if (getDstPort() != other.getDstPort())
                return false;
            if (getStartMplsLabel() != other.getStartMplsLabel())
                return false;
            if (getEndMplsLabel() != other.getEndMplsLabel())
                return false;
            if (!getTcpFlags().equals(other.getTcpFlags()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + DSCP_FIELD_NUMBER;
            hash = (53 * hash) + getDscp();
            hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
            hash = (53 * hash) + getProtocol();
            hash = (37 * hash) + SRC_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getSrcAddress().hashCode();
            hash = (37 * hash) + DST_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getDstAddress().hashCode();
            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getSrcPort();
            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getDstPort();
            hash = (37 * hash) + START_MPLS_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getStartMplsLabel();
            hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getEndMplsLabel();
            hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER;
            hash = (53 * hash) + getTcpFlags().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static acl.Acl.AclMatch parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclMatch parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclMatch parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclMatch parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclMatch parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclMatch parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclMatch parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static acl.Acl.AclMatch parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(acl.Acl.AclMatch prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code acl.AclMatch}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclMatch)
        acl.Acl.AclMatchOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return acl.Acl.internal_static_acl_AclMatch_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
            }

            // Construct using acl.Acl.AclMatch.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                dscp_ = 0;
                protocol_ = 0;
                srcAddress_ = "";
                dstAddress_ = "";
                srcPort_ = 0;
                dstPort_ = 0;
                startMplsLabel_ = 0;
                endMplsLabel_ = 0;
                tcpFlags_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return acl.Acl.internal_static_acl_AclMatch_descriptor;
            }

            @java.lang.Override
            public acl.Acl.AclMatch getDefaultInstanceForType() {
                return acl.Acl.AclMatch.getDefaultInstance();
            }

            @java.lang.Override
            public acl.Acl.AclMatch build() {
                acl.Acl.AclMatch result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public acl.Acl.AclMatch buildPartial() {
                acl.Acl.AclMatch result = new acl.Acl.AclMatch(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(acl.Acl.AclMatch result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.dscp_ = dscp_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.protocol_ = protocol_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.srcAddress_ = srcAddress_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.dstAddress_ = dstAddress_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.srcPort_ = srcPort_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.dstPort_ = dstPort_;
                }
                if (((from_bitField0_ & 0x00000040) != 0)) {
                    result.startMplsLabel_ = startMplsLabel_;
                }
                if (((from_bitField0_ & 0x00000080) != 0)) {
                    result.endMplsLabel_ = endMplsLabel_;
                }
                if (((from_bitField0_ & 0x00000100) != 0)) {
                    result.tcpFlags_ = tcpFlags_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof acl.Acl.AclMatch) {
                    return mergeFrom((acl.Acl.AclMatch) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(acl.Acl.AclMatch other) {
                if (other == acl.Acl.AclMatch.getDefaultInstance())
                    return this;
                if (other.getDscp() != 0) {
                    setDscp(other.getDscp());
                }
                if (other.getProtocol() != 0) {
                    setProtocol(other.getProtocol());
                }
                if (!other.getSrcAddress().isEmpty()) {
                    srcAddress_ = other.srcAddress_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (!other.getDstAddress().isEmpty()) {
                    dstAddress_ = other.dstAddress_;
                    bitField0_ |= 0x00000008;
                    onChanged();
                }
                if (other.getSrcPort() != 0) {
                    setSrcPort(other.getSrcPort());
                }
                if (other.getDstPort() != 0) {
                    setDstPort(other.getDstPort());
                }
                if (other.getStartMplsLabel() != 0) {
                    setStartMplsLabel(other.getStartMplsLabel());
                }
                if (other.getEndMplsLabel() != 0) {
                    setEndMplsLabel(other.getEndMplsLabel());
                }
                if (!other.getTcpFlags().isEmpty()) {
                    tcpFlags_ = other.tcpFlags_;
                    bitField0_ |= 0x00000100;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    dscp_ = input.readUInt32();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 16:
                                {
                                    protocol_ = input.readUInt32();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 26:
                                {
                                    srcAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    dstAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            case 40:
                                {
                                    srcPort_ = input.readUInt32();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 40
                            case 48:
                                {
                                    dstPort_ = input.readUInt32();
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 48
                            case 56:
                                {
                                    startMplsLabel_ = input.readUInt32();
                                    bitField0_ |= 0x00000040;
                                    break;
                                }
                            // case 56
                            case 64:
                                {
                                    endMplsLabel_ = input.readUInt32();
                                    bitField0_ |= 0x00000080;
                                    break;
                                }
                            // case 64
                            case 74:
                                {
                                    tcpFlags_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000100;
                                    break;
                                }
                            // case 74
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int dscp_;

            /**
             * <code>uint32 dscp = 1;</code>
             * @return The dscp.
             */
            @java.lang.Override
            public int getDscp() {
                return dscp_;
            }

            /**
             * <code>uint32 dscp = 1;</code>
             * @param value The dscp to set.
             * @return This builder for chaining.
             */
            public Builder setDscp(int value) {
                dscp_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 dscp = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearDscp() {
                bitField0_ = (bitField0_ & ~0x00000001);
                dscp_ = 0;
                onChanged();
                return this;
            }

            private int protocol_;

            /**
             * <code>uint32 protocol = 2;</code>
             * @return The protocol.
             */
            @java.lang.Override
            public int getProtocol() {
                return protocol_;
            }

            /**
             * <code>uint32 protocol = 2;</code>
             * @param value The protocol to set.
             * @return This builder for chaining.
             */
            public Builder setProtocol(int value) {
                protocol_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 protocol = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearProtocol() {
                bitField0_ = (bitField0_ & ~0x00000002);
                protocol_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object srcAddress_ = "";

            /**
             * <code>string src_address = 3;</code>
             * @return The srcAddress.
             */
            public java.lang.String getSrcAddress() {
                java.lang.Object ref = srcAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    srcAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string src_address = 3;</code>
             * @return The bytes for srcAddress.
             */
            public com.google.protobuf.ByteString getSrcAddressBytes() {
                java.lang.Object ref = srcAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    srcAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string src_address = 3;</code>
             * @param value The srcAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                srcAddress_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string src_address = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcAddress() {
                srcAddress_ = getDefaultInstance().getSrcAddress();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string src_address = 3;</code>
             * @param value The bytes for srcAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                srcAddress_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private java.lang.Object dstAddress_ = "";

            /**
             * <code>string dst_address = 4;</code>
             * @return The dstAddress.
             */
            public java.lang.String getDstAddress() {
                java.lang.Object ref = dstAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    dstAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string dst_address = 4;</code>
             * @return The bytes for dstAddress.
             */
            public com.google.protobuf.ByteString getDstAddressBytes() {
                java.lang.Object ref = dstAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    dstAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string dst_address = 4;</code>
             * @param value The dstAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dstAddress_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>string dst_address = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstAddress() {
                dstAddress_ = getDefaultInstance().getDstAddress();
                bitField0_ = (bitField0_ & ~0x00000008);
                onChanged();
                return this;
            }

            /**
             * <code>string dst_address = 4;</code>
             * @param value The bytes for dstAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                dstAddress_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            private int srcPort_;

            /**
             * <code>uint32 src_port = 5;</code>
             * @return The srcPort.
             */
            @java.lang.Override
            public int getSrcPort() {
                return srcPort_;
            }

            /**
             * <code>uint32 src_port = 5;</code>
             * @param value The srcPort to set.
             * @return This builder for chaining.
             */
            public Builder setSrcPort(int value) {
                srcPort_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 src_port = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcPort() {
                bitField0_ = (bitField0_ & ~0x00000010);
                srcPort_ = 0;
                onChanged();
                return this;
            }

            private int dstPort_;

            /**
             * <code>uint32 dst_port = 6;</code>
             * @return The dstPort.
             */
            @java.lang.Override
            public int getDstPort() {
                return dstPort_;
            }

            /**
             * <code>uint32 dst_port = 6;</code>
             * @param value The dstPort to set.
             * @return This builder for chaining.
             */
            public Builder setDstPort(int value) {
                dstPort_ = value;
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 dst_port = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstPort() {
                bitField0_ = (bitField0_ & ~0x00000020);
                dstPort_ = 0;
                onChanged();
                return this;
            }

            private int startMplsLabel_;

            /**
             * <code>uint32 start_mpls_label = 7;</code>
             * @return The startMplsLabel.
             */
            @java.lang.Override
            public int getStartMplsLabel() {
                return startMplsLabel_;
            }

            /**
             * <code>uint32 start_mpls_label = 7;</code>
             * @param value The startMplsLabel to set.
             * @return This builder for chaining.
             */
            public Builder setStartMplsLabel(int value) {
                startMplsLabel_ = value;
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 start_mpls_label = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearStartMplsLabel() {
                bitField0_ = (bitField0_ & ~0x00000040);
                startMplsLabel_ = 0;
                onChanged();
                return this;
            }

            private int endMplsLabel_;

            /**
             * <code>uint32 end_mpls_label = 8;</code>
             * @return The endMplsLabel.
             */
            @java.lang.Override
            public int getEndMplsLabel() {
                return endMplsLabel_;
            }

            /**
             * <code>uint32 end_mpls_label = 8;</code>
             * @param value The endMplsLabel to set.
             * @return This builder for chaining.
             */
            public Builder setEndMplsLabel(int value) {
                endMplsLabel_ = value;
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 end_mpls_label = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearEndMplsLabel() {
                bitField0_ = (bitField0_ & ~0x00000080);
                endMplsLabel_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object tcpFlags_ = "";

            /**
             * <code>string tcp_flags = 9;</code>
             * @return The tcpFlags.
             */
            public java.lang.String getTcpFlags() {
                java.lang.Object ref = tcpFlags_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    tcpFlags_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string tcp_flags = 9;</code>
             * @return The bytes for tcpFlags.
             */
            public com.google.protobuf.ByteString getTcpFlagsBytes() {
                java.lang.Object ref = tcpFlags_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    tcpFlags_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string tcp_flags = 9;</code>
             * @param value The tcpFlags to set.
             * @return This builder for chaining.
             */
            public Builder setTcpFlags(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                tcpFlags_ = value;
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <code>string tcp_flags = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearTcpFlags() {
                tcpFlags_ = getDefaultInstance().getTcpFlags();
                bitField0_ = (bitField0_ & ~0x00000100);
                onChanged();
                return this;
            }

            /**
             * <code>string tcp_flags = 9;</code>
             * @param value The bytes for tcpFlags to set.
             * @return This builder for chaining.
             */
            public Builder setTcpFlagsBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                tcpFlags_ = value;
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:acl.AclMatch)
        }

        // @@protoc_insertion_point(class_scope:acl.AclMatch)
        private static final acl.Acl.AclMatch DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new acl.Acl.AclMatch();
        }

        public static acl.Acl.AclMatch getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<AclMatch> PARSER = new com.google.protobuf.AbstractParser<AclMatch>() {

            @java.lang.Override
            public AclMatch parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<AclMatch> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<AclMatch> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public acl.Acl.AclMatch getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface AclActionOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclAction)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
         * @return The enum numeric value on the wire for forwardAction.
         */
        int getForwardActionValue();

        /**
         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
         * @return The forwardAction.
         */
        acl.Acl.AclForwardActionEnum getForwardAction();

        /**
         * <code>.acl.AclLogActionEnum log_action = 2;</code>
         * @return The enum numeric value on the wire for logAction.
         */
        int getLogActionValue();

        /**
         * <code>.acl.AclLogActionEnum log_action = 2;</code>
         * @return The logAction.
         */
        acl.Acl.AclLogActionEnum getLogAction();
    }

    /**
     * Protobuf type {@code acl.AclAction}
     */
    public static final class AclAction extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclAction)
    AclActionOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use AclAction.newBuilder() to construct.
        private AclAction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private AclAction() {
            forwardAction_ = 0;
            logAction_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new AclAction();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return acl.Acl.internal_static_acl_AclAction_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
        }

        public static final int FORWARD_ACTION_FIELD_NUMBER = 1;

        private int forwardAction_ = 0;

        /**
         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
         * @return The enum numeric value on the wire for forwardAction.
         */
        @java.lang.Override
        public int getForwardActionValue() {
            return forwardAction_;
        }

        /**
         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
         * @return The forwardAction.
         */
        @java.lang.Override
        public acl.Acl.AclForwardActionEnum getForwardAction() {
            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
            return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
        }

        public static final int LOG_ACTION_FIELD_NUMBER = 2;

        private int logAction_ = 0;

        /**
         * <code>.acl.AclLogActionEnum log_action = 2;</code>
         * @return The enum numeric value on the wire for logAction.
         */
        @java.lang.Override
        public int getLogActionValue() {
            return logAction_;
        }

        /**
         * <code>.acl.AclLogActionEnum log_action = 2;</code>
         * @return The logAction.
         */
        @java.lang.Override
        public acl.Acl.AclLogActionEnum getLogAction() {
            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
            return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
                output.writeEnum(1, forwardAction_);
            }
            if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                output.writeEnum(2, logAction_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, forwardAction_);
            }
            if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof acl.Acl.AclAction)) {
                return super.equals(obj);
            }
            acl.Acl.AclAction other = (acl.Acl.AclAction) obj;
            if (forwardAction_ != other.forwardAction_)
                return false;
            if (logAction_ != other.logAction_)
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + FORWARD_ACTION_FIELD_NUMBER;
            hash = (53 * hash) + forwardAction_;
            hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER;
            hash = (53 * hash) + logAction_;
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static acl.Acl.AclAction parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclAction parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclAction parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclAction parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclAction parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclAction parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclAction parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclAction parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclAction parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static acl.Acl.AclAction parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclAction parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclAction parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(acl.Acl.AclAction prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code acl.AclAction}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclAction)
        acl.Acl.AclActionOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return acl.Acl.internal_static_acl_AclAction_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
            }

            // Construct using acl.Acl.AclAction.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                forwardAction_ = 0;
                logAction_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return acl.Acl.internal_static_acl_AclAction_descriptor;
            }

            @java.lang.Override
            public acl.Acl.AclAction getDefaultInstanceForType() {
                return acl.Acl.AclAction.getDefaultInstance();
            }

            @java.lang.Override
            public acl.Acl.AclAction build() {
                acl.Acl.AclAction result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public acl.Acl.AclAction buildPartial() {
                acl.Acl.AclAction result = new acl.Acl.AclAction(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(acl.Acl.AclAction result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.forwardAction_ = forwardAction_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.logAction_ = logAction_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof acl.Acl.AclAction) {
                    return mergeFrom((acl.Acl.AclAction) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(acl.Acl.AclAction other) {
                if (other == acl.Acl.AclAction.getDefaultInstance())
                    return this;
                if (other.forwardAction_ != 0) {
                    setForwardActionValue(other.getForwardActionValue());
                }
                if (other.logAction_ != 0) {
                    setLogActionValue(other.getLogActionValue());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    forwardAction_ = input.readEnum();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 16:
                                {
                                    logAction_ = input.readEnum();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int forwardAction_ = 0;

            /**
             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
             * @return The enum numeric value on the wire for forwardAction.
             */
            @java.lang.Override
            public int getForwardActionValue() {
                return forwardAction_;
            }

            /**
             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
             * @param value The enum numeric value on the wire for forwardAction to set.
             * @return This builder for chaining.
             */
            public Builder setForwardActionValue(int value) {
                forwardAction_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
             * @return The forwardAction.
             */
            @java.lang.Override
            public acl.Acl.AclForwardActionEnum getForwardAction() {
                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
                return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
             * @param value The forwardAction to set.
             * @return This builder for chaining.
             */
            public Builder setForwardAction(acl.Acl.AclForwardActionEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000001;
                forwardAction_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardAction() {
                bitField0_ = (bitField0_ & ~0x00000001);
                forwardAction_ = 0;
                onChanged();
                return this;
            }

            private int logAction_ = 0;

            /**
             * <code>.acl.AclLogActionEnum log_action = 2;</code>
             * @return The enum numeric value on the wire for logAction.
             */
            @java.lang.Override
            public int getLogActionValue() {
                return logAction_;
            }

            /**
             * <code>.acl.AclLogActionEnum log_action = 2;</code>
             * @param value The enum numeric value on the wire for logAction to set.
             * @return This builder for chaining.
             */
            public Builder setLogActionValue(int value) {
                logAction_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclLogActionEnum log_action = 2;</code>
             * @return The logAction.
             */
            @java.lang.Override
            public acl.Acl.AclLogActionEnum getLogAction() {
                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
                return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.acl.AclLogActionEnum log_action = 2;</code>
             * @param value The logAction to set.
             * @return This builder for chaining.
             */
            public Builder setLogAction(acl.Acl.AclLogActionEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000002;
                logAction_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclLogActionEnum log_action = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearLogAction() {
                bitField0_ = (bitField0_ & ~0x00000002);
                logAction_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:acl.AclAction)
        }

        // @@protoc_insertion_point(class_scope:acl.AclAction)
        private static final acl.Acl.AclAction DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new acl.Acl.AclAction();
        }

        public static acl.Acl.AclAction getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<AclAction> PARSER = new com.google.protobuf.AbstractParser<AclAction>() {

            @java.lang.Override
            public AclAction parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<AclAction> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<AclAction> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public acl.Acl.AclAction getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface AclEntryOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclEntry)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>uint32 sequence_id = 1;</code>
         * @return The sequenceId.
         */
        int getSequenceId();

        /**
         * <code>string description = 2;</code>
         * @return The description.
         */
        java.lang.String getDescription();

        /**
         * <code>string description = 2;</code>
         * @return The bytes for description.
         */
        com.google.protobuf.ByteString getDescriptionBytes();

        /**
         * <code>.acl.AclMatch match = 3;</code>
         * @return Whether the match field is set.
         */
        boolean hasMatch();

        /**
         * <code>.acl.AclMatch match = 3;</code>
         * @return The match.
         */
        acl.Acl.AclMatch getMatch();

        /**
         * <code>.acl.AclMatch match = 3;</code>
         */
        acl.Acl.AclMatchOrBuilder getMatchOrBuilder();

        /**
         * <code>.acl.AclAction action = 4;</code>
         * @return Whether the action field is set.
         */
        boolean hasAction();

        /**
         * <code>.acl.AclAction action = 4;</code>
         * @return The action.
         */
        acl.Acl.AclAction getAction();

        /**
         * <code>.acl.AclAction action = 4;</code>
         */
        acl.Acl.AclActionOrBuilder getActionOrBuilder();
    }

    /**
     * Protobuf type {@code acl.AclEntry}
     */
    public static final class AclEntry extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclEntry)
    AclEntryOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use AclEntry.newBuilder() to construct.
        private AclEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private AclEntry() {
            description_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new AclEntry();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return acl.Acl.internal_static_acl_AclEntry_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
        }

        public static final int SEQUENCE_ID_FIELD_NUMBER = 1;

        private int sequenceId_ = 0;

        /**
         * <code>uint32 sequence_id = 1;</code>
         * @return The sequenceId.
         */
        @java.lang.Override
        public int getSequenceId() {
            return sequenceId_;
        }

        public static final int DESCRIPTION_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object description_ = "";

        /**
         * <code>string description = 2;</code>
         * @return The description.
         */
        @java.lang.Override
        public java.lang.String getDescription() {
            java.lang.Object ref = description_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                description_ = s;
                return s;
            }
        }

        /**
         * <code>string description = 2;</code>
         * @return The bytes for description.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDescriptionBytes() {
            java.lang.Object ref = description_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                description_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int MATCH_FIELD_NUMBER = 3;

        private acl.Acl.AclMatch match_;

        /**
         * <code>.acl.AclMatch match = 3;</code>
         * @return Whether the match field is set.
         */
        @java.lang.Override
        public boolean hasMatch() {
            return match_ != null;
        }

        /**
         * <code>.acl.AclMatch match = 3;</code>
         * @return The match.
         */
        @java.lang.Override
        public acl.Acl.AclMatch getMatch() {
            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
        }

        /**
         * <code>.acl.AclMatch match = 3;</code>
         */
        @java.lang.Override
        public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
        }

        public static final int ACTION_FIELD_NUMBER = 4;

        private acl.Acl.AclAction action_;

        /**
         * <code>.acl.AclAction action = 4;</code>
         * @return Whether the action field is set.
         */
        @java.lang.Override
        public boolean hasAction() {
            return action_ != null;
        }

        /**
         * <code>.acl.AclAction action = 4;</code>
         * @return The action.
         */
        @java.lang.Override
        public acl.Acl.AclAction getAction() {
            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
        }

        /**
         * <code>.acl.AclAction action = 4;</code>
         */
        @java.lang.Override
        public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (sequenceId_ != 0) {
                output.writeUInt32(1, sequenceId_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
            }
            if (match_ != null) {
                output.writeMessage(3, getMatch());
            }
            if (action_ != null) {
                output.writeMessage(4, getAction());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (sequenceId_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
            }
            if (match_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getMatch());
            }
            if (action_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof acl.Acl.AclEntry)) {
                return super.equals(obj);
            }
            acl.Acl.AclEntry other = (acl.Acl.AclEntry) obj;
            if (getSequenceId() != other.getSequenceId())
                return false;
            if (!getDescription().equals(other.getDescription()))
                return false;
            if (hasMatch() != other.hasMatch())
                return false;
            if (hasMatch()) {
                if (!getMatch().equals(other.getMatch()))
                    return false;
            }
            if (hasAction() != other.hasAction())
                return false;
            if (hasAction()) {
                if (!getAction().equals(other.getAction()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SEQUENCE_ID_FIELD_NUMBER;
            hash = (53 * hash) + getSequenceId();
            hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
            hash = (53 * hash) + getDescription().hashCode();
            if (hasMatch()) {
                hash = (37 * hash) + MATCH_FIELD_NUMBER;
                hash = (53 * hash) + getMatch().hashCode();
            }
            if (hasAction()) {
                hash = (37 * hash) + ACTION_FIELD_NUMBER;
                hash = (53 * hash) + getAction().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static acl.Acl.AclEntry parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclEntry parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclEntry parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclEntry parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclEntry parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclEntry parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static acl.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(acl.Acl.AclEntry prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code acl.AclEntry}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclEntry)
        acl.Acl.AclEntryOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return acl.Acl.internal_static_acl_AclEntry_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
            }

            // Construct using acl.Acl.AclEntry.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                sequenceId_ = 0;
                description_ = "";
                match_ = null;
                if (matchBuilder_ != null) {
                    matchBuilder_.dispose();
                    matchBuilder_ = null;
                }
                action_ = null;
                if (actionBuilder_ != null) {
                    actionBuilder_.dispose();
                    actionBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return acl.Acl.internal_static_acl_AclEntry_descriptor;
            }

            @java.lang.Override
            public acl.Acl.AclEntry getDefaultInstanceForType() {
                return acl.Acl.AclEntry.getDefaultInstance();
            }

            @java.lang.Override
            public acl.Acl.AclEntry build() {
                acl.Acl.AclEntry result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public acl.Acl.AclEntry buildPartial() {
                acl.Acl.AclEntry result = new acl.Acl.AclEntry(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(acl.Acl.AclEntry result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.sequenceId_ = sequenceId_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.description_ = description_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof acl.Acl.AclEntry) {
                    return mergeFrom((acl.Acl.AclEntry) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(acl.Acl.AclEntry other) {
                if (other == acl.Acl.AclEntry.getDefaultInstance())
                    return this;
                if (other.getSequenceId() != 0) {
                    setSequenceId(other.getSequenceId());
                }
                if (!other.getDescription().isEmpty()) {
                    description_ = other.description_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.hasMatch()) {
                    mergeMatch(other.getMatch());
                }
                if (other.hasAction()) {
                    mergeAction(other.getAction());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    sequenceId_ = input.readUInt32();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 18:
                                {
                                    description_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int sequenceId_;

            /**
             * <code>uint32 sequence_id = 1;</code>
             * @return The sequenceId.
             */
            @java.lang.Override
            public int getSequenceId() {
                return sequenceId_;
            }

            /**
             * <code>uint32 sequence_id = 1;</code>
             * @param value The sequenceId to set.
             * @return This builder for chaining.
             */
            public Builder setSequenceId(int value) {
                sequenceId_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 sequence_id = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSequenceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sequenceId_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object description_ = "";

            /**
             * <code>string description = 2;</code>
             * @return The description.
             */
            public java.lang.String getDescription() {
                java.lang.Object ref = description_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    description_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string description = 2;</code>
             * @return The bytes for description.
             */
            public com.google.protobuf.ByteString getDescriptionBytes() {
                java.lang.Object ref = description_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    description_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string description = 2;</code>
             * @param value The description to set.
             * @return This builder for chaining.
             */
            public Builder setDescription(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                description_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string description = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDescription() {
                description_ = getDefaultInstance().getDescription();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string description = 2;</code>
             * @param value The bytes for description to set.
             * @return This builder for chaining.
             */
            public Builder setDescriptionBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                description_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private acl.Acl.AclMatch match_;

            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> matchBuilder_;

            /**
             * <code>.acl.AclMatch match = 3;</code>
             * @return Whether the match field is set.
             */
            public boolean hasMatch() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             * @return The match.
             */
            public acl.Acl.AclMatch getMatch() {
                if (matchBuilder_ == null) {
                    return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
                } else {
                    return matchBuilder_.getMessage();
                }
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public Builder setMatch(acl.Acl.AclMatch value) {
                if (matchBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    match_ = value;
                } else {
                    matchBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) {
                if (matchBuilder_ == null) {
                    match_ = builderForValue.build();
                } else {
                    matchBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public Builder mergeMatch(acl.Acl.AclMatch value) {
                if (matchBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) {
                        getMatchBuilder().mergeFrom(value);
                    } else {
                        match_ = value;
                    }
                } else {
                    matchBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public Builder clearMatch() {
                bitField0_ = (bitField0_ & ~0x00000004);
                match_ = null;
                if (matchBuilder_ != null) {
                    matchBuilder_.dispose();
                    matchBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public acl.Acl.AclMatch.Builder getMatchBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getMatchFieldBuilder().getBuilder();
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
                if (matchBuilder_ != null) {
                    return matchBuilder_.getMessageOrBuilder();
                } else {
                    return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
                }
            }

            /**
             * <code>.acl.AclMatch match = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> getMatchFieldBuilder() {
                if (matchBuilder_ == null) {
                    matchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder>(getMatch(), getParentForChildren(), isClean());
                    match_ = null;
                }
                return matchBuilder_;
            }

            private acl.Acl.AclAction action_;

            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> actionBuilder_;

            /**
             * <code>.acl.AclAction action = 4;</code>
             * @return Whether the action field is set.
             */
            public boolean hasAction() {
                return ((bitField0_ & 0x00000008) != 0);
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             * @return The action.
             */
            public acl.Acl.AclAction getAction() {
                if (actionBuilder_ == null) {
                    return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
                } else {
                    return actionBuilder_.getMessage();
                }
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public Builder setAction(acl.Acl.AclAction value) {
                if (actionBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    action_ = value;
                } else {
                    actionBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public Builder setAction(acl.Acl.AclAction.Builder builderForValue) {
                if (actionBuilder_ == null) {
                    action_ = builderForValue.build();
                } else {
                    actionBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public Builder mergeAction(acl.Acl.AclAction value) {
                if (actionBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) {
                        getActionBuilder().mergeFrom(value);
                    } else {
                        action_ = value;
                    }
                } else {
                    actionBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public Builder clearAction() {
                bitField0_ = (bitField0_ & ~0x00000008);
                action_ = null;
                if (actionBuilder_ != null) {
                    actionBuilder_.dispose();
                    actionBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public acl.Acl.AclAction.Builder getActionBuilder() {
                bitField0_ |= 0x00000008;
                onChanged();
                return getActionFieldBuilder().getBuilder();
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
                if (actionBuilder_ != null) {
                    return actionBuilder_.getMessageOrBuilder();
                } else {
                    return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
                }
            }

            /**
             * <code>.acl.AclAction action = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> getActionFieldBuilder() {
                if (actionBuilder_ == null) {
                    actionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder>(getAction(), getParentForChildren(), isClean());
                    action_ = null;
                }
                return actionBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:acl.AclEntry)
        }

        // @@protoc_insertion_point(class_scope:acl.AclEntry)
        private static final acl.Acl.AclEntry DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new acl.Acl.AclEntry();
        }

        public static acl.Acl.AclEntry getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<AclEntry> PARSER = new com.google.protobuf.AbstractParser<AclEntry>() {

            @java.lang.Override
            public AclEntry parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<AclEntry> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<AclEntry> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public acl.Acl.AclEntry getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface AclRuleSetOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclRuleSet)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string name = 1;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 1;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>.acl.AclRuleTypeEnum type = 2;</code>
         * @return The enum numeric value on the wire for type.
         */
        int getTypeValue();

        /**
         * <code>.acl.AclRuleTypeEnum type = 2;</code>
         * @return The type.
         */
        acl.Acl.AclRuleTypeEnum getType();

        /**
         * <code>string description = 3;</code>
         * @return The description.
         */
        java.lang.String getDescription();

        /**
         * <code>string description = 3;</code>
         * @return The bytes for description.
         */
        com.google.protobuf.ByteString getDescriptionBytes();

        /**
         * <code>string user_id = 4;</code>
         * @return The userId.
         */
        java.lang.String getUserId();

        /**
         * <code>string user_id = 4;</code>
         * @return The bytes for userId.
         */
        com.google.protobuf.ByteString getUserIdBytes();

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        java.util.List<acl.Acl.AclEntry> getEntriesList();

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        acl.Acl.AclEntry getEntries(int index);

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        int getEntriesCount();

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList();

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code acl.AclRuleSet}
     */
    public static final class AclRuleSet extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclRuleSet)
    AclRuleSetOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use AclRuleSet.newBuilder() to construct.
        private AclRuleSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private AclRuleSet() {
            name_ = "";
            type_ = 0;
            description_ = "";
            userId_ = "";
            entries_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new AclRuleSet();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
        }

        public static final int NAME_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 1;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 1;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TYPE_FIELD_NUMBER = 2;

        private int type_ = 0;

        /**
         * <code>.acl.AclRuleTypeEnum type = 2;</code>
         * @return The enum numeric value on the wire for type.
         */
        @java.lang.Override
        public int getTypeValue() {
            return type_;
        }

        /**
         * <code>.acl.AclRuleTypeEnum type = 2;</code>
         * @return The type.
         */
        @java.lang.Override
        public acl.Acl.AclRuleTypeEnum getType() {
            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
            return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
        }

        public static final int DESCRIPTION_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object description_ = "";

        /**
         * <code>string description = 3;</code>
         * @return The description.
         */
        @java.lang.Override
        public java.lang.String getDescription() {
            java.lang.Object ref = description_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                description_ = s;
                return s;
            }
        }

        /**
         * <code>string description = 3;</code>
         * @return The bytes for description.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDescriptionBytes() {
            java.lang.Object ref = description_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                description_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int USER_ID_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private volatile java.lang.Object userId_ = "";

        /**
         * <code>string user_id = 4;</code>
         * @return The userId.
         */
        @java.lang.Override
        public java.lang.String getUserId() {
            java.lang.Object ref = userId_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                userId_ = s;
                return s;
            }
        }

        /**
         * <code>string user_id = 4;</code>
         * @return The bytes for userId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getUserIdBytes() {
            java.lang.Object ref = userId_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                userId_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ENTRIES_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<acl.Acl.AclEntry> entries_;

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        @java.lang.Override
        public java.util.List<acl.Acl.AclEntry> getEntriesList() {
            return entries_;
        }

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList() {
            return entries_;
        }

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        @java.lang.Override
        public int getEntriesCount() {
            return entries_.size();
        }

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        @java.lang.Override
        public acl.Acl.AclEntry getEntries(int index) {
            return entries_.get(index);
        }

        /**
         * <code>repeated .acl.AclEntry entries = 5;</code>
         */
        @java.lang.Override
        public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index) {
            return entries_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
            }
            if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                output.writeEnum(2, type_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_);
            }
            for (int i = 0; i < entries_.size(); i++) {
                output.writeMessage(5, entries_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
            }
            if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_);
            }
            for (int i = 0; i < entries_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof acl.Acl.AclRuleSet)) {
                return super.equals(obj);
            }
            acl.Acl.AclRuleSet other = (acl.Acl.AclRuleSet) obj;
            if (!getName().equals(other.getName()))
                return false;
            if (type_ != other.type_)
                return false;
            if (!getDescription().equals(other.getDescription()))
                return false;
            if (!getUserId().equals(other.getUserId()))
                return false;
            if (!getEntriesList().equals(other.getEntriesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + type_;
            hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
            hash = (53 * hash) + getDescription().hashCode();
            hash = (37 * hash) + USER_ID_FIELD_NUMBER;
            hash = (53 * hash) + getUserId().hashCode();
            if (getEntriesCount() > 0) {
                hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
                hash = (53 * hash) + getEntriesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static acl.Acl.AclRuleSet parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclRuleSet parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclRuleSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static acl.Acl.AclRuleSet parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static acl.Acl.AclRuleSet parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclRuleSet parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclRuleSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static acl.Acl.AclRuleSet parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(acl.Acl.AclRuleSet prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code acl.AclRuleSet}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclRuleSet)
        acl.Acl.AclRuleSetOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
            }

            // Construct using acl.Acl.AclRuleSet.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                name_ = "";
                type_ = 0;
                description_ = "";
                userId_ = "";
                if (entriesBuilder_ == null) {
                    entries_ = java.util.Collections.emptyList();
                } else {
                    entries_ = null;
                    entriesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
            }

            @java.lang.Override
            public acl.Acl.AclRuleSet getDefaultInstanceForType() {
                return acl.Acl.AclRuleSet.getDefaultInstance();
            }

            @java.lang.Override
            public acl.Acl.AclRuleSet build() {
                acl.Acl.AclRuleSet result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public acl.Acl.AclRuleSet buildPartial() {
                acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) {
                if (entriesBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        entries_ = java.util.Collections.unmodifiableList(entries_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.entries_ = entries_;
                } else {
                    result.entries_ = entriesBuilder_.build();
                }
            }

            private void buildPartial0(acl.Acl.AclRuleSet result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.type_ = type_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.description_ = description_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.userId_ = userId_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof acl.Acl.AclRuleSet) {
                    return mergeFrom((acl.Acl.AclRuleSet) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(acl.Acl.AclRuleSet other) {
                if (other == acl.Acl.AclRuleSet.getDefaultInstance())
                    return this;
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (other.type_ != 0) {
                    setTypeValue(other.getTypeValue());
                }
                if (!other.getDescription().isEmpty()) {
                    description_ = other.description_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (!other.getUserId().isEmpty()) {
                    userId_ = other.userId_;
                    bitField0_ |= 0x00000008;
                    onChanged();
                }
                if (entriesBuilder_ == null) {
                    if (!other.entries_.isEmpty()) {
                        if (entries_.isEmpty()) {
                            entries_ = other.entries_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureEntriesIsMutable();
                            entries_.addAll(other.entries_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.entries_.isEmpty()) {
                        if (entriesBuilder_.isEmpty()) {
                            entriesBuilder_.dispose();
                            entriesBuilder_ = null;
                            entries_ = other.entries_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null;
                        } else {
                            entriesBuilder_.addAllMessages(other.entries_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    type_ = input.readEnum();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 26:
                                {
                                    description_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    userId_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry);
                                    if (entriesBuilder_ == null) {
                                        ensureEntriesIsMutable();
                                        entries_.add(m);
                                    } else {
                                        entriesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 1;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 1;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 1;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 1;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private int type_ = 0;

            /**
             * <code>.acl.AclRuleTypeEnum type = 2;</code>
             * @return The enum numeric value on the wire for type.
             */
            @java.lang.Override
            public int getTypeValue() {
                return type_;
            }

            /**
             * <code>.acl.AclRuleTypeEnum type = 2;</code>
             * @param value The enum numeric value on the wire for type to set.
             * @return This builder for chaining.
             */
            public Builder setTypeValue(int value) {
                type_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleTypeEnum type = 2;</code>
             * @return The type.
             */
            @java.lang.Override
            public acl.Acl.AclRuleTypeEnum getType() {
                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
                return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.acl.AclRuleTypeEnum type = 2;</code>
             * @param value The type to set.
             * @return This builder for chaining.
             */
            public Builder setType(acl.Acl.AclRuleTypeEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000002;
                type_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleTypeEnum type = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {
                bitField0_ = (bitField0_ & ~0x00000002);
                type_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object description_ = "";

            /**
             * <code>string description = 3;</code>
             * @return The description.
             */
            public java.lang.String getDescription() {
                java.lang.Object ref = description_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    description_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string description = 3;</code>
             * @return The bytes for description.
             */
            public com.google.protobuf.ByteString getDescriptionBytes() {
                java.lang.Object ref = description_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    description_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string description = 3;</code>
             * @param value The description to set.
             * @return This builder for chaining.
             */
            public Builder setDescription(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                description_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string description = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDescription() {
                description_ = getDefaultInstance().getDescription();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string description = 3;</code>
             * @param value The bytes for description to set.
             * @return This builder for chaining.
             */
            public Builder setDescriptionBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                description_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private java.lang.Object userId_ = "";

            /**
             * <code>string user_id = 4;</code>
             * @return The userId.
             */
            public java.lang.String getUserId() {
                java.lang.Object ref = userId_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    userId_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string user_id = 4;</code>
             * @return The bytes for userId.
             */
            public com.google.protobuf.ByteString getUserIdBytes() {
                java.lang.Object ref = userId_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    userId_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string user_id = 4;</code>
             * @param value The userId to set.
             * @return This builder for chaining.
             */
            public Builder setUserId(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                userId_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>string user_id = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearUserId() {
                userId_ = getDefaultInstance().getUserId();
                bitField0_ = (bitField0_ & ~0x00000008);
                onChanged();
                return this;
            }

            /**
             * <code>string user_id = 4;</code>
             * @param value The bytes for userId to set.
             * @return This builder for chaining.
             */
            public Builder setUserIdBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                userId_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            private java.util.List<acl.Acl.AclEntry> entries_ = java.util.Collections.emptyList();

            private void ensureEntriesIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    entries_ = new java.util.ArrayList<acl.Acl.AclEntry>(entries_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> entriesBuilder_;

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public java.util.List<acl.Acl.AclEntry> getEntriesList() {
                if (entriesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(entries_);
                } else {
                    return entriesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public int getEntriesCount() {
                if (entriesBuilder_ == null) {
                    return entries_.size();
                } else {
                    return entriesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public acl.Acl.AclEntry getEntries(int index) {
                if (entriesBuilder_ == null) {
                    return entries_.get(index);
                } else {
                    return entriesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder setEntries(int index, acl.Acl.AclEntry value) {
                if (entriesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEntriesIsMutable();
                    entries_.set(index, value);
                    onChanged();
                } else {
                    entriesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder setEntries(int index, acl.Acl.AclEntry.Builder builderForValue) {
                if (entriesBuilder_ == null) {
                    ensureEntriesIsMutable();
                    entries_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    entriesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder addEntries(acl.Acl.AclEntry value) {
                if (entriesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEntriesIsMutable();
                    entries_.add(value);
                    onChanged();
                } else {
                    entriesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder addEntries(int index, acl.Acl.AclEntry value) {
                if (entriesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEntriesIsMutable();
                    entries_.add(index, value);
                    onChanged();
                } else {
                    entriesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder addEntries(acl.Acl.AclEntry.Builder builderForValue) {
                if (entriesBuilder_ == null) {
                    ensureEntriesIsMutable();
                    entries_.add(builderForValue.build());
                    onChanged();
                } else {
                    entriesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder addEntries(int index, acl.Acl.AclEntry.Builder builderForValue) {
                if (entriesBuilder_ == null) {
                    ensureEntriesIsMutable();
                    entries_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    entriesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder addAllEntries(java.lang.Iterable<? extends acl.Acl.AclEntry> values) {
                if (entriesBuilder_ == null) {
                    ensureEntriesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, entries_);
                    onChanged();
                } else {
                    entriesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder clearEntries() {
                if (entriesBuilder_ == null) {
                    entries_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    entriesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public Builder removeEntries(int index) {
                if (entriesBuilder_ == null) {
                    ensureEntriesIsMutable();
                    entries_.remove(index);
                    onChanged();
                } else {
                    entriesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public acl.Acl.AclEntry.Builder getEntriesBuilder(int index) {
                return getEntriesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index) {
                if (entriesBuilder_ == null) {
                    return entries_.get(index);
                } else {
                    return entriesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList() {
                if (entriesBuilder_ != null) {
                    return entriesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(entries_);
                }
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public acl.Acl.AclEntry.Builder addEntriesBuilder() {
                return getEntriesFieldBuilder().addBuilder(acl.Acl.AclEntry.getDefaultInstance());
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public acl.Acl.AclEntry.Builder addEntriesBuilder(int index) {
                return getEntriesFieldBuilder().addBuilder(index, acl.Acl.AclEntry.getDefaultInstance());
            }

            /**
             * <code>repeated .acl.AclEntry entries = 5;</code>
             */
            public java.util.List<acl.Acl.AclEntry.Builder> getEntriesBuilderList() {
                return getEntriesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> getEntriesFieldBuilder() {
                if (entriesBuilder_ == null) {
                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    entries_ = null;
                }
                return entriesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:acl.AclRuleSet)
        }

        // @@protoc_insertion_point(class_scope:acl.AclRuleSet)
        private static final acl.Acl.AclRuleSet DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new acl.Acl.AclRuleSet();
        }

        public static acl.Acl.AclRuleSet getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<AclRuleSet> PARSER = new com.google.protobuf.AbstractParser<AclRuleSet>() {

            @java.lang.Override
            public AclRuleSet parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<AclRuleSet> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<AclRuleSet> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public acl.Acl.AclRuleSet getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclMatch_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclMatch_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclAction_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclAction_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclRuleSet_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclRuleSet_fieldAccessorTable;

    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
        return descriptor;
    }

    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;

    static {
        java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\275\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\022\021\n\ttcp_fla" + "gs\030\t \001(\t\"i\n\tAclAction\0221\n\016forward_action\030" + "\001 \001(\0162\031.acl.AclForwardActionEnum\022)\n\nlog_" + "action\030\002 \001(\0162\025.acl.AclLogActionEnum\"r\n\010A" + "clEntry\022\023\n\013sequence_id\030\001 \001(\r\022\023\n\013descript" + "ion\030\002 \001(\t\022\034\n\005match\030\003 \001(\0132\r.acl.AclMatch\022" + "\036\n\006action\030\004 \001(\0132\016.acl.AclAction\"\204\001\n\nAclR" + "uleSet\022\014\n\004name\030\001 \001(\t\022\"\n\004type\030\002 \001(\0162\024.acl" + ".AclRuleTypeEnum\022\023\n\013description\030\003 \001(\t\022\017\n" + "\007user_id\030\004 \001(\t\022\036\n\007entries\030\005 \003(\0132\r.acl.Ac" + "lEntry*\231\001\n\017AclRuleTypeEnum\022\031\n\025ACLRULETYP" + "E_UNDEFINED\020\000\022\024\n\020ACLRULETYPE_IPV4\020\001\022\024\n\020A" + "CLRULETYPE_IPV6\020\002\022\022\n\016ACLRULETYPE_L2\020\003\022\024\n" + "\020ACLRULETYPE_MPLS\020\004\022\025\n\021ACLRULETYPE_MIXED" + "\020\005*\227\001\n\024AclForwardActionEnum\022!\n\035ACLFORWAR" + "DINGACTION_UNDEFINED\020\000\022\034\n\030ACLFORWARDINGA" + "CTION_DROP\020\001\022\036\n\032ACLFORWARDINGACTION_ACCE" + "PT\020\002\022\036\n\032ACLFORWARDINGACTION_REJECT\020\003*_\n\020" + "AclLogActionEnum\022\032\n\026ACLLOGACTION_UNDEFIN" + "ED\020\000\022\026\n\022ACLLOGACTION_NOLOG\020\001\022\027\n\023ACLLOGAC" + "TION_SYSLOG\020\002b\006proto3" };
        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {});
        internal_static_acl_AclMatch_descriptor = getDescriptor().getMessageTypes().get(0);
        internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel", "TcpFlags" });
        internal_static_acl_AclAction_descriptor = getDescriptor().getMessageTypes().get(1);
        internal_static_acl_AclAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclAction_descriptor, new java.lang.String[] { "ForwardAction", "LogAction" });
        internal_static_acl_AclEntry_descriptor = getDescriptor().getMessageTypes().get(2);
        internal_static_acl_AclEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclEntry_descriptor, new java.lang.String[] { "SequenceId", "Description", "Match", "Action" });
        internal_static_acl_AclRuleSet_descriptor = getDescriptor().getMessageTypes().get(3);
        internal_static_acl_AclRuleSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclRuleSet_descriptor, new java.lang.String[] { "Name", "Type", "Description", "UserId", "Entries" });
    }
    // @@protoc_insertion_point(outer_class_scope)
}
