syntax = "proto3";

package benchmark;

option java_package = "com.google.protobuf.benchmarks";
option optimize_for = SPEED;
option cc_enable_arenas = true;

enum Enum {
    E0 = 0;
    E1 = 1;
    E2 = 2;
    E3 = 3;
    E5 = 5;
}

message SubMessage {
    uint32 field1 = 1;
    uint32 field2 = 2;
    int32 field3 = 3;
    string field15 = 15;
    bytes field12 = 12;
    int64 field13 = 13;
    int64 field14 = 14;
    fixed64 field21 = 21;
    int32 field22 = 22;
    bool field206 = 206;
    fixed32 field203 = 203;
    int32 field204 = 204;
    string field205 = 205;
    uint64 field207 = 207;
    Enum field300 = 300;
}

message Message1 {
    bool field80 = 80;
    bool field81 = 81;
    int32 field2 = 2;
    int32 field3 = 3;
    int32 field280 = 280;
    int32 field6 = 6;
    int64 field22 = 22;
    repeated string field4 = 4;
    bool field59 = 59;
    int32 field16 = 16;
    int32 field150 = 150;
    int32 field23 = 23;
    bool field24 = 24;
    int32 field25 = 25;
    SubMessage field15 = 15;
    bool field78 = 78;
    int32 field67 = 67;
    int32 field68 = 68;
    int32 field128 = 128;
    string field129 = 129;
    int32 field131 = 131;
}

message Message2 {
    Enum field1 = 1;
    uint64 field2 = 2;
    sint32 field3 = 3;
    string field4 = 4;
    int32 field5 = 5;
    bool field6 = 6;
}

message Message3 {
    message SubMessage {
        int32 field28 = 28;
        int64 field2 = 2;
        int32 field12 = 12;
        string field19 = 19;
        int32 field11 = 11;
    }

    repeated SubMessage field13 = 13;
}

message Message {
    oneof oneof {
        Message1 message1 = 1;
        Message2 message2 = 2;
        Message3 message3 = 7;
    }
}
