Sandkassa: Difference between revisions

From Maria GDK Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 6: Line 6:


{{Note|Remember to always do the thing}}
{{Note|Remember to always do the thing}}
Gigantisk haug med kode:
<source lang="csharp">
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: simpledrawobject.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace TPG.DrawObjects.Serialize.Protoc {
  /// <summary>Holder for reflection information generated from simpledrawobject.proto</summary>
  public static partial class SimpledrawobjectReflection {
    #region Descriptor
    /// <summary>File descriptor for simpledrawobject.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;
    static SimpledrawobjectReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChZzaW1wbGVkcmF3b2JqZWN0LnByb3RvEgh0dXRvcmlhbCLmAgoNR2VvUG9p",
            "bnRQcm90bxJACg1maWVsZF9pbmRleGVzGAEgAygLMikudHV0b3JpYWwuR2Vv",
            "UG9pbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2luZGV4",
            "ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgBEhAKCGxhdGl0dWRlGAQgASgB",
            "EgwKBFRleHQYBSABKAkSEAoIYWx0aXR1ZGUYBiABKAESRwoQcG9pbnRJbmZv",
            "cm1hdGlvbhgHIAMoCzItLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8uUG9pbnRJ",
            "bmZvcm1hdGlvbkVudHJ5GjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVUG9pbnRJbmZvcm1hdGlvbkVu",
            "dHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEihAMKF0dlb1No",
            "aWZ0ZWRJbnRQb2ludFByb3RvEkoKDWZpZWxkX2luZGV4ZXMYASADKAsyMy50",
            "dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90by5GaWVsZEluZGV4ZXNF",
            "bnRyeRIXCg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMg",
            "ASgREhAKCGxhdGl0dWRlGAQgASgREgwKBFRleHQYBSABKAkSEAoIYWx0aXR1",
            "ZGUYBiABKAESUQoQcG9pbnRJbmZvcm1hdGlvbhgHIAMoCzI3LnR1dG9yaWFs",
            "Lkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvLlBvaW50SW5mb3JtYXRpb25FbnRy",
            "eRozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUY",
            "AiABKAk6AjgBGjcKFVBvaW50SW5mb3JtYXRpb25FbnRyeRILCgNrZXkYASAB",
            "KAkSDQoFdmFsdWUYAiABKAk6AjgBInMKEFBvaW50SW5mb3JtYXRpb24SMgoE",
            "aW5mbxgBIAMoCzIkLnR1dG9yaWFsLlBvaW50SW5mb3JtYXRpb24uSW5mb0Vu",
            "dHJ5GisKCUluZm9FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6",
            "AjgBIowBChRHZW9Eb3VibGVQb2ludHNQcm90bxIRCglsb25naXR1ZGUYASAD",
            "KAESEAoIbGF0aXR1ZGUYAiADKAESDAoEVGV4dBgDIAMoCRIQCghhbHRpdHVk",
            "ZRgEIAMoARIvCgtpbmZvcm1hdGlvbhgFIAMoCzIaLnR1dG9yaWFsLlBvaW50",
            "SW5mb3JtYXRpb24ikAEKGEdlb1NoaWZ0ZWRJbnRQb2ludHNQcm90bxIRCgls",
            "b25naXR1ZGUYASADKBESEAoIbGF0aXR1ZGUYAiADKBESDAoEVGV4dBgDIAMo",
            "CRIQCghhbHRpdHVkZRgEIAMoARIvCgtpbmZvcm1hdGlvbhgFIAMoCzIaLnR1",
            "dG9yaWFsLlBvaW50SW5mb3JtYXRpb24i4gUKD0RhdGFGaWVsZHNQcm90bxJC",
            "Cg1maWVsZF9pbmRleGVzGAEgAygLMisudHV0b3JpYWwuRGF0YUZpZWxkc1By",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIMCgRuYW1lGAMgASgJEhUKDUhpZXJhcmNoeUNvZGUYBCABKAkSEQoJRHJh",
            "d0RlcHRoGAUgASgFEhUKDVJvdGF0aW9uQW5nbGUYBiABKAISDwoHVmVyc2lv",
            "bhgHIAEoDRITCgtBbHBoYUZhY3RvchgIIAEoAhIeChZNb3ZlbWVudEluZGlj",
            "YXRvckNvbG9yGAkgASgNEiQKHE9mZnNldExvY2F0aW9uSW5kaWNhdG9yQ29s",
            "b3IYCiABKA0SFQoNTGFiZWxGb250TmFtZRgLIAEoCRIVCg1MYWJlbEZvbnRT",
            "aXplGAwgASgNEiAKGExhYmVsRm9udEZvcmVncm91bmRDb2xvchgNIAEoDRIX",
            "Cg9NaW5EeW5hbWljU2NhbGUYDiABKAISFwoPTWF4RHluYW1pY1NjYWxlGA8g",
            "ASgCEj8KC0V4dHJhRmllbGRzGBAgAygLMioudHV0b3JpYWwuRGF0YUZpZWxk",
            "c1Byb3RvLkV4dHJhRmllbGRzRW50cnkSTwoTVGFjdGljYWxFeHRyYUZpZWxk",
            "cxgRIAMoCzIyLnR1dG9yaWFsLkRhdGFGaWVsZHNQcm90by5UYWN0aWNhbEV4",
            "dHJhRmllbGRzRW50cnkaMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEg",
            "ASgNEg0KBXZhbHVlGAIgASgJOgI4ARoyChBFeHRyYUZpZWxkc0VudHJ5EgsK",
            "A2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaOgoYVGFjdGljYWxFeHRy",
            "YUZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi",
            "lAQKE1RhY3RpY2FsRmllbGRzUHJvdG8SRgoNZmllbGRfaW5kZXhlcxgBIAMo",
            "CzIvLnR1dG9yaWFsLlRhY3RpY2FsRmllbGRzUHJvdG8uRmllbGRJbmRleGVz",
            "RW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhgKEE1pbmVmaWVsZE9w",
            "YWNpdHkYAyABKAISFwoPU3ltYm9sSW5kaWNhdG9yGAQgASgJEh0KFUFkZGl0",
            "aW9uYWxJbmZvcm1hdGlvbhgFIAMoCRIZChFVbmlxdWVEZXNpZ25hdGlvbhgG",
            "IAMoCRIVCg1EYXRlVGltZUdyb3VwGAcgAygJEiMKG09mZnNldExvY2F0aW9u",
            "RGlzcGxhY2VtZW50WBgIIAEoAhIjChtPZmZzZXRMb2NhdGlvbkRpc3BsYWNl",
            "bWVudFkYCSABKAISEAoIUXVhbnRpdHkYCiABKAISGQoRTnVjbGVhcldlYXBv",
            "blR5cGUYCyABKAkSGwoTRGlyZWN0aW9uT2ZNb3ZlbWVudBgMIAEoCRIVCg1B",
            "bHRpdHVkZURlcHRoGA0gASgCEhAKCERpc3RhbmNlGA4gASgCEg8KB0F6aW11",
            "dGgYDyABKAISFQoNVGFjdGljYWxFbnVtcxgQIAEoBxozChFGaWVsZEluZGV4",
            "ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIrMHChJH",
            "ZW5lcmljRmllbGRzUHJvdG8SRQoNZmllbGRfaW5kZXhlcxgBIAMoCzIuLnR1",
            "dG9yaWFsLkdlbmVyaWNGaWVsZHNQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIX",
            "Cg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJTGluZUNvbG9yGAMgASgNEhUK",
            "DUxpbmVEYXNoU3R5bGUYBCADKAISGwoTTGluZURhc2hTdHlsZU9mZnNldBgF",
            "IAEoAhIXCg9DZW50ZXJMaW5lV2lkdGgYBiABKAISFwoPQ2VudGVyTGluZUNv",
            "bG9yGAcgASgNEhsKE0NlbnRlckxpbmVEYXNoU3R5bGUYCCADKAISIQoZQ2Vu",
            "dGVyTGluZURhc2hTdHlsZU9mZnNldBgJIAEoAhIRCglMaW5lV2lkdGgYCiAB",
            "KAISGAoQTGluZU91dGxpbmVXaWR0aBgLIAEoAhIYChBMaW5lT3V0bGluZUNv",
            "bG9yGAwgASgNEhsKE0ZpbGxGb3JlZ3JvdW5kQ29sb3IYDSABKA0SGwoTRmls",
            "bEJhY2tncm91bmRDb2xvchgOIAEoDRIXCg9CdWZmZXJMaW5lQ29sb3IYDyAB",
            "KA0SGwoTQnVmZmVyTGluZURhc2hTdHlsZRgQIAMoAhIhChlCdWZmZXJMaW5l",
            "RGFzaFN0eWxlT2Zmc2V0GBEgASgCEhcKD0J1ZmZlckxpbmVXaWR0aBgSIAEo",
            "AhITCgtCdWZmZXJXaWR0aBgTIAEoAhIMCgRUZXh0GBQgASgJEhAKCEZvbnRO",
            "YW1lGBUgASgJEhAKCEZvbnRTaXplGBYgASgNEhsKE0ZvbnRGb3JlZ3JvdW5k",
            "Q29sb3IYFyABKA0SGwoTRm9udEJhY2tncm91bmRDb2xvchgYIAEoDRIXCg9O",
            "dW1iZXJPZlJhZGlhbHMYGSABKAUSEgoKU3ltYm9sVHlwZRgaIAEoCRISCgpT",
            "eW1ib2xDb2RlGBsgASgJEhMKC0dlbmVyaWNUeXBlGBwgASgJEhgKEFVuY2Vy",
            "dGFpbnR5QW5nbGUYHSABKAISDgoGTWFyZ2luGB4gASgCEhMKC01pbkZvbnRT",
            "aXplGB8gASgNEhcKD01pbkZvbnRNYXBTY2FsZRggIAEoDRIXCg9NYXhGb250",
            "TWFwU2NhbGUYISABKA0SFAoMR2VuZXJpY0VudW1zGCIgASgHGjMKEUZpZWxk",
            "SW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoCToCOAEi",
            "3QEKGVZlcnRpY2FsRGlzdGFuY2VEYXRhUHJvdG8STAoNZmllbGRfaW5kZXhl",
            "cxgBIAMoCzI1LnR1dG9yaWFsLlZlcnRpY2FsRGlzdGFuY2VEYXRhUHJvdG8u",
            "RmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhAK",
            "CFVuaXRUeXBlGAMgASgJEhIKCkRpbWVuc2lvbnMYBCABKAIaMwoRRmllbGRJ",
            "bmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASKx",
            "AgoSU3VyZmFjZVZvbHVtZVByb3RvEkUKDWZpZWxkX2luZGV4ZXMYASADKAsy",
            "Li50dXRvcmlhbC5TdXJmYWNlVm9sdW1lUHJvdG8uRmllbGRJbmRleGVzRW50",
            "cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEkIKFUxvd2VyVmVydGljYWxE",
            "aXN0YW5jZRgDIAEoCzIjLnR1dG9yaWFsLlZlcnRpY2FsRGlzdGFuY2VEYXRh",
            "UHJvdG8SQgoVVXBwZXJWZXJ0aWNhbERpc3RhbmNlGAQgASgLMiMudHV0b3Jp",
            "YWwuVmVydGljYWxEaXN0YW5jZURhdGFQcm90bxozChFGaWVsZEluZGV4ZXNF",
            "bnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIqoCCg5PcmJp",
            "dEFyZWFQcm90bxJBCg1maWVsZF9pbmRleGVzGAEgAygLMioudHV0b3JpYWwu",
            "T3JiaXRBcmVhUHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9p",
            "bmRleGVzGAIgAygNEisKCkZpcnN0UG9pbnQYAyABKAsyFy50dXRvcmlhbC5H",
            "ZW9Qb2ludFByb3RvEiwKC1NlY29uZFBvaW50GAQgASgLMhcudHV0b3JpYWwu",
            "R2VvUG9pbnRQcm90bxINCgVXaWR0aBgFIAEoAhIdChVPcmJpdEFyZWFBbGln",
            "bWVudENvZGUYBiABKA0aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEg",
            "ASgNEg0KBXZhbHVlGAIgASgJOgI4ASLSAgoYT3JiaXRBcmVhU2hpZnRlZElu",
            "dFByb3RvEksKDWZpZWxkX2luZGV4ZXMYASADKAsyNC50dXRvcmlhbC5PcmJp",
            "dEFyZWFTaGlmdGVkSW50UHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52",
            "YWxpZF9pbmRleGVzGAIgAygNEjUKCkZpcnN0UG9pbnQYAyABKAsyIS50dXRv",
            "cmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90bxI2CgtTZWNvbmRQb2ludBgE",
            "IAEoCzIhLnR1dG9yaWFsLkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvEg0KBVdp",
            "ZHRoGAUgASgCEh0KFU9yYml0QXJlYUFsaWdtZW50Q29kZRgGIAEoDRozChFG",
            "aWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6",
            "AjgBIqoCCgxGYW5BcmVhUHJvdG8SPwoNZmllbGRfaW5kZXhlcxgBIAMoCzIo",
            "LnR1dG9yaWFsLkZhbkFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9p",
            "bnZhbGlkX2luZGV4ZXMYAiADKA0SFAoMTWluaW11bVJhbmdlGAMgASgCEhQK",
            "DE1heGltdW1SYW5nZRgEIAEoAhIYChBPcmllbnRhdGlvbkFuZ2xlGAUgASgC",
            "EhcKD1NlY3RvclNpemVBbmdsZRgGIAEoAhIsCgtWZXJ0ZXhQb2ludBgHIAEo",
            "CzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8aMwoRRmllbGRJbmRleGVzRW50",
            "cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASLMAgoYRmFuQXJl",
            "YUFzU2hpZnRlZEludFByb3RvEksKDWZpZWxkX2luZGV4ZXMYASADKAsyNC50",
            "dXRvcmlhbC5GYW5BcmVhQXNTaGlmdGVkSW50UHJvdG8uRmllbGRJbmRleGVz",
            "RW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhQKDE1pbmltdW1SYW5n",
            "ZRgDIAEoAhIUCgxNYXhpbXVtUmFuZ2UYBCABKAISGAoQT3JpZW50YXRpb25B",
            "bmdsZRgFIAEoAhIXCg9TZWN0b3JTaXplQW5nbGUYBiABKAISNgoLVmVydGV4",
            "UG9pbnQYByABKAsyIS50dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90",
            "bxozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUY",
            "AiABKAk6AjgBIrYBChFDb3JyaWRvckFyZWFQcm90bxJECg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMi0udHV0b3JpYWwuQ29ycmlkb3JBcmVhUHJvdG8uRmllbGRJ",
            "bmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEg0KBVdpZHRo",
            "GAMgASgCGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2",
            "YWx1ZRgCIAEoCToCOAEiyAIKDEVsbGlwc2VQcm90bxI/Cg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMigudHV0b3JpYWwuRWxsaXBzZVByb3RvLkZpZWxkSW5kZXhl",
            "c0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIsCgtDZW50cmVQb2lu",
            "dBgDIAEoCzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8SPAobRmlyc3RDb25q",
            "dWdhdGVEaWFtZXRlclBvaW50GAQgASgLMhcudHV0b3JpYWwuR2VvUG9pbnRQ",
            "cm90bxI9ChxTZWNvbmRDb25qdWdhdGVEaWFtZXRlclBvaW50GAUgASgLMhcu",
            "dHV0b3JpYWwuR2VvUG9pbnRQcm90bxozChFGaWVsZEluZGV4ZXNFbnRyeRIL",
            "CgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIv4CChhFbGxpcHNlQXNT",
            "aGlmdGVkSW50UHJvdG8SSwoNZmllbGRfaW5kZXhlcxgBIAMoCzI0LnR1dG9y",
            "aWFsLkVsbGlwc2VBc1NoaWZ0ZWRJbnRQcm90by5GaWVsZEluZGV4ZXNFbnRy",
            "eRIXCg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SNgoLQ2VudHJlUG9pbnQYAyAB",
            "KAsyIS50dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90bxJGChtGaXJz",
            "dENvbmp1Z2F0ZURpYW1ldGVyUG9pbnQYBCABKAsyIS50dXRvcmlhbC5HZW9T",
            "aGlmdGVkSW50UG9pbnRQcm90bxJHChxTZWNvbmRDb25qdWdhdGVEaWFtZXRl",
            "clBvaW50GAUgASgLMiEudHV0b3JpYWwuR2VvU2hpZnRlZEludFBvaW50UHJv",
            "dG8aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVl",
            "GAIgASgJOgI4ASK+AQoKUG9pbnRQcm90bxI9Cg1maWVsZF9pbmRleGVzGAEg",
            "AygLMiYudHV0b3JpYWwuUG9pbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIX",
            "Cg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgBEhAK",
            "CGxhdGl0dWRlGAQgASgBGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEi0gEKFFBvaW50U2hpZnRlZEludFBy",
            "b3RvEkcKDWZpZWxkX2luZGV4ZXMYASADKAsyMC50dXRvcmlhbC5Qb2ludFNo",
            "aWZ0ZWRJbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2lu",
            "ZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgREhAKCGxhdGl0dWRlGAQg",
            "ASgRGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1",
            "ZRgCIAEoCToCOAEimwIKD1JhbmdlUmluZ3NQcm90bxJCCg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMisudHV0b3JpYWwuUmFuZ2VSaW5nc1Byb3RvLkZpZWxkSW5k",
            "ZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIsCgtWZXJ0ZXhQ",
            "b2ludBgDIAEoCzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8SGQoRUmFuZ2VC",
            "ZXR3ZWVuUmluZ3MYBCABKAISFAoMTWF4aW11bVJhbmdlGAUgASgCEhcKD051",
            "bWJlck9mUmFkaWFscxgGIAEoDRozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNr",
            "ZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIrkCChlSYW5nZVJpbmdzU2hp",
            "ZnRlZEludFByb3RvEkwKDWZpZWxkX2luZGV4ZXMYASADKAsyNS50dXRvcmlh",
            "bC5SYW5nZVJpbmdzU2hpZnRlZEludFByb3RvLkZpZWxkSW5kZXhlc0VudHJ5",
            "EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRI2CgtWZXJ0ZXhQb2ludBgDIAEo",
            "CzIhLnR1dG9yaWFsLkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvEhkKEVJhbmdl",
            "QmV0d2VlblJpbmdzGAQgASgCEhQKDE1heGltdW1SYW5nZRgFIAEoAhIXCg9O",
            "dW1iZXJPZlJhZGlhbHMYBiABKA0aMwoRRmllbGRJbmRleGVzRW50cnkSCwoD",
            "a2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASLaAQoQVm9sUG9seUFyZWFQ",
            "cm90bxJDCg1maWVsZF9pbmRleGVzGAEgAygLMiwudHV0b3JpYWwuVm9sUG9s",
            "eUFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2luZGV4",
            "ZXMYAiADKA0SMwoNU3VyZmFjZVZvbHVtZRgDIAEoCzIcLnR1dG9yaWFsLlN1",
            "cmZhY2VWb2x1bWVQcm90bxozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkY",
            "ASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIsoCChFWb2xPcmJpdEFyZWFQcm90",
            "bxJECg1maWVsZF9pbmRleGVzGAEgAygLMi0udHV0b3JpYWwuVm9sT3JiaXRB",
            "cmVhUHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVz",
            "GAIgAygNEjMKDVN1cmZhY2VWb2x1bWUYAyABKAsyHC50dXRvcmlhbC5TdXJm",
            "YWNlVm9sdW1lUHJvdG8SKwoJT3JiaXRBcmVhGAQgASgLMhgudHV0b3JpYWwu",
            "T3JiaXRBcmVhUHJvdG8SPwoTU2hpZnRlZEludE9yYml0QXJlYRgFIAEoCzIi",
            "LnR1dG9yaWFsLk9yYml0QXJlYVNoaWZ0ZWRJbnRQcm90bxozChFGaWVsZElu",
            "ZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIsAC",
            "Cg9Wb2xGYW5BcmVhUHJvdG8SQgoNZmllbGRfaW5kZXhlcxgBIAMoCzIrLnR1",
            "dG9yaWFsLlZvbEZhbkFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9p",
            "bnZhbGlkX2luZGV4ZXMYAiADKA0SMwoNU3VyZmFjZVZvbHVtZRgDIAEoCzIc",
            "LnR1dG9yaWFsLlN1cmZhY2VWb2x1bWVQcm90bxInCgdGYW5BcmVhGAQgASgL",
            "MhYudHV0b3JpYWwuRmFuQXJlYVByb3RvEj0KEVNoaWZ0ZWRJbnRGYW5BcmVh",
            "GAUgASgLMiIudHV0b3JpYWwuRmFuQXJlYUFzU2hpZnRlZEludFByb3RvGjMK",
            "EUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEo",
            "CToCOAEiwAIKD1ZvbEVsbGlwc2VQcm90bxJCCg1maWVsZF9pbmRleGVzGAEg",
            "AygLMisudHV0b3JpYWwuVm9sRWxsaXBzZVByb3RvLkZpZWxkSW5kZXhlc0Vu",
            "dHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIzCg1TdXJmYWNlVm9sdW1l",
            "GAMgASgLMhwudHV0b3JpYWwuU3VyZmFjZVZvbHVtZVByb3RvEicKB0VsbGlw",
            "c2UYBCABKAsyFi50dXRvcmlhbC5FbGxpcHNlUHJvdG8SPQoRU2hpZnRlZElu",
            "dEVsbGlwc2UYBSABKAsyIi50dXRvcmlhbC5FbGxpcHNlQXNTaGlmdGVkSW50",
            "UHJvdG8aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZh",
            "bHVlGAIgASgJOgI4ASKVAgoUVm9sQ29ycmlkb3JBcmVhUHJvdG8SRwoNZmll",
            "bGRfaW5kZXhlcxgBIAMoCzIwLnR1dG9yaWFsLlZvbENvcnJpZG9yQXJlYVBy",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIzCg1TdXJmYWNlVm9sdW1lGAMgASgLMhwudHV0b3JpYWwuU3VyZmFjZVZv",
            "bHVtZVByb3RvEjEKDENvcnJpZG9yQXJlYRgEIAEoCzIbLnR1dG9yaWFsLkNv",
            "cnJpZG9yQXJlYVByb3RvGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEiCwoJTGluZVByb3RvIhIKEFBvbHln",
            "b25BcmVhUHJvdG8iqQwKFVNpbXBsZURyYXdPYmplY3RQcm90bxJICg1maWVs",
            "ZF9pbmRleGVzGAEgAygLMjEudHV0b3JpYWwuU2ltcGxlRHJhd09iamVjdFBy",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIKCgJJZBgDIAEoCRIuCgtkYXRhX2ZpZWxkcxgEIAEoCzIZLnR1dG9yaWFs",
            "LkRhdGFGaWVsZHNQcm90bxI7ChJUYWN0aWNhbERhdGFGaWVsZHMYBSABKAsy",
            "HS50dXRvcmlhbC5UYWN0aWNhbEZpZWxkc1Byb3RvSAASOQoRR2VuZXJpY0Rh",
            "dGFGaWVsZHMYBiABKAsyHC50dXRvcmlhbC5HZW5lcmljRmllbGRzUHJvdG9I",
            "ABIZChFCb29sZWFuQXR0cmlidXRlcxgHIAEoDRIzCglHZW9Qb2ludHMYCCAB",
            "KAsyHi50dXRvcmlhbC5HZW9Eb3VibGVQb2ludHNQcm90b0gBEkEKE0dlb1No",
            "aWZ0ZWRJbnRQb2ludHMYCSABKAsyIi50dXRvcmlhbC5HZW9TaGlmdGVkSW50",
            "UG9pbnRzUHJvdG9IARIzCgxDb3JyaWRvckFyZWEYCiABKAsyGy50dXRvcmlh",
            "bC5Db3JyaWRvckFyZWFQcm90b0gCEikKB0ZhbkFyZWEYCyABKAsyFi50dXRv",
            "cmlhbC5GYW5BcmVhUHJvdG9IAhIpCgdFbGxpcHNlGAwgASgLMhYudHV0b3Jp",
            "YWwuRWxsaXBzZVByb3RvSAISMQoLVm9sUG9seUFyZWEYDSABKAsyGi50dXRv",
            "cmlhbC5Wb2xQb2x5QXJlYVByb3RvSAISMwoMVm9sT3JiaXRBcmVhGA4gASgL",
            "MhsudHV0b3JpYWwuVm9sT3JiaXRBcmVhUHJvdG9IAhIvCgpWb2xGYW5BcmVh",
            "GA8gASgLMhkudHV0b3JpYWwuVm9sRmFuQXJlYVByb3RvSAISLwoKVm9sRWxs",
            "aXBzZRgQIAEoCzIZLnR1dG9yaWFsLlZvbEVsbGlwc2VQcm90b0gCEjkKD1Zv",
            "bENvcnJpZG9yQXJlYRgRIAEoCzIeLnR1dG9yaWFsLlZvbENvcnJpZG9yQXJl",
            "YVByb3RvSAISLQoJT3JiaXRBcmVhGBIgASgLMhgudHV0b3JpYWwuT3JiaXRB",
            "cmVhUHJvdG9IAhIlCgVQb2ludBgTIAEoCzIULnR1dG9yaWFsLlBvaW50UHJv",
            "dG9IAhIvCgpSYW5nZVJpbmdzGBQgASgLMhkudHV0b3JpYWwuUmFuZ2VSaW5n",
            "c1Byb3RvSAISIwoETGluZRgVIAEoCzITLnR1dG9yaWFsLkxpbmVQcm90b0gC",
            "EjEKC1BvbHlnb25BcmVhGBYgASgLMhoudHV0b3JpYWwuUG9seWdvbkFyZWFQ",
            "cm90b0gCEjkKD1NoaWZ0ZWRJbnRQb2ludBgXIAEoCzIeLnR1dG9yaWFsLlBv",
            "aW50U2hpZnRlZEludFByb3RvSAISQQoTU2hpZnRlZEludE9yYml0QXJlYRgY",
            "IAEoCzIiLnR1dG9yaWFsLk9yYml0QXJlYVNoaWZ0ZWRJbnRQcm90b0gCEj8K",
            "EVNoaWZ0ZWRJbnRFbGxpcHNlGBkgASgLMiIudHV0b3JpYWwuRWxsaXBzZUFz",
            "U2hpZnRlZEludFByb3RvSAISPwoRU2hpZnRlZEludEZhbkFyZWEYGiABKAsy",
            "Ii50dXRvcmlhbC5GYW5BcmVhQXNTaGlmdGVkSW50UHJvdG9IAhJDChRTaGlm",
            "dGVkSW50UmFuZ2VSaW5ncxgbIAEoCzIjLnR1dG9yaWFsLlJhbmdlUmluZ3NT",
            "aGlmdGVkSW50UHJvdG9IAhI/ChZjb21wb3NpdGVfZHJhd19vYmplY3RzGBwg",
            "AygLMh8udHV0b3JpYWwuU2ltcGxlRHJhd09iamVjdFByb3RvGjMKEUZpZWxk",
            "SW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoCToCOAFC",
            "EwoRdHlwZV9maWVsZHNvYmplY3RCDwoNdHlwZV9nZW9wb2ludEIWChR0eXBl",
            "X2ltcGxlbWVudGF0aW9ucyJkChZTaW1wbGVEcmF3T2JqZWN0c1Byb3RvEjQK",
            "C2RyYXdvYmplY3RzGAEgAygLMh8udHV0b3JpYWwuU2ltcGxlRHJhd09iamVj",
            "dFByb3RvEhQKDGRhdGFfdmVyc2lvbhgCIAEoDSLuAQoPRHJhd09iamVjdFBy",
            "b3RvEjkKEHNpbXBsZWRyYXdvYmplY3QYASABKAsyHy50dXRvcmlhbC5TaW1w",
            "bGVEcmF3T2JqZWN0UHJvdG8SEQoJYzI1MjVDb2RlGAIgASgJEhcKD1VzZURl",
            "ZmF1bHRFbnVtcxgDIAEoDRIkChxVc2VEZWZhdWx0VmFsdWVzSW5EYXRhRmll",
            "bGRzGAQgASgNEigKIFVzZURlZmF1bHRWYWx1ZXNJbkV4dGVuZGVkRmllbGRz",
            "GAUgASgNEiQKHFVzZURlZmF1bHRWYWx1ZXNJblR5cGVGaWVsZHMYBiABKA0i",
            "WAoQRHJhd09iamVjdHNQcm90bxIuCgtkcmF3b2JqZWN0cxgBIAMoCzIZLnR1",
            "dG9yaWFsLkRyYXdPYmplY3RQcm90bxIUCgxkYXRhX3ZlcnNpb24YAiABKA1C",
            "WwogdHBnLmRyYXdvYmplY3RzLnNlcmlhbGl6ZS5wcm90b2NCFE1hcmlhRHJh",
            "d09iamVjdFByb3RvqgIgVFBHLkRyYXdPYmplY3RzLlNlcmlhbGl6ZS5Qcm90",
            "b2NiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto), global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude", "Text", "Altitude", "PointInformation" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto), global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude", "Text", "Altitude", "PointInformation" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointInformation), global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser, new[]{ "Info" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto), global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto.Parser, new[]{ "Longitude", "Latitude", "Text", "Altitude", "Information" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto), global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto.Parser, new[]{ "Longitude", "Latitude", "Text", "Altitude", "Information" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Name", "HierarchyCode", "DrawDepth", "RotationAngle", "Version", "AlphaFactor", "MovementIndicatorColor", "OffsetLocationIndicatorColor", "LabelFontName", "LabelFontSize", "LabelFontForegroundColor", "MinDynamicScale", "MaxDynamicScale", "ExtraFields", "TacticalExtraFields" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinefieldOpacity", "SymbolIndicator", "AdditionalInformation", "UniqueDesignation", "DateTimeGroup", "OffsetLocationDisplacementX", "OffsetLocationDisplacementY", "Quantity", "NuclearWeaponType", "DirectionOfMovement", "AltitudeDepth", "Distance", "Azimuth", "TacticalEnums" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "LineColor", "LineDashStyle", "LineDashStyleOffset", "CenterLineWidth", "CenterLineColor", "CenterLineDashStyle", "CenterLineDashStyleOffset", "LineWidth", "LineOutlineWidth", "LineOutlineColor", "FillForegroundColor", "FillBackgroundColor", "BufferLineColor", "BufferLineDashStyle", "BufferLineDashStyleOffset", "BufferLineWidth", "BufferWidth", "Text", "FontName", "FontSize", "FontForegroundColor", "FontBackgroundColor", "NumberOfRadials", "SymbolType", "SymbolCode", "GenericType", "UncertaintyAngle", "Margin", "MinFontSize", "MinFontMapScale", "MaxFontMapScale", "GenericEnums" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto), global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "UnitType", "Dimensions" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto), global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "LowerVerticalDistance", "UpperVerticalDistance" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto), global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "FirstPoint", "SecondPoint", "Width", "OrbitAreaAligmentCode" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "FirstPoint", "SecondPoint", "Width", "OrbitAreaAligmentCode" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto), global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinimumRange", "MaximumRange", "OrientationAngle", "SectorSizeAngle", "VertexPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinimumRange", "MaximumRange", "OrientationAngle", "SectorSizeAngle", "VertexPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto), global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Width" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.EllipseProto), global::TPG.DrawObjects.Serialize.Protoc.EllipseProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "CentrePoint", "FirstConjugateDiameterPoint", "SecondConjugateDiameterPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "CentrePoint", "FirstConjugateDiameterPoint", "SecondConjugateDiameterPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointProto), global::TPG.DrawObjects.Serialize.Protoc.PointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto), global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "VertexPoint", "RangeBetweenRings", "MaximumRange", "NumberOfRadials" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "VertexPoint", "RangeBetweenRings", "MaximumRange", "NumberOfRadials" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "OrbitArea", "ShiftedIntOrbitArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "FanArea", "ShiftedIntFanArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto), global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "Ellipse", "ShiftedIntEllipse" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "CorridorArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.LineProto), global::TPG.DrawObjects.Serialize.Protoc.LineProto.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto), global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto), global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Id", "DataFields", "TacticalDataFields", "GenericDataFields", "BooleanAttributes", "GeoPoints", "GeoShiftedIntPoints", "CorridorArea", "FanArea", "Ellipse", "VolPolyArea", "VolOrbitArea", "VolFanArea", "VolEllipse", "VolCorridorArea", "OrbitArea", "Point", "RangeRings", "Line", "PolygonArea", "ShiftedIntPoint", "ShiftedIntOrbitArea", "ShiftedIntEllipse", "ShiftedIntFanArea", "ShiftedIntRangeRings", "CompositeDrawObjects" }, new[]{ "TypeFieldsobject", "TypeGeopoint", "TypeImplementations" }, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectsProto), global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectsProto.Parser, new[]{ "Drawobjects", "DataVersion" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto), global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto.Parser, new[]{ "Simpledrawobject", "C2525Code", "UseDefaultEnums", "UseDefaultValuesInDataFields", "UseDefaultValuesInExtendedFields", "UseDefaultValuesInTypeFields" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DrawObjectsProto), global::TPG.DrawObjects.Serialize.Protoc.DrawObjectsProto.Parser, new[]{ "Drawobjects", "DataVersion" }, null, null, null)
          }));
    }
    #endregion
  }
  #region Messages
  public sealed partial class GeoPointProto : pb::IMessage<GeoPointProto> {
    private static readonly pb::MessageParser<GeoPointProto> _parser = new pb::MessageParser<GeoPointProto>(() => new GeoPointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoPointProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[0]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto(GeoPointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
      text_ = other.text_;
      altitude_ = other.altitude_;
      pointInformation_ = other.pointInformation_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto Clone() {
      return new GeoPointProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private double longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private double latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }
    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 5;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 6;
    private double altitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Altitude {
      get { return altitude_; }
      set {
        altitude_ = value;
      }
    }
    /// <summary>Field number for the "pointInformation" field.</summary>
    public const int PointInformationFieldNumber = 7;
    private static readonly pbc::MapField<string, string>.Codec _map_pointInformation_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 58);
    private readonly pbc::MapField<string, string> pointInformation_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> PointInformation {
      get { return pointInformation_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoPointProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoPointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      if (Text != other.Text) return false;
      if (Altitude != other.Altitude) return false;
      if (!PointInformation.Equals(other.PointInformation)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (Altitude != 0D) hash ^= Altitude.GetHashCode();
      hash ^= PointInformation.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        output.WriteRawTag(25);
        output.WriteDouble(Longitude);
      }
      if (Latitude != 0D) {
        output.WriteRawTag(33);
        output.WriteDouble(Latitude);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Text);
      }
      if (Altitude != 0D) {
        output.WriteRawTag(49);
        output.WriteDouble(Altitude);
      }
      pointInformation_.WriteTo(output, _map_pointInformation_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        size += 1 + 8;
      }
      if (Latitude != 0D) {
        size += 1 + 8;
      }
      if (Text.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (Altitude != 0D) {
        size += 1 + 8;
      }
      size += pointInformation_.CalculateSize(_map_pointInformation_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoPointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0D) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0D) {
        Latitude = other.Latitude;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.Altitude != 0D) {
        Altitude = other.Altitude;
      }
      pointInformation_.Add(other.pointInformation_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 25: {
            Longitude = input.ReadDouble();
            break;
          }
          case 33: {
            Latitude = input.ReadDouble();
            break;
          }
          case 42: {
            Text = input.ReadString();
            break;
          }
          case 49: {
            Altitude = input.ReadDouble();
            break;
          }
          case 58: {
            pointInformation_.AddEntriesFrom(input, _map_pointInformation_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class GeoShiftedIntPointProto : pb::IMessage<GeoShiftedIntPointProto> {
    private static readonly pb::MessageParser<GeoShiftedIntPointProto> _parser = new pb::MessageParser<GeoShiftedIntPointProto>(() => new GeoShiftedIntPointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoShiftedIntPointProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[1]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto(GeoShiftedIntPointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
      text_ = other.text_;
      altitude_ = other.altitude_;
      pointInformation_ = other.pointInformation_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto Clone() {
      return new GeoShiftedIntPointProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private int longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private int latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }
    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 5;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 6;
    private double altitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Altitude {
      get { return altitude_; }
      set {
        altitude_ = value;
      }
    }
    /// <summary>Field number for the "pointInformation" field.</summary>
    public const int PointInformationFieldNumber = 7;
    private static readonly pbc::MapField<string, string>.Codec _map_pointInformation_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 58);
    private readonly pbc::MapField<string, string> pointInformation_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> PointInformation {
      get { return pointInformation_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoShiftedIntPointProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoShiftedIntPointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      if (Text != other.Text) return false;
      if (Altitude != other.Altitude) return false;
      if (!PointInformation.Equals(other.PointInformation)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0) hash ^= Longitude.GetHashCode();
      if (Latitude != 0) hash ^= Latitude.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (Altitude != 0D) hash ^= Altitude.GetHashCode();
      hash ^= PointInformation.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        output.WriteRawTag(24);
        output.WriteSInt32(Longitude);
      }
      if (Latitude != 0) {
        output.WriteRawTag(32);
        output.WriteSInt32(Latitude);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Text);
      }
      if (Altitude != 0D) {
        output.WriteRawTag(49);
        output.WriteDouble(Altitude);
      }
      pointInformation_.WriteTo(output, _map_pointInformation_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Longitude);
      }
      if (Latitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Latitude);
      }
      if (Text.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (Altitude != 0D) {
        size += 1 + 8;
      }
      size += pointInformation_.CalculateSize(_map_pointInformation_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoShiftedIntPointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0) {
        Latitude = other.Latitude;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.Altitude != 0D) {
        Altitude = other.Altitude;
      }
      pointInformation_.Add(other.pointInformation_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            Longitude = input.ReadSInt32();
            break;
          }
          case 32: {
            Latitude = input.ReadSInt32();
            break;
          }
          case 42: {
            Text = input.ReadString();
            break;
          }
          case 49: {
            Altitude = input.ReadDouble();
            break;
          }
          case 58: {
            pointInformation_.AddEntriesFrom(input, _map_pointInformation_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class PointInformation : pb::IMessage<PointInformation> {
    private static readonly pb::MessageParser<PointInformation> _parser = new pb::MessageParser<PointInformation>(() => new PointInformation());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointInformation> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[2]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation(PointInformation other) : this() {
      info_ = other.info_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation Clone() {
      return new PointInformation(this);
    }
    /// <summary>Field number for the "info" field.</summary>
    public const int InfoFieldNumber = 1;
    private static readonly pbc::MapField<string, string>.Codec _map_info_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<string, string> info_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> Info {
      get { return info_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointInformation);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointInformation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!Info.Equals(other.Info)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= Info.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      info_.WriteTo(output, _map_info_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += info_.CalculateSize(_map_info_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointInformation other) {
      if (other == null) {
        return;
      }
      info_.Add(other.info_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            info_.AddEntriesFrom(input, _map_info_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class GeoDoublePointsProto : pb::IMessage<GeoDoublePointsProto> {
    private static readonly pb::MessageParser<GeoDoublePointsProto> _parser = new pb::MessageParser<GeoDoublePointsProto>(() => new GeoDoublePointsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoDoublePointsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[3]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto(GeoDoublePointsProto other) : this() {
      longitude_ = other.longitude_.Clone();
      latitude_ = other.latitude_.Clone();
      text_ = other.text_.Clone();
      altitude_ = other.altitude_.Clone();
      information_ = other.information_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto Clone() {
      return new GeoDoublePointsProto(this);
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 1;
    private static readonly pb::FieldCodec<double> _repeated_longitude_codec
        = pb::FieldCodec.ForDouble(10);
    private readonly pbc::RepeatedField<double> longitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Longitude {
      get { return longitude_; }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 2;
    private static readonly pb::FieldCodec<double> _repeated_latitude_codec
        = pb::FieldCodec.ForDouble(18);
    private readonly pbc::RepeatedField<double> latitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Latitude {
      get { return latitude_; }
    }
    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_text_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> text_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Text {
      get { return text_; }
    }
    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 4;
    private static readonly pb::FieldCodec<double> _repeated_altitude_codec
        = pb::FieldCodec.ForDouble(34);
    private readonly pbc::RepeatedField<double> altitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Altitude {
      get { return altitude_; }
    }
    /// <summary>Field number for the "information" field.</summary>
    public const int InformationFieldNumber = 5;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> _repeated_information_codec
        = pb::FieldCodec.ForMessage(42, global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> information_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> Information {
      get { return information_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoDoublePointsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoDoublePointsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!longitude_.Equals(other.longitude_)) return false;
      if(!latitude_.Equals(other.latitude_)) return false;
      if(!text_.Equals(other.text_)) return false;
      if(!altitude_.Equals(other.altitude_)) return false;
      if(!information_.Equals(other.information_)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= longitude_.GetHashCode();
      hash ^= latitude_.GetHashCode();
      hash ^= text_.GetHashCode();
      hash ^= altitude_.GetHashCode();
      hash ^= information_.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      longitude_.WriteTo(output, _repeated_longitude_codec);
      latitude_.WriteTo(output, _repeated_latitude_codec);
      text_.WriteTo(output, _repeated_text_codec);
      altitude_.WriteTo(output, _repeated_altitude_codec);
      information_.WriteTo(output, _repeated_information_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += longitude_.CalculateSize(_repeated_longitude_codec);
      size += latitude_.CalculateSize(_repeated_latitude_codec);
      size += text_.CalculateSize(_repeated_text_codec);
      size += altitude_.CalculateSize(_repeated_altitude_codec);
      size += information_.CalculateSize(_repeated_information_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoDoublePointsProto other) {
      if (other == null) {
        return;
      }
      longitude_.Add(other.longitude_);
      latitude_.Add(other.latitude_);
      text_.Add(other.text_);
      altitude_.Add(other.altitude_);
      information_.Add(other.information_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10:
          case 9: {
            longitude_.AddEntriesFrom(input, _repeated_longitude_codec);
            break;
          }
          case 18:
          case 17: {
            latitude_.AddEntriesFrom(input, _repeated_latitude_codec);
            break;
          }
          case 26: {
            text_.AddEntriesFrom(input, _repeated_text_codec);
            break;
          }
          case 34:
          case 33: {
            altitude_.AddEntriesFrom(input, _repeated_altitude_codec);
            break;
          }
          case 42: {
            information_.AddEntriesFrom(input, _repeated_information_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class GeoShiftedIntPointsProto : pb::IMessage<GeoShiftedIntPointsProto> {
    private static readonly pb::MessageParser<GeoShiftedIntPointsProto> _parser = new pb::MessageParser<GeoShiftedIntPointsProto>(() => new GeoShiftedIntPointsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoShiftedIntPointsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[4]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto(GeoShiftedIntPointsProto other) : this() {
      longitude_ = other.longitude_.Clone();
      latitude_ = other.latitude_.Clone();
      text_ = other.text_.Clone();
      altitude_ = other.altitude_.Clone();
      information_ = other.information_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto Clone() {
      return new GeoShiftedIntPointsProto(this);
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 1;
    private static readonly pb::FieldCodec<int> _repeated_longitude_codec
        = pb::FieldCodec.ForSInt32(10);
    private readonly pbc::RepeatedField<int> longitude_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Longitude {
      get { return longitude_; }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_latitude_codec
        = pb::FieldCodec.ForSInt32(18);
    private readonly pbc::RepeatedField<int> latitude_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Latitude {
      get { return latitude_; }
    }
    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_text_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> text_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Text {
      get { return text_; }
    }
    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 4;
    private static readonly pb::FieldCodec<double> _repeated_altitude_codec
        = pb::FieldCodec.ForDouble(34);
    private readonly pbc::RepeatedField<double> altitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Altitude {
      get { return altitude_; }
    }
    /// <summary>Field number for the "information" field.</summary>
    public const int InformationFieldNumber = 5;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> _repeated_information_codec
        = pb::FieldCodec.ForMessage(42, global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> information_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> Information {
      get { return information_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoShiftedIntPointsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoShiftedIntPointsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!longitude_.Equals(other.longitude_)) return false;
      if(!latitude_.Equals(other.latitude_)) return false;
      if(!text_.Equals(other.text_)) return false;
      if(!altitude_.Equals(other.altitude_)) return false;
      if(!information_.Equals(other.information_)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= longitude_.GetHashCode();
      hash ^= latitude_.GetHashCode();
      hash ^= text_.GetHashCode();
      hash ^= altitude_.GetHashCode();
      hash ^= information_.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      longitude_.WriteTo(output, _repeated_longitude_codec);
      latitude_.WriteTo(output, _repeated_latitude_codec);
      text_.WriteTo(output, _repeated_text_codec);
      altitude_.WriteTo(output, _repeated_altitude_codec);
      information_.WriteTo(output, _repeated_information_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += longitude_.CalculateSize(_repeated_longitude_codec);
      size += latitude_.CalculateSize(_repeated_latitude_codec);
      size += text_.CalculateSize(_repeated_text_codec);
      size += altitude_.CalculateSize(_repeated_altitude_codec);
      size += information_.CalculateSize(_repeated_information_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoShiftedIntPointsProto other) {
      if (other == null) {
        return;
      }
      longitude_.Add(other.longitude_);
      latitude_.Add(other.latitude_);
      text_.Add(other.text_);
      altitude_.Add(other.altitude_);
      information_.Add(other.information_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10:
          case 8: {
            longitude_.AddEntriesFrom(input, _repeated_longitude_codec);
            break;
          }
          case 18:
          case 16: {
            latitude_.AddEntriesFrom(input, _repeated_latitude_codec);
            break;
          }
          case 26: {
            text_.AddEntriesFrom(input, _repeated_text_codec);
            break;
          }
          case 34:
          case 33: {
            altitude_.AddEntriesFrom(input, _repeated_altitude_codec);
            break;
          }
          case 42: {
            information_.AddEntriesFrom(input, _repeated_information_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class DataFieldsProto : pb::IMessage<DataFieldsProto> {
    private static readonly pb::MessageParser<DataFieldsProto> _parser = new pb::MessageParser<DataFieldsProto>(() => new DataFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DataFieldsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[5]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto(DataFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      name_ = other.name_;
      hierarchyCode_ = other.hierarchyCode_;
      drawDepth_ = other.drawDepth_;
      rotationAngle_ = other.rotationAngle_;
      version_ = other.version_;
      alphaFactor_ = other.alphaFactor_;
      movementIndicatorColor_ = other.movementIndicatorColor_;
      offsetLocationIndicatorColor_ = other.offsetLocationIndicatorColor_;
      labelFontName_ = other.labelFontName_;
      labelFontSize_ = other.labelFontSize_;
      labelFontForegroundColor_ = other.labelFontForegroundColor_;
      minDynamicScale_ = other.minDynamicScale_;
      maxDynamicScale_ = other.maxDynamicScale_;
      extraFields_ = other.extraFields_.Clone();
      tacticalExtraFields_ = other.tacticalExtraFields_.Clone();
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto Clone() {
      return new DataFieldsProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///field_version_info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    /// <summary>
    ///field_invalid_indices
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 3;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "HierarchyCode" field.</summary>
    public const int HierarchyCodeFieldNumber = 4;
    private string hierarchyCode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string HierarchyCode {
      get { return hierarchyCode_; }
      set {
        hierarchyCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "DrawDepth" field.</summary>
    public const int DrawDepthFieldNumber = 5;
    private int drawDepth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int DrawDepth {
      get { return drawDepth_; }
      set {
        drawDepth_ = value;
      }
    }
    /// <summary>Field number for the "RotationAngle" field.</summary>
    public const int RotationAngleFieldNumber = 6;
    private float rotationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RotationAngle {
      get { return rotationAngle_; }
      set {
        rotationAngle_ = value;
      }
    }
    /// <summary>Field number for the "Version" field.</summary>
    public const int VersionFieldNumber = 7;
    private uint version_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }
    /// <summary>Field number for the "AlphaFactor" field.</summary>
    public const int AlphaFactorFieldNumber = 8;
    private float alphaFactor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float AlphaFactor {
      get { return alphaFactor_; }
      set {
        alphaFactor_ = value;
      }
    }
    /// <summary>Field number for the "MovementIndicatorColor" field.</summary>
    public const int MovementIndicatorColorFieldNumber = 9;
    private uint movementIndicatorColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MovementIndicatorColor {
      get { return movementIndicatorColor_; }
      set {
        movementIndicatorColor_ = value;
      }
    }
    /// <summary>Field number for the "OffsetLocationIndicatorColor" field.</summary>
    public const int OffsetLocationIndicatorColorFieldNumber = 10;
    private uint offsetLocationIndicatorColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OffsetLocationIndicatorColor {
      get { return offsetLocationIndicatorColor_; }
      set {
        offsetLocationIndicatorColor_ = value;
      }
    }
    /// <summary>Field number for the "LabelFontName" field.</summary>
    public const int LabelFontNameFieldNumber = 11;
    private string labelFontName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string LabelFontName {
      get { return labelFontName_; }
      set {
        labelFontName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "LabelFontSize" field.</summary>
    public const int LabelFontSizeFieldNumber = 12;
    private uint labelFontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LabelFontSize {
      get { return labelFontSize_; }
      set {
        labelFontSize_ = value;
      }
    }
    /// <summary>Field number for the "LabelFontForegroundColor" field.</summary>
    public const int LabelFontForegroundColorFieldNumber = 13;
    private uint labelFontForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LabelFontForegroundColor {
      get { return labelFontForegroundColor_; }
      set {
        labelFontForegroundColor_ = value;
      }
    }
    /// <summary>Field number for the "MinDynamicScale" field.</summary>
    public const int MinDynamicScaleFieldNumber = 14;
    private float minDynamicScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinDynamicScale {
      get { return minDynamicScale_; }
      set {
        minDynamicScale_ = value;
      }
    }
    /// <summary>Field number for the "MaxDynamicScale" field.</summary>
    public const int MaxDynamicScaleFieldNumber = 15;
    private float maxDynamicScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaxDynamicScale {
      get { return maxDynamicScale_; }
      set {
        maxDynamicScale_ = value;
      }
    }
    /// <summary>Field number for the "ExtraFields" field.</summary>
    public const int ExtraFieldsFieldNumber = 16;
    private static readonly pbc::MapField<string, string>.Codec _map_extraFields_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 130);
    private readonly pbc::MapField<string, string> extraFields_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> ExtraFields {
      get { return extraFields_; }
    }
    /// <summary>Field number for the "TacticalExtraFields" field.</summary>
    public const int TacticalExtraFieldsFieldNumber = 17;
    private static readonly pbc::MapField<string, string>.Codec _map_tacticalExtraFields_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 138);
    private readonly pbc::MapField<string, string> tacticalExtraFields_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> TacticalExtraFields {
      get { return tacticalExtraFields_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DataFieldsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DataFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Name != other.Name) return false;
      if (HierarchyCode != other.HierarchyCode) return false;
      if (DrawDepth != other.DrawDepth) return false;
      if (RotationAngle != other.RotationAngle) return false;
      if (Version != other.Version) return false;
      if (AlphaFactor != other.AlphaFactor) return false;
      if (MovementIndicatorColor != other.MovementIndicatorColor) return false;
      if (OffsetLocationIndicatorColor != other.OffsetLocationIndicatorColor) return false;
      if (LabelFontName != other.LabelFontName) return false;
      if (LabelFontSize != other.LabelFontSize) return false;
      if (LabelFontForegroundColor != other.LabelFontForegroundColor) return false;
      if (MinDynamicScale != other.MinDynamicScale) return false;
      if (MaxDynamicScale != other.MaxDynamicScale) return false;
      if (!ExtraFields.Equals(other.ExtraFields)) return false;
      if (!TacticalExtraFields.Equals(other.TacticalExtraFields)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (HierarchyCode.Length != 0) hash ^= HierarchyCode.GetHashCode();
      if (DrawDepth != 0) hash ^= DrawDepth.GetHashCode();
      if (RotationAngle != 0F) hash ^= RotationAngle.GetHashCode();
      if (Version != 0) hash ^= Version.GetHashCode();
      if (AlphaFactor != 0F) hash ^= AlphaFactor.GetHashCode();
      if (MovementIndicatorColor != 0) hash ^= MovementIndicatorColor.GetHashCode();
      if (OffsetLocationIndicatorColor != 0) hash ^= OffsetLocationIndicatorColor.GetHashCode();
      if (LabelFontName.Length != 0) hash ^= LabelFontName.GetHashCode();
      if (LabelFontSize != 0) hash ^= LabelFontSize.GetHashCode();
      if (LabelFontForegroundColor != 0) hash ^= LabelFontForegroundColor.GetHashCode();
      if (MinDynamicScale != 0F) hash ^= MinDynamicScale.GetHashCode();
      if (MaxDynamicScale != 0F) hash ^= MaxDynamicScale.GetHashCode();
      hash ^= ExtraFields.GetHashCode();
      hash ^= TacticalExtraFields.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      if (HierarchyCode.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(HierarchyCode);
      }
      if (DrawDepth != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(DrawDepth);
      }
      if (RotationAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(RotationAngle);
      }
      if (Version != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(Version);
      }
      if (AlphaFactor != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(AlphaFactor);
      }
      if (MovementIndicatorColor != 0) {
        output.WriteRawTag(72);
        output.WriteUInt32(MovementIndicatorColor);
      }
      if (OffsetLocationIndicatorColor != 0) {
        output.WriteRawTag(80);
        output.WriteUInt32(OffsetLocationIndicatorColor);
      }
      if (LabelFontName.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(LabelFontName);
      }
      if (LabelFontSize != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(LabelFontSize);
      }
      if (LabelFontForegroundColor != 0) {
        output.WriteRawTag(104);
        output.WriteUInt32(LabelFontForegroundColor);
      }
      if (MinDynamicScale != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(MinDynamicScale);
      }
      if (MaxDynamicScale != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(MaxDynamicScale);
      }
      extraFields_.WriteTo(output, _map_extraFields_codec);
      tacticalExtraFields_.WriteTo(output, _map_tacticalExtraFields_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HierarchyCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(HierarchyCode);
      }
      if (DrawDepth != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DrawDepth);
      }
      if (RotationAngle != 0F) {
        size += 1 + 4;
      }
      if (Version != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Version);
      }
      if (AlphaFactor != 0F) {
        size += 1 + 4;
      }
      if (MovementIndicatorColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MovementIndicatorColor);
      }
      if (OffsetLocationIndicatorColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OffsetLocationIndicatorColor);
      }
      if (LabelFontName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LabelFontName);
      }
      if (LabelFontSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LabelFontSize);
      }
      if (LabelFontForegroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LabelFontForegroundColor);
      }
      if (MinDynamicScale != 0F) {
        size += 1 + 4;
      }
      if (MaxDynamicScale != 0F) {
        size += 1 + 4;
      }
      size += extraFields_.CalculateSize(_map_extraFields_codec);
      size += tacticalExtraFields_.CalculateSize(_map_tacticalExtraFields_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DataFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.HierarchyCode.Length != 0) {
        HierarchyCode = other.HierarchyCode;
      }
      if (other.DrawDepth != 0) {
        DrawDepth = other.DrawDepth;
      }
      if (other.RotationAngle != 0F) {
        RotationAngle = other.RotationAngle;
      }
      if (other.Version != 0) {
        Version = other.Version;
      }
      if (other.AlphaFactor != 0F) {
        AlphaFactor = other.AlphaFactor;
      }
      if (other.MovementIndicatorColor != 0) {
        MovementIndicatorColor = other.MovementIndicatorColor;
      }
      if (other.OffsetLocationIndicatorColor != 0) {
        OffsetLocationIndicatorColor = other.OffsetLocationIndicatorColor;
      }
      if (other.LabelFontName.Length != 0) {
        LabelFontName = other.LabelFontName;
      }
      if (other.LabelFontSize != 0) {
        LabelFontSize = other.LabelFontSize;
      }
      if (other.LabelFontForegroundColor != 0) {
        LabelFontForegroundColor = other.LabelFontForegroundColor;
      }
      if (other.MinDynamicScale != 0F) {
        MinDynamicScale = other.MinDynamicScale;
      }
      if (other.MaxDynamicScale != 0F) {
        MaxDynamicScale = other.MaxDynamicScale;
      }
      extraFields_.Add(other.extraFields_);
      tacticalExtraFields_.Add(other.tacticalExtraFields_);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
          case 34: {
            HierarchyCode = input.ReadString();
            break;
          }
          case 40: {
            DrawDepth = input.ReadInt32();
            break;
          }
          case 53: {
            RotationAngle = input.ReadFloat();
            break;
          }
          case 56: {
            Version = input.ReadUInt32();
            break;
          }
          case 69: {
            AlphaFactor = input.ReadFloat();
            break;
          }
          case 72: {
            MovementIndicatorColor = input.ReadUInt32();
            break;
          }
          case 80: {
            OffsetLocationIndicatorColor = input.ReadUInt32();
            break;
          }
          case 90: {
            LabelFontName = input.ReadString();
            break;
          }
          case 96: {
            LabelFontSize = input.ReadUInt32();
            break;
          }
          case 104: {
            LabelFontForegroundColor = input.ReadUInt32();
            break;
          }
          case 117: {
            MinDynamicScale = input.ReadFloat();
            break;
          }
          case 125: {
            MaxDynamicScale = input.ReadFloat();
            break;
          }
          case 130: {
            extraFields_.AddEntriesFrom(input, _map_extraFields_codec);
            break;
          }
          case 138: {
            tacticalExtraFields_.AddEntriesFrom(input, _map_tacticalExtraFields_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class TacticalFieldsProto : pb::IMessage<TacticalFieldsProto> {
    private static readonly pb::MessageParser<TacticalFieldsProto> _parser = new pb::MessageParser<TacticalFieldsProto>(() => new TacticalFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TacticalFieldsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[6]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto(TacticalFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minefieldOpacity_ = other.minefieldOpacity_;
      symbolIndicator_ = other.symbolIndicator_;
      additionalInformation_ = other.additionalInformation_.Clone();
      uniqueDesignation_ = other.uniqueDesignation_.Clone();
      dateTimeGroup_ = other.dateTimeGroup_.Clone();
      offsetLocationDisplacementX_ = other.offsetLocationDisplacementX_;
      offsetLocationDisplacementY_ = other.offsetLocationDisplacementY_;
      quantity_ = other.quantity_;
      nuclearWeaponType_ = other.nuclearWeaponType_;
      directionOfMovement_ = other.directionOfMovement_;
      altitudeDepth_ = other.altitudeDepth_;
      distance_ = other.distance_;
      azimuth_ = other.azimuth_;
      tacticalEnums_ = other.tacticalEnums_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto Clone() {
      return new TacticalFieldsProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "MinefieldOpacity" field.</summary>
    public const int MinefieldOpacityFieldNumber = 3;
    private float minefieldOpacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinefieldOpacity {
      get { return minefieldOpacity_; }
      set {
        minefieldOpacity_ = value;
      }
    }
    /// <summary>Field number for the "SymbolIndicator" field.</summary>
    public const int SymbolIndicatorFieldNumber = 4;
    private string symbolIndicator_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolIndicator {
      get { return symbolIndicator_; }
      set {
        symbolIndicator_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "AdditionalInformation" field.</summary>
    public const int AdditionalInformationFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_additionalInformation_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> additionalInformation_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> AdditionalInformation {
      get { return additionalInformation_; }
    }
    /// <summary>Field number for the "UniqueDesignation" field.</summary>
    public const int UniqueDesignationFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_uniqueDesignation_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> uniqueDesignation_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> UniqueDesignation {
      get { return uniqueDesignation_; }
    }
    /// <summary>Field number for the "DateTimeGroup" field.</summary>
    public const int DateTimeGroupFieldNumber = 7;
    private static readonly pb::FieldCodec<string> _repeated_dateTimeGroup_codec
        = pb::FieldCodec.ForString(58);
    private readonly pbc::RepeatedField<string> dateTimeGroup_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> DateTimeGroup {
      get { return dateTimeGroup_; }
    }
    /// <summary>Field number for the "OffsetLocationDisplacementX" field.</summary>
    public const int OffsetLocationDisplacementXFieldNumber = 8;
    private float offsetLocationDisplacementX_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OffsetLocationDisplacementX {
      get { return offsetLocationDisplacementX_; }
      set {
        offsetLocationDisplacementX_ = value;
      }
    }
    /// <summary>Field number for the "OffsetLocationDisplacementY" field.</summary>
    public const int OffsetLocationDisplacementYFieldNumber = 9;
    private float offsetLocationDisplacementY_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OffsetLocationDisplacementY {
      get { return offsetLocationDisplacementY_; }
      set {
        offsetLocationDisplacementY_ = value;
      }
    }
    /// <summary>Field number for the "Quantity" field.</summary>
    public const int QuantityFieldNumber = 10;
    private float quantity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Quantity {
      get { return quantity_; }
      set {
        quantity_ = value;
      }
    }
    /// <summary>Field number for the "NuclearWeaponType" field.</summary>
    public const int NuclearWeaponTypeFieldNumber = 11;
    private string nuclearWeaponType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string NuclearWeaponType {
      get { return nuclearWeaponType_; }
      set {
        nuclearWeaponType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "DirectionOfMovement" field.</summary>
    public const int DirectionOfMovementFieldNumber = 12;
    private string directionOfMovement_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DirectionOfMovement {
      get { return directionOfMovement_; }
      set {
        directionOfMovement_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "AltitudeDepth" field.</summary>
    public const int AltitudeDepthFieldNumber = 13;
    private float altitudeDepth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float AltitudeDepth {
      get { return altitudeDepth_; }
      set {
        altitudeDepth_ = value;
      }
    }
    /// <summary>Field number for the "Distance" field.</summary>
    public const int DistanceFieldNumber = 14;
    private float distance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Distance {
      get { return distance_; }
      set {
        distance_ = value;
      }
    }
    /// <summary>Field number for the "Azimuth" field.</summary>
    public const int AzimuthFieldNumber = 15;
    private float azimuth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Azimuth {
      get { return azimuth_; }
      set {
        azimuth_ = value;
      }
    }
    /// <summary>Field number for the "TacticalEnums" field.</summary>
    public const int TacticalEnumsFieldNumber = 16;
    private uint tacticalEnums_;
    /// <summary>
    /// Tactical enum attributes are mapped into this attribute
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint TacticalEnums {
      get { return tacticalEnums_; }
      set {
        tacticalEnums_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TacticalFieldsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TacticalFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinefieldOpacity != other.MinefieldOpacity) return false;
      if (SymbolIndicator != other.SymbolIndicator) return false;
      if(!additionalInformation_.Equals(other.additionalInformation_)) return false;
      if(!uniqueDesignation_.Equals(other.uniqueDesignation_)) return false;
      if(!dateTimeGroup_.Equals(other.dateTimeGroup_)) return false;
      if (OffsetLocationDisplacementX != other.OffsetLocationDisplacementX) return false;
      if (OffsetLocationDisplacementY != other.OffsetLocationDisplacementY) return false;
      if (Quantity != other.Quantity) return false;
      if (NuclearWeaponType != other.NuclearWeaponType) return false;
      if (DirectionOfMovement != other.DirectionOfMovement) return false;
      if (AltitudeDepth != other.AltitudeDepth) return false;
      if (Distance != other.Distance) return false;
      if (Azimuth != other.Azimuth) return false;
      if (TacticalEnums != other.TacticalEnums) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinefieldOpacity != 0F) hash ^= MinefieldOpacity.GetHashCode();
      if (SymbolIndicator.Length != 0) hash ^= SymbolIndicator.GetHashCode();
      hash ^= additionalInformation_.GetHashCode();
      hash ^= uniqueDesignation_.GetHashCode();
      hash ^= dateTimeGroup_.GetHashCode();
      if (OffsetLocationDisplacementX != 0F) hash ^= OffsetLocationDisplacementX.GetHashCode();
      if (OffsetLocationDisplacementY != 0F) hash ^= OffsetLocationDisplacementY.GetHashCode();
      if (Quantity != 0F) hash ^= Quantity.GetHashCode();
      if (NuclearWeaponType.Length != 0) hash ^= NuclearWeaponType.GetHashCode();
      if (DirectionOfMovement.Length != 0) hash ^= DirectionOfMovement.GetHashCode();
      if (AltitudeDepth != 0F) hash ^= AltitudeDepth.GetHashCode();
      if (Distance != 0F) hash ^= Distance.GetHashCode();
      if (Azimuth != 0F) hash ^= Azimuth.GetHashCode();
      if (TacticalEnums != 0) hash ^= TacticalEnums.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinefieldOpacity != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinefieldOpacity);
      }
      if (SymbolIndicator.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(SymbolIndicator);
      }
      additionalInformation_.WriteTo(output, _repeated_additionalInformation_codec);
      uniqueDesignation_.WriteTo(output, _repeated_uniqueDesignation_codec);
      dateTimeGroup_.WriteTo(output, _repeated_dateTimeGroup_codec);
      if (OffsetLocationDisplacementX != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(OffsetLocationDisplacementX);
      }
      if (OffsetLocationDisplacementY != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(OffsetLocationDisplacementY);
      }
      if (Quantity != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(Quantity);
      }
      if (NuclearWeaponType.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(NuclearWeaponType);
      }
      if (DirectionOfMovement.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(DirectionOfMovement);
      }
      if (AltitudeDepth != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(AltitudeDepth);
      }
      if (Distance != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(Distance);
      }
      if (Azimuth != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(Azimuth);
      }
      if (TacticalEnums != 0) {
        output.WriteRawTag(133, 1);
        output.WriteFixed32(TacticalEnums);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinefieldOpacity != 0F) {
        size += 1 + 4;
      }
      if (SymbolIndicator.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SymbolIndicator);
      }
      size += additionalInformation_.CalculateSize(_repeated_additionalInformation_codec);
      size += uniqueDesignation_.CalculateSize(_repeated_uniqueDesignation_codec);
      size += dateTimeGroup_.CalculateSize(_repeated_dateTimeGroup_codec);
      if (OffsetLocationDisplacementX != 0F) {
        size += 1 + 4;
      }
      if (OffsetLocationDisplacementY != 0F) {
        size += 1 + 4;
      }
      if (Quantity != 0F) {
        size += 1 + 4;
      }
      if (NuclearWeaponType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NuclearWeaponType);
      }
      if (DirectionOfMovement.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DirectionOfMovement);
      }
      if (AltitudeDepth != 0F) {
        size += 1 + 4;
      }
      if (Distance != 0F) {
        size += 1 + 4;
      }
      if (Azimuth != 0F) {
        size += 1 + 4;
      }
      if (TacticalEnums != 0) {
        size += 2 + 4;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TacticalFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinefieldOpacity != 0F) {
        MinefieldOpacity = other.MinefieldOpacity;
      }
      if (other.SymbolIndicator.Length != 0) {
        SymbolIndicator = other.SymbolIndicator;
      }
      additionalInformation_.Add(other.additionalInformation_);
      uniqueDesignation_.Add(other.uniqueDesignation_);
      dateTimeGroup_.Add(other.dateTimeGroup_);
      if (other.OffsetLocationDisplacementX != 0F) {
        OffsetLocationDisplacementX = other.OffsetLocationDisplacementX;
      }
      if (other.OffsetLocationDisplacementY != 0F) {
        OffsetLocationDisplacementY = other.OffsetLocationDisplacementY;
      }
      if (other.Quantity != 0F) {
        Quantity = other.Quantity;
      }
      if (other.NuclearWeaponType.Length != 0) {
        NuclearWeaponType = other.NuclearWeaponType;
      }
      if (other.DirectionOfMovement.Length != 0) {
        DirectionOfMovement = other.DirectionOfMovement;
      }
      if (other.AltitudeDepth != 0F) {
        AltitudeDepth = other.AltitudeDepth;
      }
      if (other.Distance != 0F) {
        Distance = other.Distance;
      }
      if (other.Azimuth != 0F) {
        Azimuth = other.Azimuth;
      }
      if (other.TacticalEnums != 0) {
        TacticalEnums = other.TacticalEnums;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinefieldOpacity = input.ReadFloat();
            break;
          }
          case 34: {
            SymbolIndicator = input.ReadString();
            break;
          }
          case 42: {
            additionalInformation_.AddEntriesFrom(input, _repeated_additionalInformation_codec);
            break;
          }
          case 50: {
            uniqueDesignation_.AddEntriesFrom(input, _repeated_uniqueDesignation_codec);
            break;
          }
          case 58: {
            dateTimeGroup_.AddEntriesFrom(input, _repeated_dateTimeGroup_codec);
            break;
          }
          case 69: {
            OffsetLocationDisplacementX = input.ReadFloat();
            break;
          }
          case 77: {
            OffsetLocationDisplacementY = input.ReadFloat();
            break;
          }
          case 85: {
            Quantity = input.ReadFloat();
            break;
          }
          case 90: {
            NuclearWeaponType = input.ReadString();
            break;
          }
          case 98: {
            DirectionOfMovement = input.ReadString();
            break;
          }
          case 109: {
            AltitudeDepth = input.ReadFloat();
            break;
          }
          case 117: {
            Distance = input.ReadFloat();
            break;
          }
          case 125: {
            Azimuth = input.ReadFloat();
            break;
          }
          case 133: {
            TacticalEnums = input.ReadFixed32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class GenericFieldsProto : pb::IMessage<GenericFieldsProto> {
    private static readonly pb::MessageParser<GenericFieldsProto> _parser = new pb::MessageParser<GenericFieldsProto>(() => new GenericFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GenericFieldsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[7]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto(GenericFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      lineColor_ = other.lineColor_;
      lineDashStyle_ = other.lineDashStyle_.Clone();
      lineDashStyleOffset_ = other.lineDashStyleOffset_;
      centerLineWidth_ = other.centerLineWidth_;
      centerLineColor_ = other.centerLineColor_;
      centerLineDashStyle_ = other.centerLineDashStyle_.Clone();
      centerLineDashStyleOffset_ = other.centerLineDashStyleOffset_;
      lineWidth_ = other.lineWidth_;
      lineOutlineWidth_ = other.lineOutlineWidth_;
      lineOutlineColor_ = other.lineOutlineColor_;
      fillForegroundColor_ = other.fillForegroundColor_;
      fillBackgroundColor_ = other.fillBackgroundColor_;
      bufferLineColor_ = other.bufferLineColor_;
      bufferLineDashStyle_ = other.bufferLineDashStyle_.Clone();
      bufferLineDashStyleOffset_ = other.bufferLineDashStyleOffset_;
      bufferLineWidth_ = other.bufferLineWidth_;
      bufferWidth_ = other.bufferWidth_;
      text_ = other.text_;
      fontName_ = other.fontName_;
      fontSize_ = other.fontSize_;
      fontForegroundColor_ = other.fontForegroundColor_;
      fontBackgroundColor_ = other.fontBackgroundColor_;
      numberOfRadials_ = other.numberOfRadials_;
      symbolType_ = other.symbolType_;
      symbolCode_ = other.symbolCode_;
      genericType_ = other.genericType_;
      uncertaintyAngle_ = other.uncertaintyAngle_;
      margin_ = other.margin_;
      minFontSize_ = other.minFontSize_;
      minFontMapScale_ = other.minFontMapScale_;
      maxFontMapScale_ = other.maxFontMapScale_;
      genericEnums_ = other.genericEnums_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto Clone() {
      return new GenericFieldsProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "LineColor" field.</summary>
    public const int LineColorFieldNumber = 3;
    private uint lineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LineColor {
      get { return lineColor_; }
      set {
        lineColor_ = value;
      }
    }
    /// <summary>Field number for the "LineDashStyle" field.</summary>
    public const int LineDashStyleFieldNumber = 4;
    private static readonly pb::FieldCodec<float> _repeated_lineDashStyle_codec
        = pb::FieldCodec.ForFloat(34);
    private readonly pbc::RepeatedField<float> lineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> LineDashStyle {
      get { return lineDashStyle_; }
    }
    /// <summary>Field number for the "LineDashStyleOffset" field.</summary>
    public const int LineDashStyleOffsetFieldNumber = 5;
    private float lineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineDashStyleOffset {
      get { return lineDashStyleOffset_; }
      set {
        lineDashStyleOffset_ = value;
      }
    }
    /// <summary>Field number for the "CenterLineWidth" field.</summary>
    public const int CenterLineWidthFieldNumber = 6;
    private float centerLineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CenterLineWidth {
      get { return centerLineWidth_; }
      set {
        centerLineWidth_ = value;
      }
    }
    /// <summary>Field number for the "CenterLineColor" field.</summary>
    public const int CenterLineColorFieldNumber = 7;
    private uint centerLineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint CenterLineColor {
      get { return centerLineColor_; }
      set {
        centerLineColor_ = value;
      }
    }
    /// <summary>Field number for the "CenterLineDashStyle" field.</summary>
    public const int CenterLineDashStyleFieldNumber = 8;
    private static readonly pb::FieldCodec<float> _repeated_centerLineDashStyle_codec
        = pb::FieldCodec.ForFloat(66);
    private readonly pbc::RepeatedField<float> centerLineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> CenterLineDashStyle {
      get { return centerLineDashStyle_; }
    }
    /// <summary>Field number for the "CenterLineDashStyleOffset" field.</summary>
    public const int CenterLineDashStyleOffsetFieldNumber = 9;
    private float centerLineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CenterLineDashStyleOffset {
      get { return centerLineDashStyleOffset_; }
      set {
        centerLineDashStyleOffset_ = value;
      }
    }
    /// <summary>Field number for the "LineWidth" field.</summary>
    public const int LineWidthFieldNumber = 10;
    private float lineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineWidth {
      get { return lineWidth_; }
      set {
        lineWidth_ = value;
      }
    }
    /// <summary>Field number for the "LineOutlineWidth" field.</summary>
    public const int LineOutlineWidthFieldNumber = 11;
    private float lineOutlineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineOutlineWidth {
      get { return lineOutlineWidth_; }
      set {
        lineOutlineWidth_ = value;
      }
    }
    /// <summary>Field number for the "LineOutlineColor" field.</summary>
    public const int LineOutlineColorFieldNumber = 12;
    private uint lineOutlineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LineOutlineColor {
      get { return lineOutlineColor_; }
      set {
        lineOutlineColor_ = value;
      }
    }
    /// <summary>Field number for the "FillForegroundColor" field.</summary>
    public const int FillForegroundColorFieldNumber = 13;
    private uint fillForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FillForegroundColor {
      get { return fillForegroundColor_; }
      set {
        fillForegroundColor_ = value;
      }
    }
    /// <summary>Field number for the "FillBackgroundColor" field.</summary>
    public const int FillBackgroundColorFieldNumber = 14;
    private uint fillBackgroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FillBackgroundColor {
      get { return fillBackgroundColor_; }
      set {
        fillBackgroundColor_ = value;
      }
    }
    /// <summary>Field number for the "BufferLineColor" field.</summary>
    public const int BufferLineColorFieldNumber = 15;
    private uint bufferLineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint BufferLineColor {
      get { return bufferLineColor_; }
      set {
        bufferLineColor_ = value;
      }
    }
    /// <summary>Field number for the "BufferLineDashStyle" field.</summary>
    public const int BufferLineDashStyleFieldNumber = 16;
    private static readonly pb::FieldCodec<float> _repeated_bufferLineDashStyle_codec
        = pb::FieldCodec.ForFloat(130);
    private readonly pbc::RepeatedField<float> bufferLineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> BufferLineDashStyle {
      get { return bufferLineDashStyle_; }
    }
    /// <summary>Field number for the "BufferLineDashStyleOffset" field.</summary>
    public const int BufferLineDashStyleOffsetFieldNumber = 17;
    private float bufferLineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferLineDashStyleOffset {
      get { return bufferLineDashStyleOffset_; }
      set {
        bufferLineDashStyleOffset_ = value;
      }
    }
    /// <summary>Field number for the "BufferLineWidth" field.</summary>
    public const int BufferLineWidthFieldNumber = 18;
    private float bufferLineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferLineWidth {
      get { return bufferLineWidth_; }
      set {
        bufferLineWidth_ = value;
      }
    }
    /// <summary>Field number for the "BufferWidth" field.</summary>
    public const int BufferWidthFieldNumber = 19;
    private float bufferWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferWidth {
      get { return bufferWidth_; }
      set {
        bufferWidth_ = value;
      }
    }
    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 20;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "FontName" field.</summary>
    public const int FontNameFieldNumber = 21;
    private string fontName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FontName {
      get { return fontName_; }
      set {
        fontName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "FontSize" field.</summary>
    public const int FontSizeFieldNumber = 22;
    private uint fontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontSize {
      get { return fontSize_; }
      set {
        fontSize_ = value;
      }
    }
    /// <summary>Field number for the "FontForegroundColor" field.</summary>
    public const int FontForegroundColorFieldNumber = 23;
    private uint fontForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontForegroundColor {
      get { return fontForegroundColor_; }
      set {
        fontForegroundColor_ = value;
      }
    }
    /// <summary>Field number for the "FontBackgroundColor" field.</summary>
    public const int FontBackgroundColorFieldNumber = 24;
    private uint fontBackgroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontBackgroundColor {
      get { return fontBackgroundColor_; }
      set {
        fontBackgroundColor_ = value;
      }
    }
    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 25;
    private int numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }
    /// <summary>Field number for the "SymbolType" field.</summary>
    public const int SymbolTypeFieldNumber = 26;
    private string symbolType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolType {
      get { return symbolType_; }
      set {
        symbolType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "SymbolCode" field.</summary>
    public const int SymbolCodeFieldNumber = 27;
    private string symbolCode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolCode {
      get { return symbolCode_; }
      set {
        symbolCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "GenericType" field.</summary>
    public const int GenericTypeFieldNumber = 28;
    private string genericType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GenericType {
      get { return genericType_; }
      set {
        genericType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "UncertaintyAngle" field.</summary>
    public const int UncertaintyAngleFieldNumber = 29;
    private float uncertaintyAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float UncertaintyAngle {
      get { return uncertaintyAngle_; }
      set {
        uncertaintyAngle_ = value;
      }
    }
    /// <summary>Field number for the "Margin" field.</summary>
    public const int MarginFieldNumber = 30;
    private float margin_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Margin {
      get { return margin_; }
      set {
        margin_ = value;
      }
    }
    /// <summary>Field number for the "MinFontSize" field.</summary>
    public const int MinFontSizeFieldNumber = 31;
    private uint minFontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MinFontSize {
      get { return minFontSize_; }
      set {
        minFontSize_ = value;
      }
    }
    /// <summary>Field number for the "MinFontMapScale" field.</summary>
    public const int MinFontMapScaleFieldNumber = 32;
    private uint minFontMapScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MinFontMapScale {
      get { return minFontMapScale_; }
      set {
        minFontMapScale_ = value;
      }
    }
    /// <summary>Field number for the "MaxFontMapScale" field.</summary>
    public const int MaxFontMapScaleFieldNumber = 33;
    private uint maxFontMapScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MaxFontMapScale {
      get { return maxFontMapScale_; }
      set {
        maxFontMapScale_ = value;
      }
    }
    /// <summary>Field number for the "GenericEnums" field.</summary>
    public const int GenericEnumsFieldNumber = 34;
    private uint genericEnums_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint GenericEnums {
      get { return genericEnums_; }
      set {
        genericEnums_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GenericFieldsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GenericFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (LineColor != other.LineColor) return false;
      if(!lineDashStyle_.Equals(other.lineDashStyle_)) return false;
      if (LineDashStyleOffset != other.LineDashStyleOffset) return false;
      if (CenterLineWidth != other.CenterLineWidth) return false;
      if (CenterLineColor != other.CenterLineColor) return false;
      if(!centerLineDashStyle_.Equals(other.centerLineDashStyle_)) return false;
      if (CenterLineDashStyleOffset != other.CenterLineDashStyleOffset) return false;
      if (LineWidth != other.LineWidth) return false;
      if (LineOutlineWidth != other.LineOutlineWidth) return false;
      if (LineOutlineColor != other.LineOutlineColor) return false;
      if (FillForegroundColor != other.FillForegroundColor) return false;
      if (FillBackgroundColor != other.FillBackgroundColor) return false;
      if (BufferLineColor != other.BufferLineColor) return false;
      if(!bufferLineDashStyle_.Equals(other.bufferLineDashStyle_)) return false;
      if (BufferLineDashStyleOffset != other.BufferLineDashStyleOffset) return false;
      if (BufferLineWidth != other.BufferLineWidth) return false;
      if (BufferWidth != other.BufferWidth) return false;
      if (Text != other.Text) return false;
      if (FontName != other.FontName) return false;
      if (FontSize != other.FontSize) return false;
      if (FontForegroundColor != other.FontForegroundColor) return false;
      if (FontBackgroundColor != other.FontBackgroundColor) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      if (SymbolType != other.SymbolType) return false;
      if (SymbolCode != other.SymbolCode) return false;
      if (GenericType != other.GenericType) return false;
      if (UncertaintyAngle != other.UncertaintyAngle) return false;
      if (Margin != other.Margin) return false;
      if (MinFontSize != other.MinFontSize) return false;
      if (MinFontMapScale != other.MinFontMapScale) return false;
      if (MaxFontMapScale != other.MaxFontMapScale) return false;
      if (GenericEnums != other.GenericEnums) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (LineColor != 0) hash ^= LineColor.GetHashCode();
      hash ^= lineDashStyle_.GetHashCode();
      if (LineDashStyleOffset != 0F) hash ^= LineDashStyleOffset.GetHashCode();
      if (CenterLineWidth != 0F) hash ^= CenterLineWidth.GetHashCode();
      if (CenterLineColor != 0) hash ^= CenterLineColor.GetHashCode();
      hash ^= centerLineDashStyle_.GetHashCode();
      if (CenterLineDashStyleOffset != 0F) hash ^= CenterLineDashStyleOffset.GetHashCode();
      if (LineWidth != 0F) hash ^= LineWidth.GetHashCode();
      if (LineOutlineWidth != 0F) hash ^= LineOutlineWidth.GetHashCode();
      if (LineOutlineColor != 0) hash ^= LineOutlineColor.GetHashCode();
      if (FillForegroundColor != 0) hash ^= FillForegroundColor.GetHashCode();
      if (FillBackgroundColor != 0) hash ^= FillBackgroundColor.GetHashCode();
      if (BufferLineColor != 0) hash ^= BufferLineColor.GetHashCode();
      hash ^= bufferLineDashStyle_.GetHashCode();
      if (BufferLineDashStyleOffset != 0F) hash ^= BufferLineDashStyleOffset.GetHashCode();
      if (BufferLineWidth != 0F) hash ^= BufferLineWidth.GetHashCode();
      if (BufferWidth != 0F) hash ^= BufferWidth.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (FontName.Length != 0) hash ^= FontName.GetHashCode();
      if (FontSize != 0) hash ^= FontSize.GetHashCode();
      if (FontForegroundColor != 0) hash ^= FontForegroundColor.GetHashCode();
      if (FontBackgroundColor != 0) hash ^= FontBackgroundColor.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      if (SymbolType.Length != 0) hash ^= SymbolType.GetHashCode();
      if (SymbolCode.Length != 0) hash ^= SymbolCode.GetHashCode();
      if (GenericType.Length != 0) hash ^= GenericType.GetHashCode();
      if (UncertaintyAngle != 0F) hash ^= UncertaintyAngle.GetHashCode();
      if (Margin != 0F) hash ^= Margin.GetHashCode();
      if (MinFontSize != 0) hash ^= MinFontSize.GetHashCode();
      if (MinFontMapScale != 0) hash ^= MinFontMapScale.GetHashCode();
      if (MaxFontMapScale != 0) hash ^= MaxFontMapScale.GetHashCode();
      if (GenericEnums != 0) hash ^= GenericEnums.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (LineColor != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(LineColor);
      }
      lineDashStyle_.WriteTo(output, _repeated_lineDashStyle_codec);
      if (LineDashStyleOffset != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(LineDashStyleOffset);
      }
      if (CenterLineWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(CenterLineWidth);
      }
      if (CenterLineColor != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(CenterLineColor);
      }
      centerLineDashStyle_.WriteTo(output, _repeated_centerLineDashStyle_codec);
      if (CenterLineDashStyleOffset != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(CenterLineDashStyleOffset);
      }
      if (LineWidth != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(LineWidth);
      }
      if (LineOutlineWidth != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(LineOutlineWidth);
      }
      if (LineOutlineColor != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(LineOutlineColor);
      }
      if (FillForegroundColor != 0) {
        output.WriteRawTag(104);
        output.WriteUInt32(FillForegroundColor);
      }
      if (FillBackgroundColor != 0) {
        output.WriteRawTag(112);
        output.WriteUInt32(FillBackgroundColor);
      }
      if (BufferLineColor != 0) {
        output.WriteRawTag(120);
        output.WriteUInt32(BufferLineColor);
      }
      bufferLineDashStyle_.WriteTo(output, _repeated_bufferLineDashStyle_codec);
      if (BufferLineDashStyleOffset != 0F) {
        output.WriteRawTag(141, 1);
        output.WriteFloat(BufferLineDashStyleOffset);
      }
      if (BufferLineWidth != 0F) {
        output.WriteRawTag(149, 1);
        output.WriteFloat(BufferLineWidth);
      }
      if (BufferWidth != 0F) {
        output.WriteRawTag(157, 1);
        output.WriteFloat(BufferWidth);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(Text);
      }
      if (FontName.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(FontName);
      }
      if (FontSize != 0) {
        output.WriteRawTag(176, 1);
        output.WriteUInt32(FontSize);
      }
      if (FontForegroundColor != 0) {
        output.WriteRawTag(184, 1);
        output.WriteUInt32(FontForegroundColor);
      }
      if (FontBackgroundColor != 0) {
        output.WriteRawTag(192, 1);
        output.WriteUInt32(FontBackgroundColor);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(200, 1);
        output.WriteInt32(NumberOfRadials);
      }
      if (SymbolType.Length != 0) {
        output.WriteRawTag(210, 1);
        output.WriteString(SymbolType);
      }
      if (SymbolCode.Length != 0) {
        output.WriteRawTag(218, 1);
        output.WriteString(SymbolCode);
      }
      if (GenericType.Length != 0) {
        output.WriteRawTag(226, 1);
        output.WriteString(GenericType);
      }
      if (UncertaintyAngle != 0F) {
        output.WriteRawTag(237, 1);
        output.WriteFloat(UncertaintyAngle);
      }
      if (Margin != 0F) {
        output.WriteRawTag(245, 1);
        output.WriteFloat(Margin);
      }
      if (MinFontSize != 0) {
        output.WriteRawTag(248, 1);
        output.WriteUInt32(MinFontSize);
      }
      if (MinFontMapScale != 0) {
        output.WriteRawTag(128, 2);
        output.WriteUInt32(MinFontMapScale);
      }
      if (MaxFontMapScale != 0) {
        output.WriteRawTag(136, 2);
        output.WriteUInt32(MaxFontMapScale);
      }
      if (GenericEnums != 0) {
        output.WriteRawTag(149, 2);
        output.WriteFixed32(GenericEnums);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (LineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LineColor);
      }
      size += lineDashStyle_.CalculateSize(_repeated_lineDashStyle_codec);
      if (LineDashStyleOffset != 0F) {
        size += 1 + 4;
      }
      if (CenterLineWidth != 0F) {
        size += 1 + 4;
      }
      if (CenterLineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(CenterLineColor);
      }
      size += centerLineDashStyle_.CalculateSize(_repeated_centerLineDashStyle_codec);
      if (CenterLineDashStyleOffset != 0F) {
        size += 1 + 4;
      }
      if (LineWidth != 0F) {
        size += 1 + 4;
      }
      if (LineOutlineWidth != 0F) {
        size += 1 + 4;
      }
      if (LineOutlineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LineOutlineColor);
      }
      if (FillForegroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FillForegroundColor);
      }
      if (FillBackgroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FillBackgroundColor);
      }
      if (BufferLineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(BufferLineColor);
      }
      size += bufferLineDashStyle_.CalculateSize(_repeated_bufferLineDashStyle_codec);
      if (BufferLineDashStyleOffset != 0F) {
        size += 2 + 4;
      }
      if (BufferLineWidth != 0F) {
        size += 2 + 4;
      }
      if (BufferWidth != 0F) {
        size += 2 + 4;
      }
      if (Text.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (FontName.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(FontName);
      }
      if (FontSize != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontSize);
      }
      if (FontForegroundColor != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontForegroundColor);
      }
      if (FontBackgroundColor != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontBackgroundColor);
      }
      if (NumberOfRadials != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumberOfRadials);
      }
      if (SymbolType.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(SymbolType);
      }
      if (SymbolCode.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(SymbolCode);
      }
      if (GenericType.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(GenericType);
      }
      if (UncertaintyAngle != 0F) {
        size += 2 + 4;
      }
      if (Margin != 0F) {
        size += 2 + 4;
      }
      if (MinFontSize != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MinFontSize);
      }
      if (MinFontMapScale != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MinFontMapScale);
      }
      if (MaxFontMapScale != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MaxFontMapScale);
      }
      if (GenericEnums != 0) {
        size += 2 + 4;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GenericFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.LineColor != 0) {
        LineColor = other.LineColor;
      }
      lineDashStyle_.Add(other.lineDashStyle_);
      if (other.LineDashStyleOffset != 0F) {
        LineDashStyleOffset = other.LineDashStyleOffset;
      }
      if (other.CenterLineWidth != 0F) {
        CenterLineWidth = other.CenterLineWidth;
      }
      if (other.CenterLineColor != 0) {
        CenterLineColor = other.CenterLineColor;
      }
      centerLineDashStyle_.Add(other.centerLineDashStyle_);
      if (other.CenterLineDashStyleOffset != 0F) {
        CenterLineDashStyleOffset = other.CenterLineDashStyleOffset;
      }
      if (other.LineWidth != 0F) {
        LineWidth = other.LineWidth;
      }
      if (other.LineOutlineWidth != 0F) {
        LineOutlineWidth = other.LineOutlineWidth;
      }
      if (other.LineOutlineColor != 0) {
        LineOutlineColor = other.LineOutlineColor;
      }
      if (other.FillForegroundColor != 0) {
        FillForegroundColor = other.FillForegroundColor;
      }
      if (other.FillBackgroundColor != 0) {
        FillBackgroundColor = other.FillBackgroundColor;
      }
      if (other.BufferLineColor != 0) {
        BufferLineColor = other.BufferLineColor;
      }
      bufferLineDashStyle_.Add(other.bufferLineDashStyle_);
      if (other.BufferLineDashStyleOffset != 0F) {
        BufferLineDashStyleOffset = other.BufferLineDashStyleOffset;
      }
      if (other.BufferLineWidth != 0F) {
        BufferLineWidth = other.BufferLineWidth;
      }
      if (other.BufferWidth != 0F) {
        BufferWidth = other.BufferWidth;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.FontName.Length != 0) {
        FontName = other.FontName;
      }
      if (other.FontSize != 0) {
        FontSize = other.FontSize;
      }
      if (other.FontForegroundColor != 0) {
        FontForegroundColor = other.FontForegroundColor;
      }
      if (other.FontBackgroundColor != 0) {
        FontBackgroundColor = other.FontBackgroundColor;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
      if (other.SymbolType.Length != 0) {
        SymbolType = other.SymbolType;
      }
      if (other.SymbolCode.Length != 0) {
        SymbolCode = other.SymbolCode;
      }
      if (other.GenericType.Length != 0) {
        GenericType = other.GenericType;
      }
      if (other.UncertaintyAngle != 0F) {
        UncertaintyAngle = other.UncertaintyAngle;
      }
      if (other.Margin != 0F) {
        Margin = other.Margin;
      }
      if (other.MinFontSize != 0) {
        MinFontSize = other.MinFontSize;
      }
      if (other.MinFontMapScale != 0) {
        MinFontMapScale = other.MinFontMapScale;
      }
      if (other.MaxFontMapScale != 0) {
        MaxFontMapScale = other.MaxFontMapScale;
      }
      if (other.GenericEnums != 0) {
        GenericEnums = other.GenericEnums;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            LineColor = input.ReadUInt32();
            break;
          }
          case 34:
          case 37: {
            lineDashStyle_.AddEntriesFrom(input, _repeated_lineDashStyle_codec);
            break;
          }
          case 45: {
            LineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 53: {
            CenterLineWidth = input.ReadFloat();
            break;
          }
          case 56: {
            CenterLineColor = input.ReadUInt32();
            break;
          }
          case 66:
          case 69: {
            centerLineDashStyle_.AddEntriesFrom(input, _repeated_centerLineDashStyle_codec);
            break;
          }
          case 77: {
            CenterLineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 85: {
            LineWidth = input.ReadFloat();
            break;
          }
          case 93: {
            LineOutlineWidth = input.ReadFloat();
            break;
          }
          case 96: {
            LineOutlineColor = input.ReadUInt32();
            break;
          }
          case 104: {
            FillForegroundColor = input.ReadUInt32();
            break;
          }
          case 112: {
            FillBackgroundColor = input.ReadUInt32();
            break;
          }
          case 120: {
            BufferLineColor = input.ReadUInt32();
            break;
          }
          case 130:
          case 133: {
            bufferLineDashStyle_.AddEntriesFrom(input, _repeated_bufferLineDashStyle_codec);
            break;
          }
          case 141: {
            BufferLineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 149: {
            BufferLineWidth = input.ReadFloat();
            break;
          }
          case 157: {
            BufferWidth = input.ReadFloat();
            break;
          }
          case 162: {
            Text = input.ReadString();
            break;
          }
          case 170: {
            FontName = input.ReadString();
            break;
          }
          case 176: {
            FontSize = input.ReadUInt32();
            break;
          }
          case 184: {
            FontForegroundColor = input.ReadUInt32();
            break;
          }
          case 192: {
            FontBackgroundColor = input.ReadUInt32();
            break;
          }
          case 200: {
            NumberOfRadials = input.ReadInt32();
            break;
          }
          case 210: {
            SymbolType = input.ReadString();
            break;
          }
          case 218: {
            SymbolCode = input.ReadString();
            break;
          }
          case 226: {
            GenericType = input.ReadString();
            break;
          }
          case 237: {
            UncertaintyAngle = input.ReadFloat();
            break;
          }
          case 245: {
            Margin = input.ReadFloat();
            break;
          }
          case 248: {
            MinFontSize = input.ReadUInt32();
            break;
          }
          case 256: {
            MinFontMapScale = input.ReadUInt32();
            break;
          }
          case 264: {
            MaxFontMapScale = input.ReadUInt32();
            break;
          }
          case 277: {
            GenericEnums = input.ReadFixed32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class VerticalDistanceDataProto : pb::IMessage<VerticalDistanceDataProto> {
    private static readonly pb::MessageParser<VerticalDistanceDataProto> _parser = new pb::MessageParser<VerticalDistanceDataProto>(() => new VerticalDistanceDataProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VerticalDistanceDataProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[8]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto(VerticalDistanceDataProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      unitType_ = other.unitType_;
      dimensions_ = other.dimensions_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto Clone() {
      return new VerticalDistanceDataProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "UnitType" field.</summary>
    public const int UnitTypeFieldNumber = 3;
    private string unitType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string UnitType {
      get { return unitType_; }
      set {
        unitType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "Dimensions" field.</summary>
    public const int DimensionsFieldNumber = 4;
    private float dimensions_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Dimensions {
      get { return dimensions_; }
      set {
        dimensions_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VerticalDistanceDataProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VerticalDistanceDataProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (UnitType != other.UnitType) return false;
      if (Dimensions != other.Dimensions) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (UnitType.Length != 0) hash ^= UnitType.GetHashCode();
      if (Dimensions != 0F) hash ^= Dimensions.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (UnitType.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(UnitType);
      }
      if (Dimensions != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(Dimensions);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (UnitType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(UnitType);
      }
      if (Dimensions != 0F) {
        size += 1 + 4;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VerticalDistanceDataProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.UnitType.Length != 0) {
        UnitType = other.UnitType;
      }
      if (other.Dimensions != 0F) {
        Dimensions = other.Dimensions;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            UnitType = input.ReadString();
            break;
          }
          case 37: {
            Dimensions = input.ReadFloat();
            break;
          }
        }
      }
    }
  }
  public sealed partial class SurfaceVolumeProto : pb::IMessage<SurfaceVolumeProto> {
    private static readonly pb::MessageParser<SurfaceVolumeProto> _parser = new pb::MessageParser<SurfaceVolumeProto>(() => new SurfaceVolumeProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SurfaceVolumeProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[9]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto(SurfaceVolumeProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      LowerVerticalDistance = other.lowerVerticalDistance_ != null ? other.LowerVerticalDistance.Clone() : null;
      UpperVerticalDistance = other.upperVerticalDistance_ != null ? other.UpperVerticalDistance.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto Clone() {
      return new SurfaceVolumeProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "LowerVerticalDistance" field.</summary>
    public const int LowerVerticalDistanceFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto lowerVerticalDistance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto LowerVerticalDistance {
      get { return lowerVerticalDistance_; }
      set {
        lowerVerticalDistance_ = value;
      }
    }
    /// <summary>Field number for the "UpperVerticalDistance" field.</summary>
    public const int UpperVerticalDistanceFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto upperVerticalDistance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto UpperVerticalDistance {
      get { return upperVerticalDistance_; }
      set {
        upperVerticalDistance_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SurfaceVolumeProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SurfaceVolumeProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(LowerVerticalDistance, other.LowerVerticalDistance)) return false;
      if (!object.Equals(UpperVerticalDistance, other.UpperVerticalDistance)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (lowerVerticalDistance_ != null) hash ^= LowerVerticalDistance.GetHashCode();
      if (upperVerticalDistance_ != null) hash ^= UpperVerticalDistance.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (lowerVerticalDistance_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(LowerVerticalDistance);
      }
      if (upperVerticalDistance_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(UpperVerticalDistance);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (lowerVerticalDistance_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LowerVerticalDistance);
      }
      if (upperVerticalDistance_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpperVerticalDistance);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SurfaceVolumeProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.lowerVerticalDistance_ != null) {
        if (lowerVerticalDistance_ == null) {
          lowerVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
        }
        LowerVerticalDistance.MergeFrom(other.LowerVerticalDistance);
      }
      if (other.upperVerticalDistance_ != null) {
        if (upperVerticalDistance_ == null) {
          upperVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
        }
        UpperVerticalDistance.MergeFrom(other.UpperVerticalDistance);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (lowerVerticalDistance_ == null) {
              lowerVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
            }
            input.ReadMessage(lowerVerticalDistance_);
            break;
          }
          case 34: {
            if (upperVerticalDistance_ == null) {
              upperVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
            }
            input.ReadMessage(upperVerticalDistance_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class OrbitAreaProto : pb::IMessage<OrbitAreaProto> {
    private static readonly pb::MessageParser<OrbitAreaProto> _parser = new pb::MessageParser<OrbitAreaProto>(() => new OrbitAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<OrbitAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[10]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto(OrbitAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      FirstPoint = other.firstPoint_ != null ? other.FirstPoint.Clone() : null;
      SecondPoint = other.secondPoint_ != null ? other.SecondPoint.Clone() : null;
      width_ = other.width_;
      orbitAreaAligmentCode_ = other.orbitAreaAligmentCode_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto Clone() {
      return new OrbitAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "FirstPoint" field.</summary>
    public const int FirstPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto firstPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto FirstPoint {
      get { return firstPoint_; }
      set {
        firstPoint_ = value;
      }
    }
    /// <summary>Field number for the "SecondPoint" field.</summary>
    public const int SecondPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto secondPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto SecondPoint {
      get { return secondPoint_; }
      set {
        secondPoint_ = value;
      }
    }
    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 5;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }
    /// <summary>Field number for the "OrbitAreaAligmentCode" field.</summary>
    public const int OrbitAreaAligmentCodeFieldNumber = 6;
    private uint orbitAreaAligmentCode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OrbitAreaAligmentCode {
      get { return orbitAreaAligmentCode_; }
      set {
        orbitAreaAligmentCode_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as OrbitAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(OrbitAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(FirstPoint, other.FirstPoint)) return false;
      if (!object.Equals(SecondPoint, other.SecondPoint)) return false;
      if (Width != other.Width) return false;
      if (OrbitAreaAligmentCode != other.OrbitAreaAligmentCode) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (firstPoint_ != null) hash ^= FirstPoint.GetHashCode();
      if (secondPoint_ != null) hash ^= SecondPoint.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      if (OrbitAreaAligmentCode != 0) hash ^= OrbitAreaAligmentCode.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(FirstPoint);
      }
      if (secondPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(SecondPoint);
      }
      if (Width != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Width);
      }
      if (OrbitAreaAligmentCode != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(OrbitAreaAligmentCode);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstPoint);
      }
      if (secondPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondPoint);
      }
      if (Width != 0F) {
        size += 1 + 4;
      }
      if (OrbitAreaAligmentCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OrbitAreaAligmentCode);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(OrbitAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.firstPoint_ != null) {
        if (firstPoint_ == null) {
          firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        FirstPoint.MergeFrom(other.FirstPoint);
      }
      if (other.secondPoint_ != null) {
        if (secondPoint_ == null) {
          secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        SecondPoint.MergeFrom(other.SecondPoint);
      }
      if (other.Width != 0F) {
        Width = other.Width;
      }
      if (other.OrbitAreaAligmentCode != 0) {
        OrbitAreaAligmentCode = other.OrbitAreaAligmentCode;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (firstPoint_ == null) {
              firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(firstPoint_);
            break;
          }
          case 34: {
            if (secondPoint_ == null) {
              secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(secondPoint_);
            break;
          }
          case 45: {
            Width = input.ReadFloat();
            break;
          }
          case 48: {
            OrbitAreaAligmentCode = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class OrbitAreaShiftedIntProto : pb::IMessage<OrbitAreaShiftedIntProto> {
    private static readonly pb::MessageParser<OrbitAreaShiftedIntProto> _parser = new pb::MessageParser<OrbitAreaShiftedIntProto>(() => new OrbitAreaShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<OrbitAreaShiftedIntProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[11]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto(OrbitAreaShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      FirstPoint = other.firstPoint_ != null ? other.FirstPoint.Clone() : null;
      SecondPoint = other.secondPoint_ != null ? other.SecondPoint.Clone() : null;
      width_ = other.width_;
      orbitAreaAligmentCode_ = other.orbitAreaAligmentCode_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto Clone() {
      return new OrbitAreaShiftedIntProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "FirstPoint" field.</summary>
    public const int FirstPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto firstPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto FirstPoint {
      get { return firstPoint_; }
      set {
        firstPoint_ = value;
      }
    }
    /// <summary>Field number for the "SecondPoint" field.</summary>
    public const int SecondPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto secondPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto SecondPoint {
      get { return secondPoint_; }
      set {
        secondPoint_ = value;
      }
    }
    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 5;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }
    /// <summary>Field number for the "OrbitAreaAligmentCode" field.</summary>
    public const int OrbitAreaAligmentCodeFieldNumber = 6;
    private uint orbitAreaAligmentCode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OrbitAreaAligmentCode {
      get { return orbitAreaAligmentCode_; }
      set {
        orbitAreaAligmentCode_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as OrbitAreaShiftedIntProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(OrbitAreaShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(FirstPoint, other.FirstPoint)) return false;
      if (!object.Equals(SecondPoint, other.SecondPoint)) return false;
      if (Width != other.Width) return false;
      if (OrbitAreaAligmentCode != other.OrbitAreaAligmentCode) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (firstPoint_ != null) hash ^= FirstPoint.GetHashCode();
      if (secondPoint_ != null) hash ^= SecondPoint.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      if (OrbitAreaAligmentCode != 0) hash ^= OrbitAreaAligmentCode.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(FirstPoint);
      }
      if (secondPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(SecondPoint);
      }
      if (Width != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Width);
      }
      if (OrbitAreaAligmentCode != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(OrbitAreaAligmentCode);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstPoint);
      }
      if (secondPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondPoint);
      }
      if (Width != 0F) {
        size += 1 + 4;
      }
      if (OrbitAreaAligmentCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OrbitAreaAligmentCode);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(OrbitAreaShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.firstPoint_ != null) {
        if (firstPoint_ == null) {
          firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        FirstPoint.MergeFrom(other.FirstPoint);
      }
      if (other.secondPoint_ != null) {
        if (secondPoint_ == null) {
          secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        SecondPoint.MergeFrom(other.SecondPoint);
      }
      if (other.Width != 0F) {
        Width = other.Width;
      }
      if (other.OrbitAreaAligmentCode != 0) {
        OrbitAreaAligmentCode = other.OrbitAreaAligmentCode;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (firstPoint_ == null) {
              firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(firstPoint_);
            break;
          }
          case 34: {
            if (secondPoint_ == null) {
              secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(secondPoint_);
            break;
          }
          case 45: {
            Width = input.ReadFloat();
            break;
          }
          case 48: {
            OrbitAreaAligmentCode = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class FanAreaProto : pb::IMessage<FanAreaProto> {
    private static readonly pb::MessageParser<FanAreaProto> _parser = new pb::MessageParser<FanAreaProto>(() => new FanAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FanAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[12]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto(FanAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minimumRange_ = other.minimumRange_;
      maximumRange_ = other.maximumRange_;
      orientationAngle_ = other.orientationAngle_;
      sectorSizeAngle_ = other.sectorSizeAngle_;
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto Clone() {
      return new FanAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "MinimumRange" field.</summary>
    public const int MinimumRangeFieldNumber = 3;
    private float minimumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinimumRange {
      get { return minimumRange_; }
      set {
        minimumRange_ = value;
      }
    }
    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 4;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }
    /// <summary>Field number for the "OrientationAngle" field.</summary>
    public const int OrientationAngleFieldNumber = 5;
    private float orientationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OrientationAngle {
      get { return orientationAngle_; }
      set {
        orientationAngle_ = value;
      }
    }
    /// <summary>Field number for the "SectorSizeAngle" field.</summary>
    public const int SectorSizeAngleFieldNumber = 6;
    private float sectorSizeAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float SectorSizeAngle {
      get { return sectorSizeAngle_; }
      set {
        sectorSizeAngle_ = value;
      }
    }
    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 7;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FanAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FanAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinimumRange != other.MinimumRange) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (OrientationAngle != other.OrientationAngle) return false;
      if (SectorSizeAngle != other.SectorSizeAngle) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinimumRange != 0F) hash ^= MinimumRange.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (OrientationAngle != 0F) hash ^= OrientationAngle.GetHashCode();
      if (SectorSizeAngle != 0F) hash ^= SectorSizeAngle.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinimumRange);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(MaximumRange);
      }
      if (OrientationAngle != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(OrientationAngle);
      }
      if (SectorSizeAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(SectorSizeAngle);
      }
      if (vertexPoint_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(VertexPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (OrientationAngle != 0F) {
        size += 1 + 4;
      }
      if (SectorSizeAngle != 0F) {
        size += 1 + 4;
      }
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FanAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinimumRange != 0F) {
        MinimumRange = other.MinimumRange;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.OrientationAngle != 0F) {
        OrientationAngle = other.OrientationAngle;
      }
      if (other.SectorSizeAngle != 0F) {
        SectorSizeAngle = other.SectorSizeAngle;
      }
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinimumRange = input.ReadFloat();
            break;
          }
          case 37: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 45: {
            OrientationAngle = input.ReadFloat();
            break;
          }
          case 53: {
            SectorSizeAngle = input.ReadFloat();
            break;
          }
          case 58: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class FanAreaAsShiftedIntProto : pb::IMessage<FanAreaAsShiftedIntProto> {
    private static readonly pb::MessageParser<FanAreaAsShiftedIntProto> _parser = new pb::MessageParser<FanAreaAsShiftedIntProto>(() => new FanAreaAsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FanAreaAsShiftedIntProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[13]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto(FanAreaAsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minimumRange_ = other.minimumRange_;
      maximumRange_ = other.maximumRange_;
      orientationAngle_ = other.orientationAngle_;
      sectorSizeAngle_ = other.sectorSizeAngle_;
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto Clone() {
      return new FanAreaAsShiftedIntProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "MinimumRange" field.</summary>
    public const int MinimumRangeFieldNumber = 3;
    private float minimumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinimumRange {
      get { return minimumRange_; }
      set {
        minimumRange_ = value;
      }
    }
    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 4;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }
    /// <summary>Field number for the "OrientationAngle" field.</summary>
    public const int OrientationAngleFieldNumber = 5;
    private float orientationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OrientationAngle {
      get { return orientationAngle_; }
      set {
        orientationAngle_ = value;
      }
    }
    /// <summary>Field number for the "SectorSizeAngle" field.</summary>
    public const int SectorSizeAngleFieldNumber = 6;
    private float sectorSizeAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float SectorSizeAngle {
      get { return sectorSizeAngle_; }
      set {
        sectorSizeAngle_ = value;
      }
    }
    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 7;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FanAreaAsShiftedIntProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FanAreaAsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinimumRange != other.MinimumRange) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (OrientationAngle != other.OrientationAngle) return false;
      if (SectorSizeAngle != other.SectorSizeAngle) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinimumRange != 0F) hash ^= MinimumRange.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (OrientationAngle != 0F) hash ^= OrientationAngle.GetHashCode();
      if (SectorSizeAngle != 0F) hash ^= SectorSizeAngle.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinimumRange);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(MaximumRange);
      }
      if (OrientationAngle != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(OrientationAngle);
      }
      if (SectorSizeAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(SectorSizeAngle);
      }
      if (vertexPoint_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(VertexPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (OrientationAngle != 0F) {
        size += 1 + 4;
      }
      if (SectorSizeAngle != 0F) {
        size += 1 + 4;
      }
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FanAreaAsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinimumRange != 0F) {
        MinimumRange = other.MinimumRange;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.OrientationAngle != 0F) {
        OrientationAngle = other.OrientationAngle;
      }
      if (other.SectorSizeAngle != 0F) {
        SectorSizeAngle = other.SectorSizeAngle;
      }
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinimumRange = input.ReadFloat();
            break;
          }
          case 37: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 45: {
            OrientationAngle = input.ReadFloat();
            break;
          }
          case 53: {
            SectorSizeAngle = input.ReadFloat();
            break;
          }
          case 58: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class CorridorAreaProto : pb::IMessage<CorridorAreaProto> {
    private static readonly pb::MessageParser<CorridorAreaProto> _parser = new pb::MessageParser<CorridorAreaProto>(() => new CorridorAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<CorridorAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[14]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto(CorridorAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      width_ = other.width_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto Clone() {
      return new CorridorAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 3;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as CorridorAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(CorridorAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Width != other.Width) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Width != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(Width);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Width != 0F) {
        size += 1 + 4;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(CorridorAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Width != 0F) {
        Width = other.Width;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            Width = input.ReadFloat();
            break;
          }
        }
      }
    }
  }
  public sealed partial class EllipseProto : pb::IMessage<EllipseProto> {
    private static readonly pb::MessageParser<EllipseProto> _parser = new pb::MessageParser<EllipseProto>(() => new EllipseProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<EllipseProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[15]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto(EllipseProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      CentrePoint = other.centrePoint_ != null ? other.CentrePoint.Clone() : null;
      FirstConjugateDiameterPoint = other.firstConjugateDiameterPoint_ != null ? other.FirstConjugateDiameterPoint.Clone() : null;
      SecondConjugateDiameterPoint = other.secondConjugateDiameterPoint_ != null ? other.SecondConjugateDiameterPoint.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto Clone() {
      return new EllipseProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "CentrePoint" field.</summary>
    public const int CentrePointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto centrePoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto CentrePoint {
      get { return centrePoint_; }
      set {
        centrePoint_ = value;
      }
    }
    /// <summary>Field number for the "FirstConjugateDiameterPoint" field.</summary>
    public const int FirstConjugateDiameterPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto firstConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto FirstConjugateDiameterPoint {
      get { return firstConjugateDiameterPoint_; }
      set {
        firstConjugateDiameterPoint_ = value;
      }
    }
    /// <summary>Field number for the "SecondConjugateDiameterPoint" field.</summary>
    public const int SecondConjugateDiameterPointFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto secondConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto SecondConjugateDiameterPoint {
      get { return secondConjugateDiameterPoint_; }
      set {
        secondConjugateDiameterPoint_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as EllipseProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(EllipseProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(CentrePoint, other.CentrePoint)) return false;
      if (!object.Equals(FirstConjugateDiameterPoint, other.FirstConjugateDiameterPoint)) return false;
      if (!object.Equals(SecondConjugateDiameterPoint, other.SecondConjugateDiameterPoint)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (centrePoint_ != null) hash ^= CentrePoint.GetHashCode();
      if (firstConjugateDiameterPoint_ != null) hash ^= FirstConjugateDiameterPoint.GetHashCode();
      if (secondConjugateDiameterPoint_ != null) hash ^= SecondConjugateDiameterPoint.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SecondConjugateDiameterPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondConjugateDiameterPoint);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(EllipseProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.centrePoint_ != null) {
        if (centrePoint_ == null) {
          centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        CentrePoint.MergeFrom(other.CentrePoint);
      }
      if (other.firstConjugateDiameterPoint_ != null) {
        if (firstConjugateDiameterPoint_ == null) {
          firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        FirstConjugateDiameterPoint.MergeFrom(other.FirstConjugateDiameterPoint);
      }
      if (other.secondConjugateDiameterPoint_ != null) {
        if (secondConjugateDiameterPoint_ == null) {
          secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        SecondConjugateDiameterPoint.MergeFrom(other.SecondConjugateDiameterPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (centrePoint_ == null) {
              centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(centrePoint_);
            break;
          }
          case 34: {
            if (firstConjugateDiameterPoint_ == null) {
              firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(firstConjugateDiameterPoint_);
            break;
          }
          case 42: {
            if (secondConjugateDiameterPoint_ == null) {
              secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(secondConjugateDiameterPoint_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class EllipseAsShiftedIntProto : pb::IMessage<EllipseAsShiftedIntProto> {
    private static readonly pb::MessageParser<EllipseAsShiftedIntProto> _parser = new pb::MessageParser<EllipseAsShiftedIntProto>(() => new EllipseAsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<EllipseAsShiftedIntProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[16]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto(EllipseAsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      CentrePoint = other.centrePoint_ != null ? other.CentrePoint.Clone() : null;
      FirstConjugateDiameterPoint = other.firstConjugateDiameterPoint_ != null ? other.FirstConjugateDiameterPoint.Clone() : null;
      SecondConjugateDiameterPoint = other.secondConjugateDiameterPoint_ != null ? other.SecondConjugateDiameterPoint.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto Clone() {
      return new EllipseAsShiftedIntProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "CentrePoint" field.</summary>
    public const int CentrePointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto centrePoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto CentrePoint {
      get { return centrePoint_; }
      set {
        centrePoint_ = value;
      }
    }
    /// <summary>Field number for the "FirstConjugateDiameterPoint" field.</summary>
    public const int FirstConjugateDiameterPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto firstConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto FirstConjugateDiameterPoint {
      get { return firstConjugateDiameterPoint_; }
      set {
        firstConjugateDiameterPoint_ = value;
      }
    }
    /// <summary>Field number for the "SecondConjugateDiameterPoint" field.</summary>
    public const int SecondConjugateDiameterPointFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto secondConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto SecondConjugateDiameterPoint {
      get { return secondConjugateDiameterPoint_; }
      set {
        secondConjugateDiameterPoint_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as EllipseAsShiftedIntProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(EllipseAsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(CentrePoint, other.CentrePoint)) return false;
      if (!object.Equals(FirstConjugateDiameterPoint, other.FirstConjugateDiameterPoint)) return false;
      if (!object.Equals(SecondConjugateDiameterPoint, other.SecondConjugateDiameterPoint)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (centrePoint_ != null) hash ^= CentrePoint.GetHashCode();
      if (firstConjugateDiameterPoint_ != null) hash ^= FirstConjugateDiameterPoint.GetHashCode();
      if (secondConjugateDiameterPoint_ != null) hash ^= SecondConjugateDiameterPoint.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SecondConjugateDiameterPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondConjugateDiameterPoint);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(EllipseAsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.centrePoint_ != null) {
        if (centrePoint_ == null) {
          centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        CentrePoint.MergeFrom(other.CentrePoint);
      }
      if (other.firstConjugateDiameterPoint_ != null) {
        if (firstConjugateDiameterPoint_ == null) {
          firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        FirstConjugateDiameterPoint.MergeFrom(other.FirstConjugateDiameterPoint);
      }
      if (other.secondConjugateDiameterPoint_ != null) {
        if (secondConjugateDiameterPoint_ == null) {
          secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        SecondConjugateDiameterPoint.MergeFrom(other.SecondConjugateDiameterPoint);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (centrePoint_ == null) {
              centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(centrePoint_);
            break;
          }
          case 34: {
            if (firstConjugateDiameterPoint_ == null) {
              firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(firstConjugateDiameterPoint_);
            break;
          }
          case 42: {
            if (secondConjugateDiameterPoint_ == null) {
              secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(secondConjugateDiameterPoint_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class PointProto : pb::IMessage<PointProto> {
    private static readonly pb::MessageParser<PointProto> _parser = new pb::MessageParser<PointProto>(() => new PointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[17]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto(PointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto Clone() {
      return new PointProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private double longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private double latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        output.WriteRawTag(25);
        output.WriteDouble(Longitude);
      }
      if (Latitude != 0D) {
        output.WriteRawTag(33);
        output.WriteDouble(Latitude);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        size += 1 + 8;
      }
      if (Latitude != 0D) {
        size += 1 + 8;
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0D) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0D) {
        Latitude = other.Latitude;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 25: {
            Longitude = input.ReadDouble();
            break;
          }
          case 33: {
            Latitude = input.ReadDouble();
            break;
          }
        }
      }
    }
  }
  public sealed partial class PointShiftedIntProto : pb::IMessage<PointShiftedIntProto> {
    private static readonly pb::MessageParser<PointShiftedIntProto> _parser = new pb::MessageParser<PointShiftedIntProto>(() => new PointShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointShiftedIntProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[18]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto(PointShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto Clone() {
      return new PointShiftedIntProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private int longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }
    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private int latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointShiftedIntProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0) hash ^= Longitude.GetHashCode();
      if (Latitude != 0) hash ^= Latitude.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        output.WriteRawTag(24);
        output.WriteSInt32(Longitude);
      }
      if (Latitude != 0) {
        output.WriteRawTag(32);
        output.WriteSInt32(Latitude);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Longitude);
      }
      if (Latitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Latitude);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0) {
        Latitude = other.Latitude;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            Longitude = input.ReadSInt32();
            break;
          }
          case 32: {
            Latitude = input.ReadSInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class RangeRingsProto : pb::IMessage<RangeRingsProto> {
    private static readonly pb::MessageParser<RangeRingsProto> _parser = new pb::MessageParser<RangeRingsProto>(() => new RangeRingsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<RangeRingsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[19]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto(RangeRingsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
      rangeBetweenRings_ = other.rangeBetweenRings_;
      maximumRange_ = other.maximumRange_;
      numberOfRadials_ = other.numberOfRadials_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto Clone() {
      return new RangeRingsProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }
    /// <summary>Field number for the "RangeBetweenRings" field.</summary>
    public const int RangeBetweenRingsFieldNumber = 4;
    private float rangeBetweenRings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RangeBetweenRings {
      get { return rangeBetweenRings_; }
      set {
        rangeBetweenRings_ = value;
      }
    }
    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 5;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }
    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 6;
    private uint numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as RangeRingsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RangeRingsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      if (RangeBetweenRings != other.RangeBetweenRings) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      if (RangeBetweenRings != 0F) hash ^= RangeBetweenRings.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(RangeBetweenRings);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(MaximumRange);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(NumberOfRadials);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (NumberOfRadials != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumberOfRadials);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RangeRingsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
      if (other.RangeBetweenRings != 0F) {
        RangeBetweenRings = other.RangeBetweenRings;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
          case 37: {
            RangeBetweenRings = input.ReadFloat();
            break;
          }
          case 45: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 48: {
            NumberOfRadials = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class RangeRingsShiftedIntProto : pb::IMessage<RangeRingsShiftedIntProto> {
    private static readonly pb::MessageParser<RangeRingsShiftedIntProto> _parser = new pb::MessageParser<RangeRingsShiftedIntProto>(() => new RangeRingsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<RangeRingsShiftedIntProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[20]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto(RangeRingsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
      rangeBetweenRings_ = other.rangeBetweenRings_;
      maximumRange_ = other.maximumRange_;
      numberOfRadials_ = other.numberOfRadials_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto Clone() {
      return new RangeRingsShiftedIntProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }
    /// <summary>Field number for the "RangeBetweenRings" field.</summary>
    public const int RangeBetweenRingsFieldNumber = 4;
    private float rangeBetweenRings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RangeBetweenRings {
      get { return rangeBetweenRings_; }
      set {
        rangeBetweenRings_ = value;
      }
    }
    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 5;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }
    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 6;
    private uint numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as RangeRingsShiftedIntProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RangeRingsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      if (RangeBetweenRings != other.RangeBetweenRings) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      if (RangeBetweenRings != 0F) hash ^= RangeBetweenRings.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(RangeBetweenRings);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(MaximumRange);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(NumberOfRadials);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (NumberOfRadials != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumberOfRadials);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RangeRingsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
      if (other.RangeBetweenRings != 0F) {
        RangeBetweenRings = other.RangeBetweenRings;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
          case 37: {
            RangeBetweenRings = input.ReadFloat();
            break;
          }
          case 45: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 48: {
            NumberOfRadials = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class VolPolyAreaProto : pb::IMessage<VolPolyAreaProto> {
    private static readonly pb::MessageParser<VolPolyAreaProto> _parser = new pb::MessageParser<VolPolyAreaProto>(() => new VolPolyAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolPolyAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[21]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto(VolPolyAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto Clone() {
      return new VolPolyAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolPolyAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolPolyAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolPolyAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class VolOrbitAreaProto : pb::IMessage<VolOrbitAreaProto> {
    private static readonly pb::MessageParser<VolOrbitAreaProto> _parser = new pb::MessageParser<VolOrbitAreaProto>(() => new VolOrbitAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolOrbitAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[22]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto(VolOrbitAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      OrbitArea = other.orbitArea_ != null ? other.OrbitArea.Clone() : null;
      ShiftedIntOrbitArea = other.shiftedIntOrbitArea_ != null ? other.ShiftedIntOrbitArea.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto Clone() {
      return new VolOrbitAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }
    /// <summary>Field number for the "OrbitArea" field.</summary>
    public const int OrbitAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto orbitArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto OrbitArea {
      get { return orbitArea_; }
      set {
        orbitArea_ = value;
      }
    }
    /// <summary>Field number for the "ShiftedIntOrbitArea" field.</summary>
    public const int ShiftedIntOrbitAreaFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto shiftedIntOrbitArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto ShiftedIntOrbitArea {
      get { return shiftedIntOrbitArea_; }
      set {
        shiftedIntOrbitArea_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolOrbitAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolOrbitAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(OrbitArea, other.OrbitArea)) return false;
      if (!object.Equals(ShiftedIntOrbitArea, other.ShiftedIntOrbitArea)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (orbitArea_ != null) hash ^= OrbitArea.GetHashCode();
      if (shiftedIntOrbitArea_ != null) hash ^= ShiftedIntOrbitArea.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (orbitArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(OrbitArea);
      }
      if (shiftedIntOrbitArea_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntOrbitArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (orbitArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OrbitArea);
      }
      if (shiftedIntOrbitArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntOrbitArea);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolOrbitAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.orbitArea_ != null) {
        if (orbitArea_ == null) {
          orbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
        }
        OrbitArea.MergeFrom(other.OrbitArea);
      }
      if (other.shiftedIntOrbitArea_ != null) {
        if (shiftedIntOrbitArea_ == null) {
          shiftedIntOrbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
        }
        ShiftedIntOrbitArea.MergeFrom(other.ShiftedIntOrbitArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (orbitArea_ == null) {
              orbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
            }
            input.ReadMessage(orbitArea_);
            break;
          }
          case 42: {
            if (shiftedIntOrbitArea_ == null) {
              shiftedIntOrbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
            }
            input.ReadMessage(shiftedIntOrbitArea_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class VolFanAreaProto : pb::IMessage<VolFanAreaProto> {
    private static readonly pb::MessageParser<VolFanAreaProto> _parser = new pb::MessageParser<VolFanAreaProto>(() => new VolFanAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolFanAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[23]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto(VolFanAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      FanArea = other.fanArea_ != null ? other.FanArea.Clone() : null;
      ShiftedIntFanArea = other.shiftedIntFanArea_ != null ? other.ShiftedIntFanArea.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto Clone() {
      return new VolFanAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }
    /// <summary>Field number for the "FanArea" field.</summary>
    public const int FanAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto fanArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto FanArea {
      get { return fanArea_; }
      set {
        fanArea_ = value;
      }
    }
    /// <summary>Field number for the "ShiftedIntFanArea" field.</summary>
    public const int ShiftedIntFanAreaFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto shiftedIntFanArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto ShiftedIntFanArea {
      get { return shiftedIntFanArea_; }
      set {
        shiftedIntFanArea_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolFanAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolFanAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(FanArea, other.FanArea)) return false;
      if (!object.Equals(ShiftedIntFanArea, other.ShiftedIntFanArea)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (fanArea_ != null) hash ^= FanArea.GetHashCode();
      if (shiftedIntFanArea_ != null) hash ^= ShiftedIntFanArea.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (fanArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FanArea);
      }
      if (shiftedIntFanArea_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntFanArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (fanArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FanArea);
      }
      if (shiftedIntFanArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntFanArea);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolFanAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.fanArea_ != null) {
        if (fanArea_ == null) {
          fanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
        }
        FanArea.MergeFrom(other.FanArea);
      }
      if (other.shiftedIntFanArea_ != null) {
        if (shiftedIntFanArea_ == null) {
          shiftedIntFanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
        }
        ShiftedIntFanArea.MergeFrom(other.ShiftedIntFanArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (fanArea_ == null) {
              fanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
            }
            input.ReadMessage(fanArea_);
            break;
          }
          case 42: {
            if (shiftedIntFanArea_ == null) {
              shiftedIntFanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
            }
            input.ReadMessage(shiftedIntFanArea_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class VolEllipseProto : pb::IMessage<VolEllipseProto> {
    private static readonly pb::MessageParser<VolEllipseProto> _parser = new pb::MessageParser<VolEllipseProto>(() => new VolEllipseProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolEllipseProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[24]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto(VolEllipseProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      Ellipse = other.ellipse_ != null ? other.Ellipse.Clone() : null;
      ShiftedIntEllipse = other.shiftedIntEllipse_ != null ? other.ShiftedIntEllipse.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto Clone() {
      return new VolEllipseProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }
    /// <summary>Field number for the "Ellipse" field.</summary>
    public const int EllipseFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.EllipseProto ellipse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseProto Ellipse {
      get { return ellipse_; }
      set {
        ellipse_ = value;
      }
    }
    /// <summary>Field number for the "ShiftedIntEllipse" field.</summary>
    public const int ShiftedIntEllipseFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto shiftedIntEllipse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto ShiftedIntEllipse {
      get { return shiftedIntEllipse_; }
      set {
        shiftedIntEllipse_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolEllipseProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolEllipseProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(Ellipse, other.Ellipse)) return false;
      if (!object.Equals(ShiftedIntEllipse, other.ShiftedIntEllipse)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (ellipse_ != null) hash ^= Ellipse.GetHashCode();
      if (shiftedIntEllipse_ != null) hash ^= ShiftedIntEllipse.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (ellipse_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Ellipse);
      }
      if (shiftedIntEllipse_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntEllipse);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (ellipse_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ellipse);
      }
      if (shiftedIntEllipse_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntEllipse);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolEllipseProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.ellipse_ != null) {
        if (ellipse_ == null) {
          ellipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
        }
        Ellipse.MergeFrom(other.Ellipse);
      }
      if (other.shiftedIntEllipse_ != null) {
        if (shiftedIntEllipse_ == null) {
          shiftedIntEllipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
        }
        ShiftedIntEllipse.MergeFrom(other.ShiftedIntEllipse);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (ellipse_ == null) {
              ellipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
            }
            input.ReadMessage(ellipse_);
            break;
          }
          case 42: {
            if (shiftedIntEllipse_ == null) {
              shiftedIntEllipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
            }
            input.ReadMessage(shiftedIntEllipse_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class VolCorridorAreaProto : pb::IMessage<VolCorridorAreaProto> {
    private static readonly pb::MessageParser<VolCorridorAreaProto> _parser = new pb::MessageParser<VolCorridorAreaProto>(() => new VolCorridorAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolCorridorAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[25]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto(VolCorridorAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      CorridorArea = other.corridorArea_ != null ? other.CorridorArea.Clone() : null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto Clone() {
      return new VolCorridorAreaProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }
    /// <summary>Field number for the "CorridorArea" field.</summary>
    public const int CorridorAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto corridorArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto CorridorArea {
      get { return corridorArea_; }
      set {
        corridorArea_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolCorridorAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolCorridorAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(CorridorArea, other.CorridorArea)) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (corridorArea_ != null) hash ^= CorridorArea.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (corridorArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CorridorArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (corridorArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CorridorArea);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolCorridorAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.corridorArea_ != null) {
        if (corridorArea_ == null) {
          corridorArea_ = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
        }
        CorridorArea.MergeFrom(other.CorridorArea);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (corridorArea_ == null) {
              corridorArea_ = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
            }
            input.ReadMessage(corridorArea_);
            break;
          }
        }
      }
    }
  }
  public sealed partial class LineProto : pb::IMessage<LineProto> {
    private static readonly pb::MessageParser<LineProto> _parser = new pb::MessageParser<LineProto>(() => new LineProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LineProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[26]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto(LineProto other) : this() {
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto Clone() {
      return new LineProto(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LineProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LineProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LineProto other) {
      if (other == null) {
        return;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }
  }
  public sealed partial class PolygonAreaProto : pb::IMessage<PolygonAreaProto> {
    private static readonly pb::MessageParser<PolygonAreaProto> _parser = new pb::MessageParser<PolygonAreaProto>(() => new PolygonAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PolygonAreaProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[27]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto(PolygonAreaProto other) : this() {
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto Clone() {
      return new PolygonAreaProto(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PolygonAreaProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PolygonAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PolygonAreaProto other) {
      if (other == null) {
        return;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }
  }
  public sealed partial class SimpleDrawObjectProto : pb::IMessage<SimpleDrawObjectProto> {
    private static readonly pb::MessageParser<SimpleDrawObjectProto> _parser = new pb::MessageParser<SimpleDrawObjectProto>(() => new SimpleDrawObjectProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SimpleDrawObjectProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[28]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto(SimpleDrawObjectProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      id_ = other.id_;
      DataFields = other.dataFields_ != null ? other.DataFields.Clone() : null;
      booleanAttributes_ = other.booleanAttributes_;
      compositeDrawObjects_ = other.compositeDrawObjects_.Clone();
      switch (other.TypeFieldsobjectCase) {
        case TypeFieldsobjectOneofCase.TacticalDataFields:
          TacticalDataFields = other.TacticalDataFields.Clone();
          break;
        case TypeFieldsobjectOneofCase.GenericDataFields:
          GenericDataFields = other.GenericDataFields.Clone();
          break;
      }
      switch (other.TypeGeopointCase) {
        case TypeGeopointOneofCase.GeoPoints:
          GeoPoints = other.GeoPoints.Clone();
          break;
        case TypeGeopointOneofCase.GeoShiftedIntPoints:
          GeoShiftedIntPoints = other.GeoShiftedIntPoints.Clone();
          break;
      }
      switch (other.TypeImplementationsCase) {
        case TypeImplementationsOneofCase.CorridorArea:
          CorridorArea = other.CorridorArea.Clone();
          break;
        case TypeImplementationsOneofCase.FanArea:
          FanArea = other.FanArea.Clone();
          break;
        case TypeImplementationsOneofCase.Ellipse:
          Ellipse = other.Ellipse.Clone();
          break;
        case TypeImplementationsOneofCase.VolPolyArea:
          VolPolyArea = other.VolPolyArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolOrbitArea:
          VolOrbitArea = other.VolOrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolFanArea:
          VolFanArea = other.VolFanArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolEllipse:
          VolEllipse = other.VolEllipse.Clone();
          break;
        case TypeImplementationsOneofCase.VolCorridorArea:
          VolCorridorArea = other.VolCorridorArea.Clone();
          break;
        case TypeImplementationsOneofCase.OrbitArea:
          OrbitArea = other.OrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.Point:
          Point = other.Point.Clone();
          break;
        case TypeImplementationsOneofCase.RangeRings:
          RangeRings = other.RangeRings.Clone();
          break;
        case TypeImplementationsOneofCase.Line:
          Line = other.Line.Clone();
          break;
        case TypeImplementationsOneofCase.PolygonArea:
          PolygonArea = other.PolygonArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntPoint:
          ShiftedIntPoint = other.ShiftedIntPoint.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntOrbitArea:
          ShiftedIntOrbitArea = other.ShiftedIntOrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntEllipse:
          ShiftedIntEllipse = other.ShiftedIntEllipse.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntFanArea:
          ShiftedIntFanArea = other.ShiftedIntFanArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntRangeRings:
          ShiftedIntRangeRings = other.ShiftedIntRangeRings.Clone();
          break;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto Clone() {
      return new SimpleDrawObjectProto(this);
    }
    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }
    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }
    /// <summary>Field number for the "Id" field.</summary>
    public const int IdFieldNumber = 3;
    private string id_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Id {
      get { return id_; }
      set {
        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "data_fields" field.</summary>
    public const int DataFieldsFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto dataFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto DataFields {
      get { return dataFields_; }
      set {
        dataFields_ = value;
      }
    }
    /// <summary>Field number for the "TacticalDataFields" field.</summary>
    public const int TacticalDataFieldsFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto TacticalDataFields {
      get { return typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields ? (global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto) typeFieldsobject_ : null; }
      set {
        typeFieldsobject_ = value;
        typeFieldsobjectCase_ = value == null ? TypeFieldsobjectOneofCase.None : TypeFieldsobjectOneofCase.TacticalDataFields;
      }
    }
    /// <summary>Field number for the "GenericDataFields" field.</summary>
    public const int GenericDataFieldsFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto GenericDataFields {
      get { return typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields ? (global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto) typeFieldsobject_ : null; }
      set {
        typeFieldsobject_ = value;
        typeFieldsobjectCase_ = value == null ? TypeFieldsobjectOneofCase.None : TypeFieldsobjectOneofCase.GenericDataFields;
      }
    }
    /// <summary>Field number for the "BooleanAttributes" field.</summary>
    public const int BooleanAttributesFieldNumber = 7;
    private uint booleanAttributes_;
    /// <summary>
    ///all ISimpleDrawDrawObject boolean attributes are bitmapped into this attribute
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint BooleanAttributes {
      get { return booleanAttributes_; }
      set {
        booleanAttributes_ = value;
      }
    }
    /// <summary>Field number for the "GeoPoints" field.</summary>
    public const int GeoPointsFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto GeoPoints {
      get { return typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints ? (global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto) typeGeopoint_ : null; }
      set {
        typeGeopoint_ = value;
        typeGeopointCase_ = value == null ? TypeGeopointOneofCase.None : TypeGeopointOneofCase.GeoPoints;
      }
    }
    /// <summary>Field number for the "GeoShiftedIntPoints" field.</summary>
    public const int GeoShiftedIntPointsFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto GeoShiftedIntPoints {
      get { return typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints ? (global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto) typeGeopoint_ : null; }
      set {
        typeGeopoint_ = value;
        typeGeopointCase_ = value == null ? TypeGeopointOneofCase.None : TypeGeopointOneofCase.GeoShiftedIntPoints;
      }
    }
    /// <summary>Field number for the "CorridorArea" field.</summary>
    public const int CorridorAreaFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto CorridorArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea ? (global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.CorridorArea;
      }
    }
    /// <summary>Field number for the "FanArea" field.</summary>
    public const int FanAreaFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto FanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea ? (global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.FanArea;
      }
    }
    /// <summary>Field number for the "Ellipse" field.</summary>
    public const int EllipseFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseProto Ellipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse ? (global::TPG.DrawObjects.Serialize.Protoc.EllipseProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Ellipse;
      }
    }
    /// <summary>Field number for the "VolPolyArea" field.</summary>
    public const int VolPolyAreaFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto VolPolyArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolPolyArea;
      }
    }
    /// <summary>Field number for the "VolOrbitArea" field.</summary>
    public const int VolOrbitAreaFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto VolOrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolOrbitArea;
      }
    }
    /// <summary>Field number for the "VolFanArea" field.</summary>
    public const int VolFanAreaFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto VolFanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolFanArea;
      }
    }
    /// <summary>Field number for the "VolEllipse" field.</summary>
    public const int VolEllipseFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto VolEllipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse ? (global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolEllipse;
      }
    }
    /// <summary>Field number for the "VolCorridorArea" field.</summary>
    public const int VolCorridorAreaFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto VolCorridorArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolCorridorArea;
      }
    }
    /// <summary>Field number for the "OrbitArea" field.</summary>
    public const int OrbitAreaFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto OrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.OrbitArea;
      }
    }
    /// <summary>Field number for the "Point" field.</summary>
    public const int PointFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PointProto Point {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Point ? (global::TPG.DrawObjects.Serialize.Protoc.PointProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Point;
      }
    }
    /// <summary>Field number for the "RangeRings" field.</summary>
    public const int RangeRingsFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto RangeRings {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings ? (global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.RangeRings;
      }
    }
    /// <summary>Field number for the "Line" field.</summary>
    public const int LineFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.LineProto Line {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Line ? (global::TPG.DrawObjects.Serialize.Protoc.LineProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Line;
      }
    }
    /// <summary>Field number for the "PolygonArea" field.</summary>
    public const int PolygonAreaFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto PolygonArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea ? (global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.PolygonArea;
      }
    }
    /// <summary>Field number for the "ShiftedIntPoint" field.</summary>
    public const int ShiftedIntPointFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto ShiftedIntPoint {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint ? (global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntPoint;
      }
    }
    /// <summary>Field number for the "ShiftedIntOrbitArea" field.</summary>
    public const int ShiftedIntOrbitAreaFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto ShiftedIntOrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntOrbitArea;
      }
    }
    /// <summary>Field number for the "ShiftedIntEllipse" field.</summary>
    public const int ShiftedIntEllipseFieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto ShiftedIntEllipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse ? (global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntEllipse;
      }
    }
    /// <summary>Field number for the "ShiftedIntFanArea" field.</summary>
    public const int ShiftedIntFanAreaFieldNumber = 26;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto ShiftedIntFanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea ? (global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntFanArea;
      }
    }
    /// <summary>Field number for the "ShiftedIntRangeRings" field.</summary>
    public const int ShiftedIntRangeRingsFieldNumber = 27;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto ShiftedIntRangeRings {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings ? (global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntRangeRings;
      }
    }
    /// <summary>Field number for the "composite_draw_objects" field.</summary>
    public const int CompositeDrawObjectsFieldNumber = 28;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> _repeated_compositeDrawObjects_codec
        = pb::FieldCodec.ForMessage(226, global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> compositeDrawObjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> CompositeDrawObjects {
      get { return compositeDrawObjects_; }
    }
    private object typeFieldsobject_;
    /// <summary>Enum of possible cases for the "type_fieldsobject" oneof.</summary>
    public enum TypeFieldsobjectOneofCase {
      None = 0,
      TacticalDataFields = 5,
      GenericDataFields = 6,
    }
    private TypeFieldsobjectOneofCase typeFieldsobjectCase_ = TypeFieldsobjectOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeFieldsobjectOneofCase TypeFieldsobjectCase {
      get { return typeFieldsobjectCase_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeFieldsobject() {
      typeFieldsobjectCase_ = TypeFieldsobjectOneofCase.None;
      typeFieldsobject_ = null;
    }
    private object typeGeopoint_;
    /// <summary>Enum of possible cases for the "type_geopoint" oneof.</summary>
    public enum TypeGeopointOneofCase {
      None = 0,
      GeoPoints = 8,
      GeoShiftedIntPoints = 9,
    }
    private TypeGeopointOneofCase typeGeopointCase_ = TypeGeopointOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeGeopointOneofCase TypeGeopointCase {
      get { return typeGeopointCase_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeGeopoint() {
      typeGeopointCase_ = TypeGeopointOneofCase.None;
      typeGeopoint_ = null;
    }
    private object typeImplementations_;
    /// <summary>Enum of possible cases for the "type_implementations" oneof.</summary>
    public enum TypeImplementationsOneofCase {
      None = 0,
      CorridorArea = 10,
      FanArea = 11,
      Ellipse = 12,
      VolPolyArea = 13,
      VolOrbitArea = 14,
      VolFanArea = 15,
      VolEllipse = 16,
      VolCorridorArea = 17,
      OrbitArea = 18,
      Point = 19,
      RangeRings = 20,
      Line = 21,
      PolygonArea = 22,
      ShiftedIntPoint = 23,
      ShiftedIntOrbitArea = 24,
      ShiftedIntEllipse = 25,
      ShiftedIntFanArea = 26,
      ShiftedIntRangeRings = 27,
    }
    private TypeImplementationsOneofCase typeImplementationsCase_ = TypeImplementationsOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeImplementationsOneofCase TypeImplementationsCase {
      get { return typeImplementationsCase_; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeImplementations() {
      typeImplementationsCase_ = TypeImplementationsOneofCase.None;
      typeImplementations_ = null;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SimpleDrawObjectProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SimpleDrawObjectProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Id != other.Id) return false;
      if (!object.Equals(DataFields, other.DataFields)) return false;
      if (!object.Equals(TacticalDataFields, other.TacticalDataFields)) return false;
      if (!object.Equals(GenericDataFields, other.GenericDataFields)) return false;
      if (BooleanAttributes != other.BooleanAttributes) return false;
      if (!object.Equals(GeoPoints, other.GeoPoints)) return false;
      if (!object.Equals(GeoShiftedIntPoints, other.GeoShiftedIntPoints)) return false;
      if (!object.Equals(CorridorArea, other.CorridorArea)) return false;
      if (!object.Equals(FanArea, other.FanArea)) return false;
      if (!object.Equals(Ellipse, other.Ellipse)) return false;
      if (!object.Equals(VolPolyArea, other.VolPolyArea)) return false;
      if (!object.Equals(VolOrbitArea, other.VolOrbitArea)) return false;
      if (!object.Equals(VolFanArea, other.VolFanArea)) return false;
      if (!object.Equals(VolEllipse, other.VolEllipse)) return false;
      if (!object.Equals(VolCorridorArea, other.VolCorridorArea)) return false;
      if (!object.Equals(OrbitArea, other.OrbitArea)) return false;
      if (!object.Equals(Point, other.Point)) return false;
      if (!object.Equals(RangeRings, other.RangeRings)) return false;
      if (!object.Equals(Line, other.Line)) return false;
      if (!object.Equals(PolygonArea, other.PolygonArea)) return false;
      if (!object.Equals(ShiftedIntPoint, other.ShiftedIntPoint)) return false;
      if (!object.Equals(ShiftedIntOrbitArea, other.ShiftedIntOrbitArea)) return false;
      if (!object.Equals(ShiftedIntEllipse, other.ShiftedIntEllipse)) return false;
      if (!object.Equals(ShiftedIntFanArea, other.ShiftedIntFanArea)) return false;
      if (!object.Equals(ShiftedIntRangeRings, other.ShiftedIntRangeRings)) return false;
      if(!compositeDrawObjects_.Equals(other.compositeDrawObjects_)) return false;
      if (TypeFieldsobjectCase != other.TypeFieldsobjectCase) return false;
      if (TypeGeopointCase != other.TypeGeopointCase) return false;
      if (TypeImplementationsCase != other.TypeImplementationsCase) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Id.Length != 0) hash ^= Id.GetHashCode();
      if (dataFields_ != null) hash ^= DataFields.GetHashCode();
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) hash ^= TacticalDataFields.GetHashCode();
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) hash ^= GenericDataFields.GetHashCode();
      if (BooleanAttributes != 0) hash ^= BooleanAttributes.GetHashCode();
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) hash ^= GeoPoints.GetHashCode();
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) hash ^= GeoShiftedIntPoints.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) hash ^= CorridorArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) hash ^= FanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) hash ^= Ellipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) hash ^= VolPolyArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) hash ^= VolOrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) hash ^= VolFanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) hash ^= VolEllipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) hash ^= VolCorridorArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) hash ^= OrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) hash ^= Point.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) hash ^= RangeRings.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) hash ^= Line.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) hash ^= PolygonArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) hash ^= ShiftedIntPoint.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) hash ^= ShiftedIntOrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) hash ^= ShiftedIntEllipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) hash ^= ShiftedIntFanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) hash ^= ShiftedIntRangeRings.GetHashCode();
      hash ^= compositeDrawObjects_.GetHashCode();
      hash ^= (int) typeFieldsobjectCase_;
      hash ^= (int) typeGeopointCase_;
      hash ^= (int) typeImplementationsCase_;
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Id.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Id);
      }
      if (dataFields_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(DataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
        output.WriteRawTag(42);
        output.WriteMessage(TacticalDataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
        output.WriteRawTag(50);
        output.WriteMessage(GenericDataFields);
      }
      if (BooleanAttributes != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(BooleanAttributes);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
        output.WriteRawTag(66);
        output.WriteMessage(GeoPoints);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
        output.WriteRawTag(74);
        output.WriteMessage(GeoShiftedIntPoints);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
        output.WriteRawTag(82);
        output.WriteMessage(CorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
        output.WriteRawTag(90);
        output.WriteMessage(FanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
        output.WriteRawTag(98);
        output.WriteMessage(Ellipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
        output.WriteRawTag(106);
        output.WriteMessage(VolPolyArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
        output.WriteRawTag(114);
        output.WriteMessage(VolOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
        output.WriteRawTag(122);
        output.WriteMessage(VolFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(VolEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(VolCorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(OrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(Point);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(RangeRings);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Line);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(PolygonArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(ShiftedIntPoint);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(ShiftedIntOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(ShiftedIntEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(ShiftedIntFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ShiftedIntRangeRings);
      }
      compositeDrawObjects_.WriteTo(output, _repeated_compositeDrawObjects_codec);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Id.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
      }
      if (dataFields_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TacticalDataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GenericDataFields);
      }
      if (BooleanAttributes != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(BooleanAttributes);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GeoPoints);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GeoShiftedIntPoints);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ellipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolPolyArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(VolEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(VolCorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Point);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(RangeRings);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Line);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(PolygonArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntPoint);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntRangeRings);
      }
      size += compositeDrawObjects_.CalculateSize(_repeated_compositeDrawObjects_codec);
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SimpleDrawObjectProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      if (other.dataFields_ != null) {
        if (dataFields_ == null) {
          dataFields_ = new global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto();
        }
        DataFields.MergeFrom(other.DataFields);
      }
      if (other.BooleanAttributes != 0) {
        BooleanAttributes = other.BooleanAttributes;
      }
      compositeDrawObjects_.Add(other.compositeDrawObjects_);
      switch (other.TypeFieldsobjectCase) {
        case TypeFieldsobjectOneofCase.TacticalDataFields:
          TacticalDataFields = other.TacticalDataFields;
          break;
        case TypeFieldsobjectOneofCase.GenericDataFields:
          GenericDataFields = other.GenericDataFields;
          break;
      }
      switch (other.TypeGeopointCase) {
        case TypeGeopointOneofCase.GeoPoints:
          GeoPoints = other.GeoPoints;
          break;
        case TypeGeopointOneofCase.GeoShiftedIntPoints:
          GeoShiftedIntPoints = other.GeoShiftedIntPoints;
          break;
      }
      switch (other.TypeImplementationsCase) {
        case TypeImplementationsOneofCase.CorridorArea:
          CorridorArea = other.CorridorArea;
          break;
        case TypeImplementationsOneofCase.FanArea:
          FanArea = other.FanArea;
          break;
        case TypeImplementationsOneofCase.Ellipse:
          Ellipse = other.Ellipse;
          break;
        case TypeImplementationsOneofCase.VolPolyArea:
          VolPolyArea = other.VolPolyArea;
          break;
        case TypeImplementationsOneofCase.VolOrbitArea:
          VolOrbitArea = other.VolOrbitArea;
          break;
        case TypeImplementationsOneofCase.VolFanArea:
          VolFanArea = other.VolFanArea;
          break;
        case TypeImplementationsOneofCase.VolEllipse:
          VolEllipse = other.VolEllipse;
          break;
        case TypeImplementationsOneofCase.VolCorridorArea:
          VolCorridorArea = other.VolCorridorArea;
          break;
        case TypeImplementationsOneofCase.OrbitArea:
          OrbitArea = other.OrbitArea;
          break;
        case TypeImplementationsOneofCase.Point:
          Point = other.Point;
          break;
        case TypeImplementationsOneofCase.RangeRings:
          RangeRings = other.RangeRings;
          break;
        case TypeImplementationsOneofCase.Line:
          Line = other.Line;
          break;
        case TypeImplementationsOneofCase.PolygonArea:
          PolygonArea = other.PolygonArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntPoint:
          ShiftedIntPoint = other.ShiftedIntPoint;
          break;
        case TypeImplementationsOneofCase.ShiftedIntOrbitArea:
          ShiftedIntOrbitArea = other.ShiftedIntOrbitArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntEllipse:
          ShiftedIntEllipse = other.ShiftedIntEllipse;
          break;
        case TypeImplementationsOneofCase.ShiftedIntFanArea:
          ShiftedIntFanArea = other.ShiftedIntFanArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntRangeRings:
          ShiftedIntRangeRings = other.ShiftedIntRangeRings;
          break;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            Id = input.ReadString();
            break;
          }
          case 34: {
            if (dataFields_ == null) {
              dataFields_ = new global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto();
            }
            input.ReadMessage(dataFields_);
            break;
          }
          case 42: {
            global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto();
            if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
              subBuilder.MergeFrom(TacticalDataFields);
            }
            input.ReadMessage(subBuilder);
            TacticalDataFields = subBuilder;
            break;
          }
          case 50: {
            global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto();
            if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
              subBuilder.MergeFrom(GenericDataFields);
            }
            input.ReadMessage(subBuilder);
            GenericDataFields = subBuilder;
            break;
          }
          case 56: {
            BooleanAttributes = input.ReadUInt32();
            break;
          }
          case 66: {
            global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto();
            if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
              subBuilder.MergeFrom(GeoPoints);
            }
            input.ReadMessage(subBuilder);
            GeoPoints = subBuilder;
            break;
          }
          case 74: {
            global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto();
            if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
              subBuilder.MergeFrom(GeoShiftedIntPoints);
            }
            input.ReadMessage(subBuilder);
            GeoShiftedIntPoints = subBuilder;
            break;
          }
          case 82: {
            global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
              subBuilder.MergeFrom(CorridorArea);
            }
            input.ReadMessage(subBuilder);
            CorridorArea = subBuilder;
            break;
          }
          case 90: {
            global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
              subBuilder.MergeFrom(FanArea);
            }
            input.ReadMessage(subBuilder);
            FanArea = subBuilder;
            break;
          }
          case 98: {
            global::TPG.DrawObjects.Serialize.Protoc.EllipseProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
              subBuilder.MergeFrom(Ellipse);
            }
            input.ReadMessage(subBuilder);
            Ellipse = subBuilder;
            break;
          }
          case 106: {
            global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
              subBuilder.MergeFrom(VolPolyArea);
            }
            input.ReadMessage(subBuilder);
            VolPolyArea = subBuilder;
            break;
          }
          case 114: {
            global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
              subBuilder.MergeFrom(VolOrbitArea);
            }
            input.ReadMessage(subBuilder);
            VolOrbitArea = subBuilder;
            break;
          }
          case 122: {
            global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
              subBuilder.MergeFrom(VolFanArea);
            }
            input.ReadMessage(subBuilder);
            VolFanArea = subBuilder;
            break;
          }
          case 130: {
            global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
              subBuilder.MergeFrom(VolEllipse);
            }
            input.ReadMessage(subBuilder);
            VolEllipse = subBuilder;
            break;
          }
          case 138: {
            global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
              subBuilder.MergeFrom(VolCorridorArea);
            }
            input.ReadMessage(subBuilder);
            VolCorridorArea = subBuilder;
            break;
          }
          case 146: {
            global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
              subBuilder.MergeFrom(OrbitArea);
            }
            input.ReadMessage(subBuilder);
            OrbitArea = subBuilder;
            break;
          }
          case 154: {
            global::TPG.DrawObjects.Serialize.Protoc.PointProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PointProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
              subBuilder.MergeFrom(Point);
            }
            input.ReadMessage(subBuilder);
            Point = subBuilder;
            break;
          }
          case 162: {
            global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
              subBuilder.MergeFrom(RangeRings);
            }
            input.ReadMessage(subBuilder);
            RangeRings = subBuilder;
            break;
          }
          case 170: {
            global::TPG.DrawObjects.Serialize.Protoc.LineProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.LineProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
              subBuilder.MergeFrom(Line);
            }
            input.ReadMessage(subBuilder);
            Line = subBuilder;
            break;
          }
          case 178: {
            global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
              subBuilder.MergeFrom(PolygonArea);
            }
            input.ReadMessage(subBuilder);
            PolygonArea = subBuilder;
            break;
          }
          case 186: {
            global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
              subBuilder.MergeFrom(ShiftedIntPoint);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntPoint = subBuilder;
            break;
          }
          case 194: {
            global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
              subBuilder.MergeFrom(ShiftedIntOrbitArea);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntOrbitArea = subBuilder;
            break;
          }
          case 202: {
            global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
              subBuilder.MergeFrom(ShiftedIntEllipse);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntEllipse = subBuilder;
            break;
          }
          case 210: {
            global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
              subBuilder.MergeFrom(ShiftedIntFanArea);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntFanArea = subBuilder;
            break;
          }
          case 218: {
            global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
              subBuilder.MergeFrom(ShiftedIntRangeRings);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntRangeRings = subBuilder;
            break;
          }
          case 226: {
            compositeDrawObjects_.AddEntriesFrom(input, _repeated_compositeDrawObjects_codec);
            break;
          }
        }
      }
    }
  }
  public sealed partial class SimpleDrawObjectsProto : pb::IMessage<SimpleDrawObjectsProto> {
    private static readonly pb::MessageParser<SimpleDrawObjectsProto> _parser = new pb::MessageParser<SimpleDrawObjectsProto>(() => new SimpleDrawObjectsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SimpleDrawObjectsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[29]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto(SimpleDrawObjectsProto other) : this() {
      drawobjects_ = other.drawobjects_.Clone();
      dataVersion_ = other.dataVersion_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto Clone() {
      return new SimpleDrawObjectsProto(this);
    }
    /// <summary>Field number for the "drawobjects" field.</summary>
    public const int DrawobjectsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> _repeated_drawobjects_codec
        = pb::FieldCodec.ForMessage(10, global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> drawobjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> Drawobjects {
      get { return drawobjects_; }
    }
    /// <summary>Field number for the "data_version" field.</summary>
    public const int DataVersionFieldNumber = 2;
    private uint dataVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint DataVersion {
      get { return dataVersion_; }
      set {
        dataVersion_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SimpleDrawObjectsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SimpleDrawObjectsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!drawobjects_.Equals(other.drawobjects_)) return false;
      if (DataVersion != other.DataVersion) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= drawobjects_.GetHashCode();
      if (DataVersion != 0) hash ^= DataVersion.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      drawobjects_.WriteTo(output, _repeated_drawobjects_codec);
      if (DataVersion != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(DataVersion);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += drawobjects_.CalculateSize(_repeated_drawobjects_codec);
      if (DataVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DataVersion);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SimpleDrawObjectsProto other) {
      if (other == null) {
        return;
      }
      drawobjects_.Add(other.drawobjects_);
      if (other.DataVersion != 0) {
        DataVersion = other.DataVersion;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            drawobjects_.AddEntriesFrom(input, _repeated_drawobjects_codec);
            break;
          }
          case 16: {
            DataVersion = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class DrawObjectProto : pb::IMessage<DrawObjectProto> {
    private static readonly pb::MessageParser<DrawObjectProto> _parser = new pb::MessageParser<DrawObjectProto>(() => new DrawObjectProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DrawObjectProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[30]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto(DrawObjectProto other) : this() {
      Simpledrawobject = other.simpledrawobject_ != null ? other.Simpledrawobject.Clone() : null;
      c2525Code_ = other.c2525Code_;
      useDefaultEnums_ = other.useDefaultEnums_;
      useDefaultValuesInDataFields_ = other.useDefaultValuesInDataFields_;
      useDefaultValuesInExtendedFields_ = other.useDefaultValuesInExtendedFields_;
      useDefaultValuesInTypeFields_ = other.useDefaultValuesInTypeFields_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto Clone() {
      return new DrawObjectProto(this);
    }
    /// <summary>Field number for the "simpledrawobject" field.</summary>
    public const int SimpledrawobjectFieldNumber = 1;
    private global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto simpledrawobject_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto Simpledrawobject {
      get { return simpledrawobject_; }
      set {
        simpledrawobject_ = value;
      }
    }
    /// <summary>Field number for the "c2525Code" field.</summary>
    public const int C2525CodeFieldNumber = 2;
    private string c2525Code_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string C2525Code {
      get { return c2525Code_; }
      set {
        c2525Code_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Field number for the "UseDefaultEnums" field.</summary>
    public const int UseDefaultEnumsFieldNumber = 3;
    private uint useDefaultEnums_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultEnums {
      get { return useDefaultEnums_; }
      set {
        useDefaultEnums_ = value;
      }
    }
    /// <summary>Field number for the "UseDefaultValuesInDataFields" field.</summary>
    public const int UseDefaultValuesInDataFieldsFieldNumber = 4;
    private uint useDefaultValuesInDataFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInDataFields {
      get { return useDefaultValuesInDataFields_; }
      set {
        useDefaultValuesInDataFields_ = value;
      }
    }
    /// <summary>Field number for the "UseDefaultValuesInExtendedFields" field.</summary>
    public const int UseDefaultValuesInExtendedFieldsFieldNumber = 5;
    private uint useDefaultValuesInExtendedFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInExtendedFields {
      get { return useDefaultValuesInExtendedFields_; }
      set {
        useDefaultValuesInExtendedFields_ = value;
      }
    }
    /// <summary>Field number for the "UseDefaultValuesInTypeFields" field.</summary>
    public const int UseDefaultValuesInTypeFieldsFieldNumber = 6;
    private uint useDefaultValuesInTypeFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInTypeFields {
      get { return useDefaultValuesInTypeFields_; }
      set {
        useDefaultValuesInTypeFields_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DrawObjectProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DrawObjectProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Simpledrawobject, other.Simpledrawobject)) return false;
      if (C2525Code != other.C2525Code) return false;
      if (UseDefaultEnums != other.UseDefaultEnums) return false;
      if (UseDefaultValuesInDataFields != other.UseDefaultValuesInDataFields) return false;
      if (UseDefaultValuesInExtendedFields != other.UseDefaultValuesInExtendedFields) return false;
      if (UseDefaultValuesInTypeFields != other.UseDefaultValuesInTypeFields) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (simpledrawobject_ != null) hash ^= Simpledrawobject.GetHashCode();
      if (C2525Code.Length != 0) hash ^= C2525Code.GetHashCode();
      if (UseDefaultEnums != 0) hash ^= UseDefaultEnums.GetHashCode();
      if (UseDefaultValuesInDataFields != 0) hash ^= UseDefaultValuesInDataFields.GetHashCode();
      if (UseDefaultValuesInExtendedFields != 0) hash ^= UseDefaultValuesInExtendedFields.GetHashCode();
      if (UseDefaultValuesInTypeFields != 0) hash ^= UseDefaultValuesInTypeFields.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (simpledrawobject_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Simpledrawobject);
      }
      if (C2525Code.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(C2525Code);
      }
      if (UseDefaultEnums != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(UseDefaultEnums);
      }
      if (UseDefaultValuesInDataFields != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(UseDefaultValuesInDataFields);
      }
      if (UseDefaultValuesInExtendedFields != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(UseDefaultValuesInExtendedFields);
      }
      if (UseDefaultValuesInTypeFields != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(UseDefaultValuesInTypeFields);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (simpledrawobject_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Simpledrawobject);
      }
      if (C2525Code.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(C2525Code);
      }
      if (UseDefaultEnums != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultEnums);
      }
      if (UseDefaultValuesInDataFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInDataFields);
      }
      if (UseDefaultValuesInExtendedFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInExtendedFields);
      }
      if (UseDefaultValuesInTypeFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInTypeFields);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DrawObjectProto other) {
      if (other == null) {
        return;
      }
      if (other.simpledrawobject_ != null) {
        if (simpledrawobject_ == null) {
          simpledrawobject_ = new global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto();
        }
        Simpledrawobject.MergeFrom(other.Simpledrawobject);
      }
      if (other.C2525Code.Length != 0) {
        C2525Code = other.C2525Code;
      }
      if (other.UseDefaultEnums != 0) {
        UseDefaultEnums = other.UseDefaultEnums;
      }
      if (other.UseDefaultValuesInDataFields != 0) {
        UseDefaultValuesInDataFields = other.UseDefaultValuesInDataFields;
      }
      if (other.UseDefaultValuesInExtendedFields != 0) {
        UseDefaultValuesInExtendedFields = other.UseDefaultValuesInExtendedFields;
      }
      if (other.UseDefaultValuesInTypeFields != 0) {
        UseDefaultValuesInTypeFields = other.UseDefaultValuesInTypeFields;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (simpledrawobject_ == null) {
              simpledrawobject_ = new global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto();
            }
            input.ReadMessage(simpledrawobject_);
            break;
          }
          case 18: {
            C2525Code = input.ReadString();
            break;
          }
          case 24: {
            UseDefaultEnums = input.ReadUInt32();
            break;
          }
          case 32: {
            UseDefaultValuesInDataFields = input.ReadUInt32();
            break;
          }
          case 40: {
            UseDefaultValuesInExtendedFields = input.ReadUInt32();
            break;
          }
          case 48: {
            UseDefaultValuesInTypeFields = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  public sealed partial class DrawObjectsProto : pb::IMessage<DrawObjectsProto> {
    private static readonly pb::MessageParser<DrawObjectsProto> _parser = new pb::MessageParser<DrawObjectsProto>(() => new DrawObjectsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DrawObjectsProto> Parser { get { return _parser; } }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[31]; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto() {
      OnConstruction();
    }
    partial void OnConstruction();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto(DrawObjectsProto other) : this() {
      drawobjects_ = other.drawobjects_.Clone();
      dataVersion_ = other.dataVersion_;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto Clone() {
      return new DrawObjectsProto(this);
    }
    /// <summary>Field number for the "drawobjects" field.</summary>
    public const int DrawobjectsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> _repeated_drawobjects_codec
        = pb::FieldCodec.ForMessage(10, global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> drawobjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> Drawobjects {
      get { return drawobjects_; }
    }
    /// <summary>Field number for the "data_version" field.</summary>
    public const int DataVersionFieldNumber = 2;
    private uint dataVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint DataVersion {
      get { return dataVersion_; }
      set {
        dataVersion_ = value;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DrawObjectsProto);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DrawObjectsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!drawobjects_.Equals(other.drawobjects_)) return false;
      if (DataVersion != other.DataVersion) return false;
      return true;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= drawobjects_.GetHashCode();
      if (DataVersion != 0) hash ^= DataVersion.GetHashCode();
      return hash;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      drawobjects_.WriteTo(output, _repeated_drawobjects_codec);
      if (DataVersion != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(DataVersion);
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += drawobjects_.CalculateSize(_repeated_drawobjects_codec);
      if (DataVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DataVersion);
      }
      return size;
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DrawObjectsProto other) {
      if (other == null) {
        return;
      }
      drawobjects_.Add(other.drawobjects_);
      if (other.DataVersion != 0) {
        DataVersion = other.DataVersion;
      }
    }
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            drawobjects_.AddEntriesFrom(input, _repeated_drawobjects_codec);
            break;
          }
          case 16: {
            DataVersion = input.ReadUInt32();
            break;
          }
        }
      }
    }
  }
  #endregion
}
#endregion Designer generated code
</source>

Revision as of 12:33, 1 August 2019

Her skal Mari leke.

This is an error! Or maybe a warning!
Tip: Here is a good tip!
Remember to always do the thing

Gigantisk haug med kode:

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: simpledrawobject.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace TPG.DrawObjects.Serialize.Protoc {

  /// <summary>Holder for reflection information generated from simpledrawobject.proto</summary>
  public static partial class SimpledrawobjectReflection {

    #region Descriptor
    /// <summary>File descriptor for simpledrawobject.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static SimpledrawobjectReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChZzaW1wbGVkcmF3b2JqZWN0LnByb3RvEgh0dXRvcmlhbCLmAgoNR2VvUG9p",
            "bnRQcm90bxJACg1maWVsZF9pbmRleGVzGAEgAygLMikudHV0b3JpYWwuR2Vv",
            "UG9pbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2luZGV4",
            "ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgBEhAKCGxhdGl0dWRlGAQgASgB",
            "EgwKBFRleHQYBSABKAkSEAoIYWx0aXR1ZGUYBiABKAESRwoQcG9pbnRJbmZv",
            "cm1hdGlvbhgHIAMoCzItLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8uUG9pbnRJ",
            "bmZvcm1hdGlvbkVudHJ5GjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVUG9pbnRJbmZvcm1hdGlvbkVu",
            "dHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEihAMKF0dlb1No",
            "aWZ0ZWRJbnRQb2ludFByb3RvEkoKDWZpZWxkX2luZGV4ZXMYASADKAsyMy50",
            "dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90by5GaWVsZEluZGV4ZXNF",
            "bnRyeRIXCg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMg",
            "ASgREhAKCGxhdGl0dWRlGAQgASgREgwKBFRleHQYBSABKAkSEAoIYWx0aXR1",
            "ZGUYBiABKAESUQoQcG9pbnRJbmZvcm1hdGlvbhgHIAMoCzI3LnR1dG9yaWFs",
            "Lkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvLlBvaW50SW5mb3JtYXRpb25FbnRy",
            "eRozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUY",
            "AiABKAk6AjgBGjcKFVBvaW50SW5mb3JtYXRpb25FbnRyeRILCgNrZXkYASAB",
            "KAkSDQoFdmFsdWUYAiABKAk6AjgBInMKEFBvaW50SW5mb3JtYXRpb24SMgoE",
            "aW5mbxgBIAMoCzIkLnR1dG9yaWFsLlBvaW50SW5mb3JtYXRpb24uSW5mb0Vu",
            "dHJ5GisKCUluZm9FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6",
            "AjgBIowBChRHZW9Eb3VibGVQb2ludHNQcm90bxIRCglsb25naXR1ZGUYASAD",
            "KAESEAoIbGF0aXR1ZGUYAiADKAESDAoEVGV4dBgDIAMoCRIQCghhbHRpdHVk",
            "ZRgEIAMoARIvCgtpbmZvcm1hdGlvbhgFIAMoCzIaLnR1dG9yaWFsLlBvaW50",
            "SW5mb3JtYXRpb24ikAEKGEdlb1NoaWZ0ZWRJbnRQb2ludHNQcm90bxIRCgls",
            "b25naXR1ZGUYASADKBESEAoIbGF0aXR1ZGUYAiADKBESDAoEVGV4dBgDIAMo",
            "CRIQCghhbHRpdHVkZRgEIAMoARIvCgtpbmZvcm1hdGlvbhgFIAMoCzIaLnR1",
            "dG9yaWFsLlBvaW50SW5mb3JtYXRpb24i4gUKD0RhdGFGaWVsZHNQcm90bxJC",
            "Cg1maWVsZF9pbmRleGVzGAEgAygLMisudHV0b3JpYWwuRGF0YUZpZWxkc1By",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIMCgRuYW1lGAMgASgJEhUKDUhpZXJhcmNoeUNvZGUYBCABKAkSEQoJRHJh",
            "d0RlcHRoGAUgASgFEhUKDVJvdGF0aW9uQW5nbGUYBiABKAISDwoHVmVyc2lv",
            "bhgHIAEoDRITCgtBbHBoYUZhY3RvchgIIAEoAhIeChZNb3ZlbWVudEluZGlj",
            "YXRvckNvbG9yGAkgASgNEiQKHE9mZnNldExvY2F0aW9uSW5kaWNhdG9yQ29s",
            "b3IYCiABKA0SFQoNTGFiZWxGb250TmFtZRgLIAEoCRIVCg1MYWJlbEZvbnRT",
            "aXplGAwgASgNEiAKGExhYmVsRm9udEZvcmVncm91bmRDb2xvchgNIAEoDRIX",
            "Cg9NaW5EeW5hbWljU2NhbGUYDiABKAISFwoPTWF4RHluYW1pY1NjYWxlGA8g",
            "ASgCEj8KC0V4dHJhRmllbGRzGBAgAygLMioudHV0b3JpYWwuRGF0YUZpZWxk",
            "c1Byb3RvLkV4dHJhRmllbGRzRW50cnkSTwoTVGFjdGljYWxFeHRyYUZpZWxk",
            "cxgRIAMoCzIyLnR1dG9yaWFsLkRhdGFGaWVsZHNQcm90by5UYWN0aWNhbEV4",
            "dHJhRmllbGRzRW50cnkaMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEg",
            "ASgNEg0KBXZhbHVlGAIgASgJOgI4ARoyChBFeHRyYUZpZWxkc0VudHJ5EgsK",
            "A2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaOgoYVGFjdGljYWxFeHRy",
            "YUZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi",
            "lAQKE1RhY3RpY2FsRmllbGRzUHJvdG8SRgoNZmllbGRfaW5kZXhlcxgBIAMo",
            "CzIvLnR1dG9yaWFsLlRhY3RpY2FsRmllbGRzUHJvdG8uRmllbGRJbmRleGVz",
            "RW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhgKEE1pbmVmaWVsZE9w",
            "YWNpdHkYAyABKAISFwoPU3ltYm9sSW5kaWNhdG9yGAQgASgJEh0KFUFkZGl0",
            "aW9uYWxJbmZvcm1hdGlvbhgFIAMoCRIZChFVbmlxdWVEZXNpZ25hdGlvbhgG",
            "IAMoCRIVCg1EYXRlVGltZUdyb3VwGAcgAygJEiMKG09mZnNldExvY2F0aW9u",
            "RGlzcGxhY2VtZW50WBgIIAEoAhIjChtPZmZzZXRMb2NhdGlvbkRpc3BsYWNl",
            "bWVudFkYCSABKAISEAoIUXVhbnRpdHkYCiABKAISGQoRTnVjbGVhcldlYXBv",
            "blR5cGUYCyABKAkSGwoTRGlyZWN0aW9uT2ZNb3ZlbWVudBgMIAEoCRIVCg1B",
            "bHRpdHVkZURlcHRoGA0gASgCEhAKCERpc3RhbmNlGA4gASgCEg8KB0F6aW11",
            "dGgYDyABKAISFQoNVGFjdGljYWxFbnVtcxgQIAEoBxozChFGaWVsZEluZGV4",
            "ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIrMHChJH",
            "ZW5lcmljRmllbGRzUHJvdG8SRQoNZmllbGRfaW5kZXhlcxgBIAMoCzIuLnR1",
            "dG9yaWFsLkdlbmVyaWNGaWVsZHNQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIX",
            "Cg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJTGluZUNvbG9yGAMgASgNEhUK",
            "DUxpbmVEYXNoU3R5bGUYBCADKAISGwoTTGluZURhc2hTdHlsZU9mZnNldBgF",
            "IAEoAhIXCg9DZW50ZXJMaW5lV2lkdGgYBiABKAISFwoPQ2VudGVyTGluZUNv",
            "bG9yGAcgASgNEhsKE0NlbnRlckxpbmVEYXNoU3R5bGUYCCADKAISIQoZQ2Vu",
            "dGVyTGluZURhc2hTdHlsZU9mZnNldBgJIAEoAhIRCglMaW5lV2lkdGgYCiAB",
            "KAISGAoQTGluZU91dGxpbmVXaWR0aBgLIAEoAhIYChBMaW5lT3V0bGluZUNv",
            "bG9yGAwgASgNEhsKE0ZpbGxGb3JlZ3JvdW5kQ29sb3IYDSABKA0SGwoTRmls",
            "bEJhY2tncm91bmRDb2xvchgOIAEoDRIXCg9CdWZmZXJMaW5lQ29sb3IYDyAB",
            "KA0SGwoTQnVmZmVyTGluZURhc2hTdHlsZRgQIAMoAhIhChlCdWZmZXJMaW5l",
            "RGFzaFN0eWxlT2Zmc2V0GBEgASgCEhcKD0J1ZmZlckxpbmVXaWR0aBgSIAEo",
            "AhITCgtCdWZmZXJXaWR0aBgTIAEoAhIMCgRUZXh0GBQgASgJEhAKCEZvbnRO",
            "YW1lGBUgASgJEhAKCEZvbnRTaXplGBYgASgNEhsKE0ZvbnRGb3JlZ3JvdW5k",
            "Q29sb3IYFyABKA0SGwoTRm9udEJhY2tncm91bmRDb2xvchgYIAEoDRIXCg9O",
            "dW1iZXJPZlJhZGlhbHMYGSABKAUSEgoKU3ltYm9sVHlwZRgaIAEoCRISCgpT",
            "eW1ib2xDb2RlGBsgASgJEhMKC0dlbmVyaWNUeXBlGBwgASgJEhgKEFVuY2Vy",
            "dGFpbnR5QW5nbGUYHSABKAISDgoGTWFyZ2luGB4gASgCEhMKC01pbkZvbnRT",
            "aXplGB8gASgNEhcKD01pbkZvbnRNYXBTY2FsZRggIAEoDRIXCg9NYXhGb250",
            "TWFwU2NhbGUYISABKA0SFAoMR2VuZXJpY0VudW1zGCIgASgHGjMKEUZpZWxk",
            "SW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoCToCOAEi",
            "3QEKGVZlcnRpY2FsRGlzdGFuY2VEYXRhUHJvdG8STAoNZmllbGRfaW5kZXhl",
            "cxgBIAMoCzI1LnR1dG9yaWFsLlZlcnRpY2FsRGlzdGFuY2VEYXRhUHJvdG8u",
            "RmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhAK",
            "CFVuaXRUeXBlGAMgASgJEhIKCkRpbWVuc2lvbnMYBCABKAIaMwoRRmllbGRJ",
            "bmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASKx",
            "AgoSU3VyZmFjZVZvbHVtZVByb3RvEkUKDWZpZWxkX2luZGV4ZXMYASADKAsy",
            "Li50dXRvcmlhbC5TdXJmYWNlVm9sdW1lUHJvdG8uRmllbGRJbmRleGVzRW50",
            "cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEkIKFUxvd2VyVmVydGljYWxE",
            "aXN0YW5jZRgDIAEoCzIjLnR1dG9yaWFsLlZlcnRpY2FsRGlzdGFuY2VEYXRh",
            "UHJvdG8SQgoVVXBwZXJWZXJ0aWNhbERpc3RhbmNlGAQgASgLMiMudHV0b3Jp",
            "YWwuVmVydGljYWxEaXN0YW5jZURhdGFQcm90bxozChFGaWVsZEluZGV4ZXNF",
            "bnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIqoCCg5PcmJp",
            "dEFyZWFQcm90bxJBCg1maWVsZF9pbmRleGVzGAEgAygLMioudHV0b3JpYWwu",
            "T3JiaXRBcmVhUHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9p",
            "bmRleGVzGAIgAygNEisKCkZpcnN0UG9pbnQYAyABKAsyFy50dXRvcmlhbC5H",
            "ZW9Qb2ludFByb3RvEiwKC1NlY29uZFBvaW50GAQgASgLMhcudHV0b3JpYWwu",
            "R2VvUG9pbnRQcm90bxINCgVXaWR0aBgFIAEoAhIdChVPcmJpdEFyZWFBbGln",
            "bWVudENvZGUYBiABKA0aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEg",
            "ASgNEg0KBXZhbHVlGAIgASgJOgI4ASLSAgoYT3JiaXRBcmVhU2hpZnRlZElu",
            "dFByb3RvEksKDWZpZWxkX2luZGV4ZXMYASADKAsyNC50dXRvcmlhbC5PcmJp",
            "dEFyZWFTaGlmdGVkSW50UHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52",
            "YWxpZF9pbmRleGVzGAIgAygNEjUKCkZpcnN0UG9pbnQYAyABKAsyIS50dXRv",
            "cmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90bxI2CgtTZWNvbmRQb2ludBgE",
            "IAEoCzIhLnR1dG9yaWFsLkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvEg0KBVdp",
            "ZHRoGAUgASgCEh0KFU9yYml0QXJlYUFsaWdtZW50Q29kZRgGIAEoDRozChFG",
            "aWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6",
            "AjgBIqoCCgxGYW5BcmVhUHJvdG8SPwoNZmllbGRfaW5kZXhlcxgBIAMoCzIo",
            "LnR1dG9yaWFsLkZhbkFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9p",
            "bnZhbGlkX2luZGV4ZXMYAiADKA0SFAoMTWluaW11bVJhbmdlGAMgASgCEhQK",
            "DE1heGltdW1SYW5nZRgEIAEoAhIYChBPcmllbnRhdGlvbkFuZ2xlGAUgASgC",
            "EhcKD1NlY3RvclNpemVBbmdsZRgGIAEoAhIsCgtWZXJ0ZXhQb2ludBgHIAEo",
            "CzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8aMwoRRmllbGRJbmRleGVzRW50",
            "cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASLMAgoYRmFuQXJl",
            "YUFzU2hpZnRlZEludFByb3RvEksKDWZpZWxkX2luZGV4ZXMYASADKAsyNC50",
            "dXRvcmlhbC5GYW5BcmVhQXNTaGlmdGVkSW50UHJvdG8uRmllbGRJbmRleGVz",
            "RW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEhQKDE1pbmltdW1SYW5n",
            "ZRgDIAEoAhIUCgxNYXhpbXVtUmFuZ2UYBCABKAISGAoQT3JpZW50YXRpb25B",
            "bmdsZRgFIAEoAhIXCg9TZWN0b3JTaXplQW5nbGUYBiABKAISNgoLVmVydGV4",
            "UG9pbnQYByABKAsyIS50dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90",
            "bxozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUY",
            "AiABKAk6AjgBIrYBChFDb3JyaWRvckFyZWFQcm90bxJECg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMi0udHV0b3JpYWwuQ29ycmlkb3JBcmVhUHJvdG8uRmllbGRJ",
            "bmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVzGAIgAygNEg0KBVdpZHRo",
            "GAMgASgCGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2",
            "YWx1ZRgCIAEoCToCOAEiyAIKDEVsbGlwc2VQcm90bxI/Cg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMigudHV0b3JpYWwuRWxsaXBzZVByb3RvLkZpZWxkSW5kZXhl",
            "c0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIsCgtDZW50cmVQb2lu",
            "dBgDIAEoCzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8SPAobRmlyc3RDb25q",
            "dWdhdGVEaWFtZXRlclBvaW50GAQgASgLMhcudHV0b3JpYWwuR2VvUG9pbnRQ",
            "cm90bxI9ChxTZWNvbmRDb25qdWdhdGVEaWFtZXRlclBvaW50GAUgASgLMhcu",
            "dHV0b3JpYWwuR2VvUG9pbnRQcm90bxozChFGaWVsZEluZGV4ZXNFbnRyeRIL",
            "CgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIv4CChhFbGxpcHNlQXNT",
            "aGlmdGVkSW50UHJvdG8SSwoNZmllbGRfaW5kZXhlcxgBIAMoCzI0LnR1dG9y",
            "aWFsLkVsbGlwc2VBc1NoaWZ0ZWRJbnRQcm90by5GaWVsZEluZGV4ZXNFbnRy",
            "eRIXCg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SNgoLQ2VudHJlUG9pbnQYAyAB",
            "KAsyIS50dXRvcmlhbC5HZW9TaGlmdGVkSW50UG9pbnRQcm90bxJGChtGaXJz",
            "dENvbmp1Z2F0ZURpYW1ldGVyUG9pbnQYBCABKAsyIS50dXRvcmlhbC5HZW9T",
            "aGlmdGVkSW50UG9pbnRQcm90bxJHChxTZWNvbmRDb25qdWdhdGVEaWFtZXRl",
            "clBvaW50GAUgASgLMiEudHV0b3JpYWwuR2VvU2hpZnRlZEludFBvaW50UHJv",
            "dG8aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZhbHVl",
            "GAIgASgJOgI4ASK+AQoKUG9pbnRQcm90bxI9Cg1maWVsZF9pbmRleGVzGAEg",
            "AygLMiYudHV0b3JpYWwuUG9pbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIX",
            "Cg9pbnZhbGlkX2luZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgBEhAK",
            "CGxhdGl0dWRlGAQgASgBGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEi0gEKFFBvaW50U2hpZnRlZEludFBy",
            "b3RvEkcKDWZpZWxkX2luZGV4ZXMYASADKAsyMC50dXRvcmlhbC5Qb2ludFNo",
            "aWZ0ZWRJbnRQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2lu",
            "ZGV4ZXMYAiADKA0SEQoJbG9uZ2l0dWRlGAMgASgREhAKCGxhdGl0dWRlGAQg",
            "ASgRGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1",
            "ZRgCIAEoCToCOAEimwIKD1JhbmdlUmluZ3NQcm90bxJCCg1maWVsZF9pbmRl",
            "eGVzGAEgAygLMisudHV0b3JpYWwuUmFuZ2VSaW5nc1Byb3RvLkZpZWxkSW5k",
            "ZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIsCgtWZXJ0ZXhQ",
            "b2ludBgDIAEoCzIXLnR1dG9yaWFsLkdlb1BvaW50UHJvdG8SGQoRUmFuZ2VC",
            "ZXR3ZWVuUmluZ3MYBCABKAISFAoMTWF4aW11bVJhbmdlGAUgASgCEhcKD051",
            "bWJlck9mUmFkaWFscxgGIAEoDRozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNr",
            "ZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIrkCChlSYW5nZVJpbmdzU2hp",
            "ZnRlZEludFByb3RvEkwKDWZpZWxkX2luZGV4ZXMYASADKAsyNS50dXRvcmlh",
            "bC5SYW5nZVJpbmdzU2hpZnRlZEludFByb3RvLkZpZWxkSW5kZXhlc0VudHJ5",
            "EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRI2CgtWZXJ0ZXhQb2ludBgDIAEo",
            "CzIhLnR1dG9yaWFsLkdlb1NoaWZ0ZWRJbnRQb2ludFByb3RvEhkKEVJhbmdl",
            "QmV0d2VlblJpbmdzGAQgASgCEhQKDE1heGltdW1SYW5nZRgFIAEoAhIXCg9O",
            "dW1iZXJPZlJhZGlhbHMYBiABKA0aMwoRRmllbGRJbmRleGVzRW50cnkSCwoD",
            "a2V5GAEgASgNEg0KBXZhbHVlGAIgASgJOgI4ASLaAQoQVm9sUG9seUFyZWFQ",
            "cm90bxJDCg1maWVsZF9pbmRleGVzGAEgAygLMiwudHV0b3JpYWwuVm9sUG9s",
            "eUFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9pbnZhbGlkX2luZGV4",
            "ZXMYAiADKA0SMwoNU3VyZmFjZVZvbHVtZRgDIAEoCzIcLnR1dG9yaWFsLlN1",
            "cmZhY2VWb2x1bWVQcm90bxozChFGaWVsZEluZGV4ZXNFbnRyeRILCgNrZXkY",
            "ASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIsoCChFWb2xPcmJpdEFyZWFQcm90",
            "bxJECg1maWVsZF9pbmRleGVzGAEgAygLMi0udHV0b3JpYWwuVm9sT3JiaXRB",
            "cmVhUHJvdG8uRmllbGRJbmRleGVzRW50cnkSFwoPaW52YWxpZF9pbmRleGVz",
            "GAIgAygNEjMKDVN1cmZhY2VWb2x1bWUYAyABKAsyHC50dXRvcmlhbC5TdXJm",
            "YWNlVm9sdW1lUHJvdG8SKwoJT3JiaXRBcmVhGAQgASgLMhgudHV0b3JpYWwu",
            "T3JiaXRBcmVhUHJvdG8SPwoTU2hpZnRlZEludE9yYml0QXJlYRgFIAEoCzIi",
            "LnR1dG9yaWFsLk9yYml0QXJlYVNoaWZ0ZWRJbnRQcm90bxozChFGaWVsZElu",
            "ZGV4ZXNFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKAk6AjgBIsAC",
            "Cg9Wb2xGYW5BcmVhUHJvdG8SQgoNZmllbGRfaW5kZXhlcxgBIAMoCzIrLnR1",
            "dG9yaWFsLlZvbEZhbkFyZWFQcm90by5GaWVsZEluZGV4ZXNFbnRyeRIXCg9p",
            "bnZhbGlkX2luZGV4ZXMYAiADKA0SMwoNU3VyZmFjZVZvbHVtZRgDIAEoCzIc",
            "LnR1dG9yaWFsLlN1cmZhY2VWb2x1bWVQcm90bxInCgdGYW5BcmVhGAQgASgL",
            "MhYudHV0b3JpYWwuRmFuQXJlYVByb3RvEj0KEVNoaWZ0ZWRJbnRGYW5BcmVh",
            "GAUgASgLMiIudHV0b3JpYWwuRmFuQXJlYUFzU2hpZnRlZEludFByb3RvGjMK",
            "EUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEo",
            "CToCOAEiwAIKD1ZvbEVsbGlwc2VQcm90bxJCCg1maWVsZF9pbmRleGVzGAEg",
            "AygLMisudHV0b3JpYWwuVm9sRWxsaXBzZVByb3RvLkZpZWxkSW5kZXhlc0Vu",
            "dHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMoDRIzCg1TdXJmYWNlVm9sdW1l",
            "GAMgASgLMhwudHV0b3JpYWwuU3VyZmFjZVZvbHVtZVByb3RvEicKB0VsbGlw",
            "c2UYBCABKAsyFi50dXRvcmlhbC5FbGxpcHNlUHJvdG8SPQoRU2hpZnRlZElu",
            "dEVsbGlwc2UYBSABKAsyIi50dXRvcmlhbC5FbGxpcHNlQXNTaGlmdGVkSW50",
            "UHJvdG8aMwoRRmllbGRJbmRleGVzRW50cnkSCwoDa2V5GAEgASgNEg0KBXZh",
            "bHVlGAIgASgJOgI4ASKVAgoUVm9sQ29ycmlkb3JBcmVhUHJvdG8SRwoNZmll",
            "bGRfaW5kZXhlcxgBIAMoCzIwLnR1dG9yaWFsLlZvbENvcnJpZG9yQXJlYVBy",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIzCg1TdXJmYWNlVm9sdW1lGAMgASgLMhwudHV0b3JpYWwuU3VyZmFjZVZv",
            "bHVtZVByb3RvEjEKDENvcnJpZG9yQXJlYRgEIAEoCzIbLnR1dG9yaWFsLkNv",
            "cnJpZG9yQXJlYVByb3RvGjMKEUZpZWxkSW5kZXhlc0VudHJ5EgsKA2tleRgB",
            "IAEoDRINCgV2YWx1ZRgCIAEoCToCOAEiCwoJTGluZVByb3RvIhIKEFBvbHln",
            "b25BcmVhUHJvdG8iqQwKFVNpbXBsZURyYXdPYmplY3RQcm90bxJICg1maWVs",
            "ZF9pbmRleGVzGAEgAygLMjEudHV0b3JpYWwuU2ltcGxlRHJhd09iamVjdFBy",
            "b3RvLkZpZWxkSW5kZXhlc0VudHJ5EhcKD2ludmFsaWRfaW5kZXhlcxgCIAMo",
            "DRIKCgJJZBgDIAEoCRIuCgtkYXRhX2ZpZWxkcxgEIAEoCzIZLnR1dG9yaWFs",
            "LkRhdGFGaWVsZHNQcm90bxI7ChJUYWN0aWNhbERhdGFGaWVsZHMYBSABKAsy",
            "HS50dXRvcmlhbC5UYWN0aWNhbEZpZWxkc1Byb3RvSAASOQoRR2VuZXJpY0Rh",
            "dGFGaWVsZHMYBiABKAsyHC50dXRvcmlhbC5HZW5lcmljRmllbGRzUHJvdG9I",
            "ABIZChFCb29sZWFuQXR0cmlidXRlcxgHIAEoDRIzCglHZW9Qb2ludHMYCCAB",
            "KAsyHi50dXRvcmlhbC5HZW9Eb3VibGVQb2ludHNQcm90b0gBEkEKE0dlb1No",
            "aWZ0ZWRJbnRQb2ludHMYCSABKAsyIi50dXRvcmlhbC5HZW9TaGlmdGVkSW50",
            "UG9pbnRzUHJvdG9IARIzCgxDb3JyaWRvckFyZWEYCiABKAsyGy50dXRvcmlh",
            "bC5Db3JyaWRvckFyZWFQcm90b0gCEikKB0ZhbkFyZWEYCyABKAsyFi50dXRv",
            "cmlhbC5GYW5BcmVhUHJvdG9IAhIpCgdFbGxpcHNlGAwgASgLMhYudHV0b3Jp",
            "YWwuRWxsaXBzZVByb3RvSAISMQoLVm9sUG9seUFyZWEYDSABKAsyGi50dXRv",
            "cmlhbC5Wb2xQb2x5QXJlYVByb3RvSAISMwoMVm9sT3JiaXRBcmVhGA4gASgL",
            "MhsudHV0b3JpYWwuVm9sT3JiaXRBcmVhUHJvdG9IAhIvCgpWb2xGYW5BcmVh",
            "GA8gASgLMhkudHV0b3JpYWwuVm9sRmFuQXJlYVByb3RvSAISLwoKVm9sRWxs",
            "aXBzZRgQIAEoCzIZLnR1dG9yaWFsLlZvbEVsbGlwc2VQcm90b0gCEjkKD1Zv",
            "bENvcnJpZG9yQXJlYRgRIAEoCzIeLnR1dG9yaWFsLlZvbENvcnJpZG9yQXJl",
            "YVByb3RvSAISLQoJT3JiaXRBcmVhGBIgASgLMhgudHV0b3JpYWwuT3JiaXRB",
            "cmVhUHJvdG9IAhIlCgVQb2ludBgTIAEoCzIULnR1dG9yaWFsLlBvaW50UHJv",
            "dG9IAhIvCgpSYW5nZVJpbmdzGBQgASgLMhkudHV0b3JpYWwuUmFuZ2VSaW5n",
            "c1Byb3RvSAISIwoETGluZRgVIAEoCzITLnR1dG9yaWFsLkxpbmVQcm90b0gC",
            "EjEKC1BvbHlnb25BcmVhGBYgASgLMhoudHV0b3JpYWwuUG9seWdvbkFyZWFQ",
            "cm90b0gCEjkKD1NoaWZ0ZWRJbnRQb2ludBgXIAEoCzIeLnR1dG9yaWFsLlBv",
            "aW50U2hpZnRlZEludFByb3RvSAISQQoTU2hpZnRlZEludE9yYml0QXJlYRgY",
            "IAEoCzIiLnR1dG9yaWFsLk9yYml0QXJlYVNoaWZ0ZWRJbnRQcm90b0gCEj8K",
            "EVNoaWZ0ZWRJbnRFbGxpcHNlGBkgASgLMiIudHV0b3JpYWwuRWxsaXBzZUFz",
            "U2hpZnRlZEludFByb3RvSAISPwoRU2hpZnRlZEludEZhbkFyZWEYGiABKAsy",
            "Ii50dXRvcmlhbC5GYW5BcmVhQXNTaGlmdGVkSW50UHJvdG9IAhJDChRTaGlm",
            "dGVkSW50UmFuZ2VSaW5ncxgbIAEoCzIjLnR1dG9yaWFsLlJhbmdlUmluZ3NT",
            "aGlmdGVkSW50UHJvdG9IAhI/ChZjb21wb3NpdGVfZHJhd19vYmplY3RzGBwg",
            "AygLMh8udHV0b3JpYWwuU2ltcGxlRHJhd09iamVjdFByb3RvGjMKEUZpZWxk",
            "SW5kZXhlc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoCToCOAFC",
            "EwoRdHlwZV9maWVsZHNvYmplY3RCDwoNdHlwZV9nZW9wb2ludEIWChR0eXBl",
            "X2ltcGxlbWVudGF0aW9ucyJkChZTaW1wbGVEcmF3T2JqZWN0c1Byb3RvEjQK",
            "C2RyYXdvYmplY3RzGAEgAygLMh8udHV0b3JpYWwuU2ltcGxlRHJhd09iamVj",
            "dFByb3RvEhQKDGRhdGFfdmVyc2lvbhgCIAEoDSLuAQoPRHJhd09iamVjdFBy",
            "b3RvEjkKEHNpbXBsZWRyYXdvYmplY3QYASABKAsyHy50dXRvcmlhbC5TaW1w",
            "bGVEcmF3T2JqZWN0UHJvdG8SEQoJYzI1MjVDb2RlGAIgASgJEhcKD1VzZURl",
            "ZmF1bHRFbnVtcxgDIAEoDRIkChxVc2VEZWZhdWx0VmFsdWVzSW5EYXRhRmll",
            "bGRzGAQgASgNEigKIFVzZURlZmF1bHRWYWx1ZXNJbkV4dGVuZGVkRmllbGRz",
            "GAUgASgNEiQKHFVzZURlZmF1bHRWYWx1ZXNJblR5cGVGaWVsZHMYBiABKA0i",
            "WAoQRHJhd09iamVjdHNQcm90bxIuCgtkcmF3b2JqZWN0cxgBIAMoCzIZLnR1",
            "dG9yaWFsLkRyYXdPYmplY3RQcm90bxIUCgxkYXRhX3ZlcnNpb24YAiABKA1C",
            "WwogdHBnLmRyYXdvYmplY3RzLnNlcmlhbGl6ZS5wcm90b2NCFE1hcmlhRHJh",
            "d09iamVjdFByb3RvqgIgVFBHLkRyYXdPYmplY3RzLlNlcmlhbGl6ZS5Qcm90",
            "b2NiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto), global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude", "Text", "Altitude", "PointInformation" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto), global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude", "Text", "Altitude", "PointInformation" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointInformation), global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser, new[]{ "Info" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto), global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto.Parser, new[]{ "Longitude", "Latitude", "Text", "Altitude", "Information" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto), global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto.Parser, new[]{ "Longitude", "Latitude", "Text", "Altitude", "Information" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Name", "HierarchyCode", "DrawDepth", "RotationAngle", "Version", "AlphaFactor", "MovementIndicatorColor", "OffsetLocationIndicatorColor", "LabelFontName", "LabelFontSize", "LabelFontForegroundColor", "MinDynamicScale", "MaxDynamicScale", "ExtraFields", "TacticalExtraFields" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinefieldOpacity", "SymbolIndicator", "AdditionalInformation", "UniqueDesignation", "DateTimeGroup", "OffsetLocationDisplacementX", "OffsetLocationDisplacementY", "Quantity", "NuclearWeaponType", "DirectionOfMovement", "AltitudeDepth", "Distance", "Azimuth", "TacticalEnums" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto), global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "LineColor", "LineDashStyle", "LineDashStyleOffset", "CenterLineWidth", "CenterLineColor", "CenterLineDashStyle", "CenterLineDashStyleOffset", "LineWidth", "LineOutlineWidth", "LineOutlineColor", "FillForegroundColor", "FillBackgroundColor", "BufferLineColor", "BufferLineDashStyle", "BufferLineDashStyleOffset", "BufferLineWidth", "BufferWidth", "Text", "FontName", "FontSize", "FontForegroundColor", "FontBackgroundColor", "NumberOfRadials", "SymbolType", "SymbolCode", "GenericType", "UncertaintyAngle", "Margin", "MinFontSize", "MinFontMapScale", "MaxFontMapScale", "GenericEnums" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto), global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "UnitType", "Dimensions" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto), global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "LowerVerticalDistance", "UpperVerticalDistance" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto), global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "FirstPoint", "SecondPoint", "Width", "OrbitAreaAligmentCode" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "FirstPoint", "SecondPoint", "Width", "OrbitAreaAligmentCode" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto), global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinimumRange", "MaximumRange", "OrientationAngle", "SectorSizeAngle", "VertexPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "MinimumRange", "MaximumRange", "OrientationAngle", "SectorSizeAngle", "VertexPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto), global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Width" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.EllipseProto), global::TPG.DrawObjects.Serialize.Protoc.EllipseProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "CentrePoint", "FirstConjugateDiameterPoint", "SecondConjugateDiameterPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "CentrePoint", "FirstConjugateDiameterPoint", "SecondConjugateDiameterPoint" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointProto), global::TPG.DrawObjects.Serialize.Protoc.PointProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Longitude", "Latitude" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto), global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "VertexPoint", "RangeBetweenRings", "MaximumRange", "NumberOfRadials" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto), global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "VertexPoint", "RangeBetweenRings", "MaximumRange", "NumberOfRadials" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "OrbitArea", "ShiftedIntOrbitArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "FanArea", "ShiftedIntFanArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto), global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "Ellipse", "ShiftedIntEllipse" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto), global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "SurfaceVolume", "CorridorArea" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.LineProto), global::TPG.DrawObjects.Serialize.Protoc.LineProto.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto), global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto), global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser, new[]{ "FieldIndexes", "InvalidIndexes", "Id", "DataFields", "TacticalDataFields", "GenericDataFields", "BooleanAttributes", "GeoPoints", "GeoShiftedIntPoints", "CorridorArea", "FanArea", "Ellipse", "VolPolyArea", "VolOrbitArea", "VolFanArea", "VolEllipse", "VolCorridorArea", "OrbitArea", "Point", "RangeRings", "Line", "PolygonArea", "ShiftedIntPoint", "ShiftedIntOrbitArea", "ShiftedIntEllipse", "ShiftedIntFanArea", "ShiftedIntRangeRings", "CompositeDrawObjects" }, new[]{ "TypeFieldsobject", "TypeGeopoint", "TypeImplementations" }, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectsProto), global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectsProto.Parser, new[]{ "Drawobjects", "DataVersion" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto), global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto.Parser, new[]{ "Simpledrawobject", "C2525Code", "UseDefaultEnums", "UseDefaultValuesInDataFields", "UseDefaultValuesInExtendedFields", "UseDefaultValuesInTypeFields" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::TPG.DrawObjects.Serialize.Protoc.DrawObjectsProto), global::TPG.DrawObjects.Serialize.Protoc.DrawObjectsProto.Parser, new[]{ "Drawobjects", "DataVersion" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class GeoPointProto : pb::IMessage<GeoPointProto> {
    private static readonly pb::MessageParser<GeoPointProto> _parser = new pb::MessageParser<GeoPointProto>(() => new GeoPointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoPointProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto(GeoPointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
      text_ = other.text_;
      altitude_ = other.altitude_;
      pointInformation_ = other.pointInformation_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoPointProto Clone() {
      return new GeoPointProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private double longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private double latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }

    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 5;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 6;
    private double altitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Altitude {
      get { return altitude_; }
      set {
        altitude_ = value;
      }
    }

    /// <summary>Field number for the "pointInformation" field.</summary>
    public const int PointInformationFieldNumber = 7;
    private static readonly pbc::MapField<string, string>.Codec _map_pointInformation_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 58);
    private readonly pbc::MapField<string, string> pointInformation_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> PointInformation {
      get { return pointInformation_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoPointProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoPointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      if (Text != other.Text) return false;
      if (Altitude != other.Altitude) return false;
      if (!PointInformation.Equals(other.PointInformation)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (Altitude != 0D) hash ^= Altitude.GetHashCode();
      hash ^= PointInformation.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        output.WriteRawTag(25);
        output.WriteDouble(Longitude);
      }
      if (Latitude != 0D) {
        output.WriteRawTag(33);
        output.WriteDouble(Latitude);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Text);
      }
      if (Altitude != 0D) {
        output.WriteRawTag(49);
        output.WriteDouble(Altitude);
      }
      pointInformation_.WriteTo(output, _map_pointInformation_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        size += 1 + 8;
      }
      if (Latitude != 0D) {
        size += 1 + 8;
      }
      if (Text.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (Altitude != 0D) {
        size += 1 + 8;
      }
      size += pointInformation_.CalculateSize(_map_pointInformation_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoPointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0D) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0D) {
        Latitude = other.Latitude;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.Altitude != 0D) {
        Altitude = other.Altitude;
      }
      pointInformation_.Add(other.pointInformation_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 25: {
            Longitude = input.ReadDouble();
            break;
          }
          case 33: {
            Latitude = input.ReadDouble();
            break;
          }
          case 42: {
            Text = input.ReadString();
            break;
          }
          case 49: {
            Altitude = input.ReadDouble();
            break;
          }
          case 58: {
            pointInformation_.AddEntriesFrom(input, _map_pointInformation_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class GeoShiftedIntPointProto : pb::IMessage<GeoShiftedIntPointProto> {
    private static readonly pb::MessageParser<GeoShiftedIntPointProto> _parser = new pb::MessageParser<GeoShiftedIntPointProto>(() => new GeoShiftedIntPointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoShiftedIntPointProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto(GeoShiftedIntPointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
      text_ = other.text_;
      altitude_ = other.altitude_;
      pointInformation_ = other.pointInformation_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointProto Clone() {
      return new GeoShiftedIntPointProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private int longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private int latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }

    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 5;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 6;
    private double altitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Altitude {
      get { return altitude_; }
      set {
        altitude_ = value;
      }
    }

    /// <summary>Field number for the "pointInformation" field.</summary>
    public const int PointInformationFieldNumber = 7;
    private static readonly pbc::MapField<string, string>.Codec _map_pointInformation_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 58);
    private readonly pbc::MapField<string, string> pointInformation_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> PointInformation {
      get { return pointInformation_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoShiftedIntPointProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoShiftedIntPointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      if (Text != other.Text) return false;
      if (Altitude != other.Altitude) return false;
      if (!PointInformation.Equals(other.PointInformation)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0) hash ^= Longitude.GetHashCode();
      if (Latitude != 0) hash ^= Latitude.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (Altitude != 0D) hash ^= Altitude.GetHashCode();
      hash ^= PointInformation.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        output.WriteRawTag(24);
        output.WriteSInt32(Longitude);
      }
      if (Latitude != 0) {
        output.WriteRawTag(32);
        output.WriteSInt32(Latitude);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Text);
      }
      if (Altitude != 0D) {
        output.WriteRawTag(49);
        output.WriteDouble(Altitude);
      }
      pointInformation_.WriteTo(output, _map_pointInformation_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Longitude);
      }
      if (Latitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Latitude);
      }
      if (Text.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (Altitude != 0D) {
        size += 1 + 8;
      }
      size += pointInformation_.CalculateSize(_map_pointInformation_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoShiftedIntPointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0) {
        Latitude = other.Latitude;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.Altitude != 0D) {
        Altitude = other.Altitude;
      }
      pointInformation_.Add(other.pointInformation_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            Longitude = input.ReadSInt32();
            break;
          }
          case 32: {
            Latitude = input.ReadSInt32();
            break;
          }
          case 42: {
            Text = input.ReadString();
            break;
          }
          case 49: {
            Altitude = input.ReadDouble();
            break;
          }
          case 58: {
            pointInformation_.AddEntriesFrom(input, _map_pointInformation_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class PointInformation : pb::IMessage<PointInformation> {
    private static readonly pb::MessageParser<PointInformation> _parser = new pb::MessageParser<PointInformation>(() => new PointInformation());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointInformation> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation(PointInformation other) : this() {
      info_ = other.info_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointInformation Clone() {
      return new PointInformation(this);
    }

    /// <summary>Field number for the "info" field.</summary>
    public const int InfoFieldNumber = 1;
    private static readonly pbc::MapField<string, string>.Codec _map_info_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<string, string> info_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> Info {
      get { return info_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointInformation);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointInformation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!Info.Equals(other.Info)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= Info.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      info_.WriteTo(output, _map_info_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += info_.CalculateSize(_map_info_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointInformation other) {
      if (other == null) {
        return;
      }
      info_.Add(other.info_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            info_.AddEntriesFrom(input, _map_info_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class GeoDoublePointsProto : pb::IMessage<GeoDoublePointsProto> {
    private static readonly pb::MessageParser<GeoDoublePointsProto> _parser = new pb::MessageParser<GeoDoublePointsProto>(() => new GeoDoublePointsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoDoublePointsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto(GeoDoublePointsProto other) : this() {
      longitude_ = other.longitude_.Clone();
      latitude_ = other.latitude_.Clone();
      text_ = other.text_.Clone();
      altitude_ = other.altitude_.Clone();
      information_ = other.information_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoDoublePointsProto Clone() {
      return new GeoDoublePointsProto(this);
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 1;
    private static readonly pb::FieldCodec<double> _repeated_longitude_codec
        = pb::FieldCodec.ForDouble(10);
    private readonly pbc::RepeatedField<double> longitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Longitude {
      get { return longitude_; }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 2;
    private static readonly pb::FieldCodec<double> _repeated_latitude_codec
        = pb::FieldCodec.ForDouble(18);
    private readonly pbc::RepeatedField<double> latitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Latitude {
      get { return latitude_; }
    }

    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_text_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> text_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Text {
      get { return text_; }
    }

    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 4;
    private static readonly pb::FieldCodec<double> _repeated_altitude_codec
        = pb::FieldCodec.ForDouble(34);
    private readonly pbc::RepeatedField<double> altitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Altitude {
      get { return altitude_; }
    }

    /// <summary>Field number for the "information" field.</summary>
    public const int InformationFieldNumber = 5;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> _repeated_information_codec
        = pb::FieldCodec.ForMessage(42, global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> information_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> Information {
      get { return information_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoDoublePointsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoDoublePointsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!longitude_.Equals(other.longitude_)) return false;
      if(!latitude_.Equals(other.latitude_)) return false;
      if(!text_.Equals(other.text_)) return false;
      if(!altitude_.Equals(other.altitude_)) return false;
      if(!information_.Equals(other.information_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= longitude_.GetHashCode();
      hash ^= latitude_.GetHashCode();
      hash ^= text_.GetHashCode();
      hash ^= altitude_.GetHashCode();
      hash ^= information_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      longitude_.WriteTo(output, _repeated_longitude_codec);
      latitude_.WriteTo(output, _repeated_latitude_codec);
      text_.WriteTo(output, _repeated_text_codec);
      altitude_.WriteTo(output, _repeated_altitude_codec);
      information_.WriteTo(output, _repeated_information_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += longitude_.CalculateSize(_repeated_longitude_codec);
      size += latitude_.CalculateSize(_repeated_latitude_codec);
      size += text_.CalculateSize(_repeated_text_codec);
      size += altitude_.CalculateSize(_repeated_altitude_codec);
      size += information_.CalculateSize(_repeated_information_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoDoublePointsProto other) {
      if (other == null) {
        return;
      }
      longitude_.Add(other.longitude_);
      latitude_.Add(other.latitude_);
      text_.Add(other.text_);
      altitude_.Add(other.altitude_);
      information_.Add(other.information_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10:
          case 9: {
            longitude_.AddEntriesFrom(input, _repeated_longitude_codec);
            break;
          }
          case 18:
          case 17: {
            latitude_.AddEntriesFrom(input, _repeated_latitude_codec);
            break;
          }
          case 26: {
            text_.AddEntriesFrom(input, _repeated_text_codec);
            break;
          }
          case 34:
          case 33: {
            altitude_.AddEntriesFrom(input, _repeated_altitude_codec);
            break;
          }
          case 42: {
            information_.AddEntriesFrom(input, _repeated_information_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class GeoShiftedIntPointsProto : pb::IMessage<GeoShiftedIntPointsProto> {
    private static readonly pb::MessageParser<GeoShiftedIntPointsProto> _parser = new pb::MessageParser<GeoShiftedIntPointsProto>(() => new GeoShiftedIntPointsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GeoShiftedIntPointsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto(GeoShiftedIntPointsProto other) : this() {
      longitude_ = other.longitude_.Clone();
      latitude_ = other.latitude_.Clone();
      text_ = other.text_.Clone();
      altitude_ = other.altitude_.Clone();
      information_ = other.information_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GeoShiftedIntPointsProto Clone() {
      return new GeoShiftedIntPointsProto(this);
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 1;
    private static readonly pb::FieldCodec<int> _repeated_longitude_codec
        = pb::FieldCodec.ForSInt32(10);
    private readonly pbc::RepeatedField<int> longitude_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Longitude {
      get { return longitude_; }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_latitude_codec
        = pb::FieldCodec.ForSInt32(18);
    private readonly pbc::RepeatedField<int> latitude_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<int> Latitude {
      get { return latitude_; }
    }

    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_text_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> text_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Text {
      get { return text_; }
    }

    /// <summary>Field number for the "altitude" field.</summary>
    public const int AltitudeFieldNumber = 4;
    private static readonly pb::FieldCodec<double> _repeated_altitude_codec
        = pb::FieldCodec.ForDouble(34);
    private readonly pbc::RepeatedField<double> altitude_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<double> Altitude {
      get { return altitude_; }
    }

    /// <summary>Field number for the "information" field.</summary>
    public const int InformationFieldNumber = 5;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> _repeated_information_codec
        = pb::FieldCodec.ForMessage(42, global::TPG.DrawObjects.Serialize.Protoc.PointInformation.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> information_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.PointInformation> Information {
      get { return information_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GeoShiftedIntPointsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GeoShiftedIntPointsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!longitude_.Equals(other.longitude_)) return false;
      if(!latitude_.Equals(other.latitude_)) return false;
      if(!text_.Equals(other.text_)) return false;
      if(!altitude_.Equals(other.altitude_)) return false;
      if(!information_.Equals(other.information_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= longitude_.GetHashCode();
      hash ^= latitude_.GetHashCode();
      hash ^= text_.GetHashCode();
      hash ^= altitude_.GetHashCode();
      hash ^= information_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      longitude_.WriteTo(output, _repeated_longitude_codec);
      latitude_.WriteTo(output, _repeated_latitude_codec);
      text_.WriteTo(output, _repeated_text_codec);
      altitude_.WriteTo(output, _repeated_altitude_codec);
      information_.WriteTo(output, _repeated_information_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += longitude_.CalculateSize(_repeated_longitude_codec);
      size += latitude_.CalculateSize(_repeated_latitude_codec);
      size += text_.CalculateSize(_repeated_text_codec);
      size += altitude_.CalculateSize(_repeated_altitude_codec);
      size += information_.CalculateSize(_repeated_information_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GeoShiftedIntPointsProto other) {
      if (other == null) {
        return;
      }
      longitude_.Add(other.longitude_);
      latitude_.Add(other.latitude_);
      text_.Add(other.text_);
      altitude_.Add(other.altitude_);
      information_.Add(other.information_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10:
          case 8: {
            longitude_.AddEntriesFrom(input, _repeated_longitude_codec);
            break;
          }
          case 18:
          case 16: {
            latitude_.AddEntriesFrom(input, _repeated_latitude_codec);
            break;
          }
          case 26: {
            text_.AddEntriesFrom(input, _repeated_text_codec);
            break;
          }
          case 34:
          case 33: {
            altitude_.AddEntriesFrom(input, _repeated_altitude_codec);
            break;
          }
          case 42: {
            information_.AddEntriesFrom(input, _repeated_information_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class DataFieldsProto : pb::IMessage<DataFieldsProto> {
    private static readonly pb::MessageParser<DataFieldsProto> _parser = new pb::MessageParser<DataFieldsProto>(() => new DataFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DataFieldsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto(DataFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      name_ = other.name_;
      hierarchyCode_ = other.hierarchyCode_;
      drawDepth_ = other.drawDepth_;
      rotationAngle_ = other.rotationAngle_;
      version_ = other.version_;
      alphaFactor_ = other.alphaFactor_;
      movementIndicatorColor_ = other.movementIndicatorColor_;
      offsetLocationIndicatorColor_ = other.offsetLocationIndicatorColor_;
      labelFontName_ = other.labelFontName_;
      labelFontSize_ = other.labelFontSize_;
      labelFontForegroundColor_ = other.labelFontForegroundColor_;
      minDynamicScale_ = other.minDynamicScale_;
      maxDynamicScale_ = other.maxDynamicScale_;
      extraFields_ = other.extraFields_.Clone();
      tacticalExtraFields_ = other.tacticalExtraFields_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DataFieldsProto Clone() {
      return new DataFieldsProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///field_version_info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    /// <summary>
    ///field_invalid_indices
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 3;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "HierarchyCode" field.</summary>
    public const int HierarchyCodeFieldNumber = 4;
    private string hierarchyCode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string HierarchyCode {
      get { return hierarchyCode_; }
      set {
        hierarchyCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "DrawDepth" field.</summary>
    public const int DrawDepthFieldNumber = 5;
    private int drawDepth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int DrawDepth {
      get { return drawDepth_; }
      set {
        drawDepth_ = value;
      }
    }

    /// <summary>Field number for the "RotationAngle" field.</summary>
    public const int RotationAngleFieldNumber = 6;
    private float rotationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RotationAngle {
      get { return rotationAngle_; }
      set {
        rotationAngle_ = value;
      }
    }

    /// <summary>Field number for the "Version" field.</summary>
    public const int VersionFieldNumber = 7;
    private uint version_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }

    /// <summary>Field number for the "AlphaFactor" field.</summary>
    public const int AlphaFactorFieldNumber = 8;
    private float alphaFactor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float AlphaFactor {
      get { return alphaFactor_; }
      set {
        alphaFactor_ = value;
      }
    }

    /// <summary>Field number for the "MovementIndicatorColor" field.</summary>
    public const int MovementIndicatorColorFieldNumber = 9;
    private uint movementIndicatorColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MovementIndicatorColor {
      get { return movementIndicatorColor_; }
      set {
        movementIndicatorColor_ = value;
      }
    }

    /// <summary>Field number for the "OffsetLocationIndicatorColor" field.</summary>
    public const int OffsetLocationIndicatorColorFieldNumber = 10;
    private uint offsetLocationIndicatorColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OffsetLocationIndicatorColor {
      get { return offsetLocationIndicatorColor_; }
      set {
        offsetLocationIndicatorColor_ = value;
      }
    }

    /// <summary>Field number for the "LabelFontName" field.</summary>
    public const int LabelFontNameFieldNumber = 11;
    private string labelFontName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string LabelFontName {
      get { return labelFontName_; }
      set {
        labelFontName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "LabelFontSize" field.</summary>
    public const int LabelFontSizeFieldNumber = 12;
    private uint labelFontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LabelFontSize {
      get { return labelFontSize_; }
      set {
        labelFontSize_ = value;
      }
    }

    /// <summary>Field number for the "LabelFontForegroundColor" field.</summary>
    public const int LabelFontForegroundColorFieldNumber = 13;
    private uint labelFontForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LabelFontForegroundColor {
      get { return labelFontForegroundColor_; }
      set {
        labelFontForegroundColor_ = value;
      }
    }

    /// <summary>Field number for the "MinDynamicScale" field.</summary>
    public const int MinDynamicScaleFieldNumber = 14;
    private float minDynamicScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinDynamicScale {
      get { return minDynamicScale_; }
      set {
        minDynamicScale_ = value;
      }
    }

    /// <summary>Field number for the "MaxDynamicScale" field.</summary>
    public const int MaxDynamicScaleFieldNumber = 15;
    private float maxDynamicScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaxDynamicScale {
      get { return maxDynamicScale_; }
      set {
        maxDynamicScale_ = value;
      }
    }

    /// <summary>Field number for the "ExtraFields" field.</summary>
    public const int ExtraFieldsFieldNumber = 16;
    private static readonly pbc::MapField<string, string>.Codec _map_extraFields_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 130);
    private readonly pbc::MapField<string, string> extraFields_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> ExtraFields {
      get { return extraFields_; }
    }

    /// <summary>Field number for the "TacticalExtraFields" field.</summary>
    public const int TacticalExtraFieldsFieldNumber = 17;
    private static readonly pbc::MapField<string, string>.Codec _map_tacticalExtraFields_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 138);
    private readonly pbc::MapField<string, string> tacticalExtraFields_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> TacticalExtraFields {
      get { return tacticalExtraFields_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DataFieldsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DataFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Name != other.Name) return false;
      if (HierarchyCode != other.HierarchyCode) return false;
      if (DrawDepth != other.DrawDepth) return false;
      if (RotationAngle != other.RotationAngle) return false;
      if (Version != other.Version) return false;
      if (AlphaFactor != other.AlphaFactor) return false;
      if (MovementIndicatorColor != other.MovementIndicatorColor) return false;
      if (OffsetLocationIndicatorColor != other.OffsetLocationIndicatorColor) return false;
      if (LabelFontName != other.LabelFontName) return false;
      if (LabelFontSize != other.LabelFontSize) return false;
      if (LabelFontForegroundColor != other.LabelFontForegroundColor) return false;
      if (MinDynamicScale != other.MinDynamicScale) return false;
      if (MaxDynamicScale != other.MaxDynamicScale) return false;
      if (!ExtraFields.Equals(other.ExtraFields)) return false;
      if (!TacticalExtraFields.Equals(other.TacticalExtraFields)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (HierarchyCode.Length != 0) hash ^= HierarchyCode.GetHashCode();
      if (DrawDepth != 0) hash ^= DrawDepth.GetHashCode();
      if (RotationAngle != 0F) hash ^= RotationAngle.GetHashCode();
      if (Version != 0) hash ^= Version.GetHashCode();
      if (AlphaFactor != 0F) hash ^= AlphaFactor.GetHashCode();
      if (MovementIndicatorColor != 0) hash ^= MovementIndicatorColor.GetHashCode();
      if (OffsetLocationIndicatorColor != 0) hash ^= OffsetLocationIndicatorColor.GetHashCode();
      if (LabelFontName.Length != 0) hash ^= LabelFontName.GetHashCode();
      if (LabelFontSize != 0) hash ^= LabelFontSize.GetHashCode();
      if (LabelFontForegroundColor != 0) hash ^= LabelFontForegroundColor.GetHashCode();
      if (MinDynamicScale != 0F) hash ^= MinDynamicScale.GetHashCode();
      if (MaxDynamicScale != 0F) hash ^= MaxDynamicScale.GetHashCode();
      hash ^= ExtraFields.GetHashCode();
      hash ^= TacticalExtraFields.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      if (HierarchyCode.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(HierarchyCode);
      }
      if (DrawDepth != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(DrawDepth);
      }
      if (RotationAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(RotationAngle);
      }
      if (Version != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(Version);
      }
      if (AlphaFactor != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(AlphaFactor);
      }
      if (MovementIndicatorColor != 0) {
        output.WriteRawTag(72);
        output.WriteUInt32(MovementIndicatorColor);
      }
      if (OffsetLocationIndicatorColor != 0) {
        output.WriteRawTag(80);
        output.WriteUInt32(OffsetLocationIndicatorColor);
      }
      if (LabelFontName.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(LabelFontName);
      }
      if (LabelFontSize != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(LabelFontSize);
      }
      if (LabelFontForegroundColor != 0) {
        output.WriteRawTag(104);
        output.WriteUInt32(LabelFontForegroundColor);
      }
      if (MinDynamicScale != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(MinDynamicScale);
      }
      if (MaxDynamicScale != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(MaxDynamicScale);
      }
      extraFields_.WriteTo(output, _map_extraFields_codec);
      tacticalExtraFields_.WriteTo(output, _map_tacticalExtraFields_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (HierarchyCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(HierarchyCode);
      }
      if (DrawDepth != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DrawDepth);
      }
      if (RotationAngle != 0F) {
        size += 1 + 4;
      }
      if (Version != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Version);
      }
      if (AlphaFactor != 0F) {
        size += 1 + 4;
      }
      if (MovementIndicatorColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MovementIndicatorColor);
      }
      if (OffsetLocationIndicatorColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OffsetLocationIndicatorColor);
      }
      if (LabelFontName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LabelFontName);
      }
      if (LabelFontSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LabelFontSize);
      }
      if (LabelFontForegroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LabelFontForegroundColor);
      }
      if (MinDynamicScale != 0F) {
        size += 1 + 4;
      }
      if (MaxDynamicScale != 0F) {
        size += 1 + 4;
      }
      size += extraFields_.CalculateSize(_map_extraFields_codec);
      size += tacticalExtraFields_.CalculateSize(_map_tacticalExtraFields_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DataFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.HierarchyCode.Length != 0) {
        HierarchyCode = other.HierarchyCode;
      }
      if (other.DrawDepth != 0) {
        DrawDepth = other.DrawDepth;
      }
      if (other.RotationAngle != 0F) {
        RotationAngle = other.RotationAngle;
      }
      if (other.Version != 0) {
        Version = other.Version;
      }
      if (other.AlphaFactor != 0F) {
        AlphaFactor = other.AlphaFactor;
      }
      if (other.MovementIndicatorColor != 0) {
        MovementIndicatorColor = other.MovementIndicatorColor;
      }
      if (other.OffsetLocationIndicatorColor != 0) {
        OffsetLocationIndicatorColor = other.OffsetLocationIndicatorColor;
      }
      if (other.LabelFontName.Length != 0) {
        LabelFontName = other.LabelFontName;
      }
      if (other.LabelFontSize != 0) {
        LabelFontSize = other.LabelFontSize;
      }
      if (other.LabelFontForegroundColor != 0) {
        LabelFontForegroundColor = other.LabelFontForegroundColor;
      }
      if (other.MinDynamicScale != 0F) {
        MinDynamicScale = other.MinDynamicScale;
      }
      if (other.MaxDynamicScale != 0F) {
        MaxDynamicScale = other.MaxDynamicScale;
      }
      extraFields_.Add(other.extraFields_);
      tacticalExtraFields_.Add(other.tacticalExtraFields_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
          case 34: {
            HierarchyCode = input.ReadString();
            break;
          }
          case 40: {
            DrawDepth = input.ReadInt32();
            break;
          }
          case 53: {
            RotationAngle = input.ReadFloat();
            break;
          }
          case 56: {
            Version = input.ReadUInt32();
            break;
          }
          case 69: {
            AlphaFactor = input.ReadFloat();
            break;
          }
          case 72: {
            MovementIndicatorColor = input.ReadUInt32();
            break;
          }
          case 80: {
            OffsetLocationIndicatorColor = input.ReadUInt32();
            break;
          }
          case 90: {
            LabelFontName = input.ReadString();
            break;
          }
          case 96: {
            LabelFontSize = input.ReadUInt32();
            break;
          }
          case 104: {
            LabelFontForegroundColor = input.ReadUInt32();
            break;
          }
          case 117: {
            MinDynamicScale = input.ReadFloat();
            break;
          }
          case 125: {
            MaxDynamicScale = input.ReadFloat();
            break;
          }
          case 130: {
            extraFields_.AddEntriesFrom(input, _map_extraFields_codec);
            break;
          }
          case 138: {
            tacticalExtraFields_.AddEntriesFrom(input, _map_tacticalExtraFields_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class TacticalFieldsProto : pb::IMessage<TacticalFieldsProto> {
    private static readonly pb::MessageParser<TacticalFieldsProto> _parser = new pb::MessageParser<TacticalFieldsProto>(() => new TacticalFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TacticalFieldsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto(TacticalFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minefieldOpacity_ = other.minefieldOpacity_;
      symbolIndicator_ = other.symbolIndicator_;
      additionalInformation_ = other.additionalInformation_.Clone();
      uniqueDesignation_ = other.uniqueDesignation_.Clone();
      dateTimeGroup_ = other.dateTimeGroup_.Clone();
      offsetLocationDisplacementX_ = other.offsetLocationDisplacementX_;
      offsetLocationDisplacementY_ = other.offsetLocationDisplacementY_;
      quantity_ = other.quantity_;
      nuclearWeaponType_ = other.nuclearWeaponType_;
      directionOfMovement_ = other.directionOfMovement_;
      altitudeDepth_ = other.altitudeDepth_;
      distance_ = other.distance_;
      azimuth_ = other.azimuth_;
      tacticalEnums_ = other.tacticalEnums_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TacticalFieldsProto Clone() {
      return new TacticalFieldsProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "MinefieldOpacity" field.</summary>
    public const int MinefieldOpacityFieldNumber = 3;
    private float minefieldOpacity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinefieldOpacity {
      get { return minefieldOpacity_; }
      set {
        minefieldOpacity_ = value;
      }
    }

    /// <summary>Field number for the "SymbolIndicator" field.</summary>
    public const int SymbolIndicatorFieldNumber = 4;
    private string symbolIndicator_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolIndicator {
      get { return symbolIndicator_; }
      set {
        symbolIndicator_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "AdditionalInformation" field.</summary>
    public const int AdditionalInformationFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_additionalInformation_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> additionalInformation_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> AdditionalInformation {
      get { return additionalInformation_; }
    }

    /// <summary>Field number for the "UniqueDesignation" field.</summary>
    public const int UniqueDesignationFieldNumber = 6;
    private static readonly pb::FieldCodec<string> _repeated_uniqueDesignation_codec
        = pb::FieldCodec.ForString(50);
    private readonly pbc::RepeatedField<string> uniqueDesignation_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> UniqueDesignation {
      get { return uniqueDesignation_; }
    }

    /// <summary>Field number for the "DateTimeGroup" field.</summary>
    public const int DateTimeGroupFieldNumber = 7;
    private static readonly pb::FieldCodec<string> _repeated_dateTimeGroup_codec
        = pb::FieldCodec.ForString(58);
    private readonly pbc::RepeatedField<string> dateTimeGroup_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> DateTimeGroup {
      get { return dateTimeGroup_; }
    }

    /// <summary>Field number for the "OffsetLocationDisplacementX" field.</summary>
    public const int OffsetLocationDisplacementXFieldNumber = 8;
    private float offsetLocationDisplacementX_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OffsetLocationDisplacementX {
      get { return offsetLocationDisplacementX_; }
      set {
        offsetLocationDisplacementX_ = value;
      }
    }

    /// <summary>Field number for the "OffsetLocationDisplacementY" field.</summary>
    public const int OffsetLocationDisplacementYFieldNumber = 9;
    private float offsetLocationDisplacementY_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OffsetLocationDisplacementY {
      get { return offsetLocationDisplacementY_; }
      set {
        offsetLocationDisplacementY_ = value;
      }
    }

    /// <summary>Field number for the "Quantity" field.</summary>
    public const int QuantityFieldNumber = 10;
    private float quantity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Quantity {
      get { return quantity_; }
      set {
        quantity_ = value;
      }
    }

    /// <summary>Field number for the "NuclearWeaponType" field.</summary>
    public const int NuclearWeaponTypeFieldNumber = 11;
    private string nuclearWeaponType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string NuclearWeaponType {
      get { return nuclearWeaponType_; }
      set {
        nuclearWeaponType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "DirectionOfMovement" field.</summary>
    public const int DirectionOfMovementFieldNumber = 12;
    private string directionOfMovement_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DirectionOfMovement {
      get { return directionOfMovement_; }
      set {
        directionOfMovement_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "AltitudeDepth" field.</summary>
    public const int AltitudeDepthFieldNumber = 13;
    private float altitudeDepth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float AltitudeDepth {
      get { return altitudeDepth_; }
      set {
        altitudeDepth_ = value;
      }
    }

    /// <summary>Field number for the "Distance" field.</summary>
    public const int DistanceFieldNumber = 14;
    private float distance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Distance {
      get { return distance_; }
      set {
        distance_ = value;
      }
    }

    /// <summary>Field number for the "Azimuth" field.</summary>
    public const int AzimuthFieldNumber = 15;
    private float azimuth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Azimuth {
      get { return azimuth_; }
      set {
        azimuth_ = value;
      }
    }

    /// <summary>Field number for the "TacticalEnums" field.</summary>
    public const int TacticalEnumsFieldNumber = 16;
    private uint tacticalEnums_;
    /// <summary>
    /// Tactical enum attributes are mapped into this attribute
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint TacticalEnums {
      get { return tacticalEnums_; }
      set {
        tacticalEnums_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TacticalFieldsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TacticalFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinefieldOpacity != other.MinefieldOpacity) return false;
      if (SymbolIndicator != other.SymbolIndicator) return false;
      if(!additionalInformation_.Equals(other.additionalInformation_)) return false;
      if(!uniqueDesignation_.Equals(other.uniqueDesignation_)) return false;
      if(!dateTimeGroup_.Equals(other.dateTimeGroup_)) return false;
      if (OffsetLocationDisplacementX != other.OffsetLocationDisplacementX) return false;
      if (OffsetLocationDisplacementY != other.OffsetLocationDisplacementY) return false;
      if (Quantity != other.Quantity) return false;
      if (NuclearWeaponType != other.NuclearWeaponType) return false;
      if (DirectionOfMovement != other.DirectionOfMovement) return false;
      if (AltitudeDepth != other.AltitudeDepth) return false;
      if (Distance != other.Distance) return false;
      if (Azimuth != other.Azimuth) return false;
      if (TacticalEnums != other.TacticalEnums) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinefieldOpacity != 0F) hash ^= MinefieldOpacity.GetHashCode();
      if (SymbolIndicator.Length != 0) hash ^= SymbolIndicator.GetHashCode();
      hash ^= additionalInformation_.GetHashCode();
      hash ^= uniqueDesignation_.GetHashCode();
      hash ^= dateTimeGroup_.GetHashCode();
      if (OffsetLocationDisplacementX != 0F) hash ^= OffsetLocationDisplacementX.GetHashCode();
      if (OffsetLocationDisplacementY != 0F) hash ^= OffsetLocationDisplacementY.GetHashCode();
      if (Quantity != 0F) hash ^= Quantity.GetHashCode();
      if (NuclearWeaponType.Length != 0) hash ^= NuclearWeaponType.GetHashCode();
      if (DirectionOfMovement.Length != 0) hash ^= DirectionOfMovement.GetHashCode();
      if (AltitudeDepth != 0F) hash ^= AltitudeDepth.GetHashCode();
      if (Distance != 0F) hash ^= Distance.GetHashCode();
      if (Azimuth != 0F) hash ^= Azimuth.GetHashCode();
      if (TacticalEnums != 0) hash ^= TacticalEnums.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinefieldOpacity != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinefieldOpacity);
      }
      if (SymbolIndicator.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(SymbolIndicator);
      }
      additionalInformation_.WriteTo(output, _repeated_additionalInformation_codec);
      uniqueDesignation_.WriteTo(output, _repeated_uniqueDesignation_codec);
      dateTimeGroup_.WriteTo(output, _repeated_dateTimeGroup_codec);
      if (OffsetLocationDisplacementX != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(OffsetLocationDisplacementX);
      }
      if (OffsetLocationDisplacementY != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(OffsetLocationDisplacementY);
      }
      if (Quantity != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(Quantity);
      }
      if (NuclearWeaponType.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(NuclearWeaponType);
      }
      if (DirectionOfMovement.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(DirectionOfMovement);
      }
      if (AltitudeDepth != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(AltitudeDepth);
      }
      if (Distance != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(Distance);
      }
      if (Azimuth != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(Azimuth);
      }
      if (TacticalEnums != 0) {
        output.WriteRawTag(133, 1);
        output.WriteFixed32(TacticalEnums);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinefieldOpacity != 0F) {
        size += 1 + 4;
      }
      if (SymbolIndicator.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SymbolIndicator);
      }
      size += additionalInformation_.CalculateSize(_repeated_additionalInformation_codec);
      size += uniqueDesignation_.CalculateSize(_repeated_uniqueDesignation_codec);
      size += dateTimeGroup_.CalculateSize(_repeated_dateTimeGroup_codec);
      if (OffsetLocationDisplacementX != 0F) {
        size += 1 + 4;
      }
      if (OffsetLocationDisplacementY != 0F) {
        size += 1 + 4;
      }
      if (Quantity != 0F) {
        size += 1 + 4;
      }
      if (NuclearWeaponType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NuclearWeaponType);
      }
      if (DirectionOfMovement.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DirectionOfMovement);
      }
      if (AltitudeDepth != 0F) {
        size += 1 + 4;
      }
      if (Distance != 0F) {
        size += 1 + 4;
      }
      if (Azimuth != 0F) {
        size += 1 + 4;
      }
      if (TacticalEnums != 0) {
        size += 2 + 4;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TacticalFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinefieldOpacity != 0F) {
        MinefieldOpacity = other.MinefieldOpacity;
      }
      if (other.SymbolIndicator.Length != 0) {
        SymbolIndicator = other.SymbolIndicator;
      }
      additionalInformation_.Add(other.additionalInformation_);
      uniqueDesignation_.Add(other.uniqueDesignation_);
      dateTimeGroup_.Add(other.dateTimeGroup_);
      if (other.OffsetLocationDisplacementX != 0F) {
        OffsetLocationDisplacementX = other.OffsetLocationDisplacementX;
      }
      if (other.OffsetLocationDisplacementY != 0F) {
        OffsetLocationDisplacementY = other.OffsetLocationDisplacementY;
      }
      if (other.Quantity != 0F) {
        Quantity = other.Quantity;
      }
      if (other.NuclearWeaponType.Length != 0) {
        NuclearWeaponType = other.NuclearWeaponType;
      }
      if (other.DirectionOfMovement.Length != 0) {
        DirectionOfMovement = other.DirectionOfMovement;
      }
      if (other.AltitudeDepth != 0F) {
        AltitudeDepth = other.AltitudeDepth;
      }
      if (other.Distance != 0F) {
        Distance = other.Distance;
      }
      if (other.Azimuth != 0F) {
        Azimuth = other.Azimuth;
      }
      if (other.TacticalEnums != 0) {
        TacticalEnums = other.TacticalEnums;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinefieldOpacity = input.ReadFloat();
            break;
          }
          case 34: {
            SymbolIndicator = input.ReadString();
            break;
          }
          case 42: {
            additionalInformation_.AddEntriesFrom(input, _repeated_additionalInformation_codec);
            break;
          }
          case 50: {
            uniqueDesignation_.AddEntriesFrom(input, _repeated_uniqueDesignation_codec);
            break;
          }
          case 58: {
            dateTimeGroup_.AddEntriesFrom(input, _repeated_dateTimeGroup_codec);
            break;
          }
          case 69: {
            OffsetLocationDisplacementX = input.ReadFloat();
            break;
          }
          case 77: {
            OffsetLocationDisplacementY = input.ReadFloat();
            break;
          }
          case 85: {
            Quantity = input.ReadFloat();
            break;
          }
          case 90: {
            NuclearWeaponType = input.ReadString();
            break;
          }
          case 98: {
            DirectionOfMovement = input.ReadString();
            break;
          }
          case 109: {
            AltitudeDepth = input.ReadFloat();
            break;
          }
          case 117: {
            Distance = input.ReadFloat();
            break;
          }
          case 125: {
            Azimuth = input.ReadFloat();
            break;
          }
          case 133: {
            TacticalEnums = input.ReadFixed32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class GenericFieldsProto : pb::IMessage<GenericFieldsProto> {
    private static readonly pb::MessageParser<GenericFieldsProto> _parser = new pb::MessageParser<GenericFieldsProto>(() => new GenericFieldsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GenericFieldsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto(GenericFieldsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      lineColor_ = other.lineColor_;
      lineDashStyle_ = other.lineDashStyle_.Clone();
      lineDashStyleOffset_ = other.lineDashStyleOffset_;
      centerLineWidth_ = other.centerLineWidth_;
      centerLineColor_ = other.centerLineColor_;
      centerLineDashStyle_ = other.centerLineDashStyle_.Clone();
      centerLineDashStyleOffset_ = other.centerLineDashStyleOffset_;
      lineWidth_ = other.lineWidth_;
      lineOutlineWidth_ = other.lineOutlineWidth_;
      lineOutlineColor_ = other.lineOutlineColor_;
      fillForegroundColor_ = other.fillForegroundColor_;
      fillBackgroundColor_ = other.fillBackgroundColor_;
      bufferLineColor_ = other.bufferLineColor_;
      bufferLineDashStyle_ = other.bufferLineDashStyle_.Clone();
      bufferLineDashStyleOffset_ = other.bufferLineDashStyleOffset_;
      bufferLineWidth_ = other.bufferLineWidth_;
      bufferWidth_ = other.bufferWidth_;
      text_ = other.text_;
      fontName_ = other.fontName_;
      fontSize_ = other.fontSize_;
      fontForegroundColor_ = other.fontForegroundColor_;
      fontBackgroundColor_ = other.fontBackgroundColor_;
      numberOfRadials_ = other.numberOfRadials_;
      symbolType_ = other.symbolType_;
      symbolCode_ = other.symbolCode_;
      genericType_ = other.genericType_;
      uncertaintyAngle_ = other.uncertaintyAngle_;
      margin_ = other.margin_;
      minFontSize_ = other.minFontSize_;
      minFontMapScale_ = other.minFontMapScale_;
      maxFontMapScale_ = other.maxFontMapScale_;
      genericEnums_ = other.genericEnums_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GenericFieldsProto Clone() {
      return new GenericFieldsProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "LineColor" field.</summary>
    public const int LineColorFieldNumber = 3;
    private uint lineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LineColor {
      get { return lineColor_; }
      set {
        lineColor_ = value;
      }
    }

    /// <summary>Field number for the "LineDashStyle" field.</summary>
    public const int LineDashStyleFieldNumber = 4;
    private static readonly pb::FieldCodec<float> _repeated_lineDashStyle_codec
        = pb::FieldCodec.ForFloat(34);
    private readonly pbc::RepeatedField<float> lineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> LineDashStyle {
      get { return lineDashStyle_; }
    }

    /// <summary>Field number for the "LineDashStyleOffset" field.</summary>
    public const int LineDashStyleOffsetFieldNumber = 5;
    private float lineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineDashStyleOffset {
      get { return lineDashStyleOffset_; }
      set {
        lineDashStyleOffset_ = value;
      }
    }

    /// <summary>Field number for the "CenterLineWidth" field.</summary>
    public const int CenterLineWidthFieldNumber = 6;
    private float centerLineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CenterLineWidth {
      get { return centerLineWidth_; }
      set {
        centerLineWidth_ = value;
      }
    }

    /// <summary>Field number for the "CenterLineColor" field.</summary>
    public const int CenterLineColorFieldNumber = 7;
    private uint centerLineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint CenterLineColor {
      get { return centerLineColor_; }
      set {
        centerLineColor_ = value;
      }
    }

    /// <summary>Field number for the "CenterLineDashStyle" field.</summary>
    public const int CenterLineDashStyleFieldNumber = 8;
    private static readonly pb::FieldCodec<float> _repeated_centerLineDashStyle_codec
        = pb::FieldCodec.ForFloat(66);
    private readonly pbc::RepeatedField<float> centerLineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> CenterLineDashStyle {
      get { return centerLineDashStyle_; }
    }

    /// <summary>Field number for the "CenterLineDashStyleOffset" field.</summary>
    public const int CenterLineDashStyleOffsetFieldNumber = 9;
    private float centerLineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CenterLineDashStyleOffset {
      get { return centerLineDashStyleOffset_; }
      set {
        centerLineDashStyleOffset_ = value;
      }
    }

    /// <summary>Field number for the "LineWidth" field.</summary>
    public const int LineWidthFieldNumber = 10;
    private float lineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineWidth {
      get { return lineWidth_; }
      set {
        lineWidth_ = value;
      }
    }

    /// <summary>Field number for the "LineOutlineWidth" field.</summary>
    public const int LineOutlineWidthFieldNumber = 11;
    private float lineOutlineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LineOutlineWidth {
      get { return lineOutlineWidth_; }
      set {
        lineOutlineWidth_ = value;
      }
    }

    /// <summary>Field number for the "LineOutlineColor" field.</summary>
    public const int LineOutlineColorFieldNumber = 12;
    private uint lineOutlineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint LineOutlineColor {
      get { return lineOutlineColor_; }
      set {
        lineOutlineColor_ = value;
      }
    }

    /// <summary>Field number for the "FillForegroundColor" field.</summary>
    public const int FillForegroundColorFieldNumber = 13;
    private uint fillForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FillForegroundColor {
      get { return fillForegroundColor_; }
      set {
        fillForegroundColor_ = value;
      }
    }

    /// <summary>Field number for the "FillBackgroundColor" field.</summary>
    public const int FillBackgroundColorFieldNumber = 14;
    private uint fillBackgroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FillBackgroundColor {
      get { return fillBackgroundColor_; }
      set {
        fillBackgroundColor_ = value;
      }
    }

    /// <summary>Field number for the "BufferLineColor" field.</summary>
    public const int BufferLineColorFieldNumber = 15;
    private uint bufferLineColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint BufferLineColor {
      get { return bufferLineColor_; }
      set {
        bufferLineColor_ = value;
      }
    }

    /// <summary>Field number for the "BufferLineDashStyle" field.</summary>
    public const int BufferLineDashStyleFieldNumber = 16;
    private static readonly pb::FieldCodec<float> _repeated_bufferLineDashStyle_codec
        = pb::FieldCodec.ForFloat(130);
    private readonly pbc::RepeatedField<float> bufferLineDashStyle_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<float> BufferLineDashStyle {
      get { return bufferLineDashStyle_; }
    }

    /// <summary>Field number for the "BufferLineDashStyleOffset" field.</summary>
    public const int BufferLineDashStyleOffsetFieldNumber = 17;
    private float bufferLineDashStyleOffset_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferLineDashStyleOffset {
      get { return bufferLineDashStyleOffset_; }
      set {
        bufferLineDashStyleOffset_ = value;
      }
    }

    /// <summary>Field number for the "BufferLineWidth" field.</summary>
    public const int BufferLineWidthFieldNumber = 18;
    private float bufferLineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferLineWidth {
      get { return bufferLineWidth_; }
      set {
        bufferLineWidth_ = value;
      }
    }

    /// <summary>Field number for the "BufferWidth" field.</summary>
    public const int BufferWidthFieldNumber = 19;
    private float bufferWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float BufferWidth {
      get { return bufferWidth_; }
      set {
        bufferWidth_ = value;
      }
    }

    /// <summary>Field number for the "Text" field.</summary>
    public const int TextFieldNumber = 20;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "FontName" field.</summary>
    public const int FontNameFieldNumber = 21;
    private string fontName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FontName {
      get { return fontName_; }
      set {
        fontName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "FontSize" field.</summary>
    public const int FontSizeFieldNumber = 22;
    private uint fontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontSize {
      get { return fontSize_; }
      set {
        fontSize_ = value;
      }
    }

    /// <summary>Field number for the "FontForegroundColor" field.</summary>
    public const int FontForegroundColorFieldNumber = 23;
    private uint fontForegroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontForegroundColor {
      get { return fontForegroundColor_; }
      set {
        fontForegroundColor_ = value;
      }
    }

    /// <summary>Field number for the "FontBackgroundColor" field.</summary>
    public const int FontBackgroundColorFieldNumber = 24;
    private uint fontBackgroundColor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint FontBackgroundColor {
      get { return fontBackgroundColor_; }
      set {
        fontBackgroundColor_ = value;
      }
    }

    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 25;
    private int numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }

    /// <summary>Field number for the "SymbolType" field.</summary>
    public const int SymbolTypeFieldNumber = 26;
    private string symbolType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolType {
      get { return symbolType_; }
      set {
        symbolType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "SymbolCode" field.</summary>
    public const int SymbolCodeFieldNumber = 27;
    private string symbolCode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string SymbolCode {
      get { return symbolCode_; }
      set {
        symbolCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "GenericType" field.</summary>
    public const int GenericTypeFieldNumber = 28;
    private string genericType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GenericType {
      get { return genericType_; }
      set {
        genericType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "UncertaintyAngle" field.</summary>
    public const int UncertaintyAngleFieldNumber = 29;
    private float uncertaintyAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float UncertaintyAngle {
      get { return uncertaintyAngle_; }
      set {
        uncertaintyAngle_ = value;
      }
    }

    /// <summary>Field number for the "Margin" field.</summary>
    public const int MarginFieldNumber = 30;
    private float margin_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Margin {
      get { return margin_; }
      set {
        margin_ = value;
      }
    }

    /// <summary>Field number for the "MinFontSize" field.</summary>
    public const int MinFontSizeFieldNumber = 31;
    private uint minFontSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MinFontSize {
      get { return minFontSize_; }
      set {
        minFontSize_ = value;
      }
    }

    /// <summary>Field number for the "MinFontMapScale" field.</summary>
    public const int MinFontMapScaleFieldNumber = 32;
    private uint minFontMapScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MinFontMapScale {
      get { return minFontMapScale_; }
      set {
        minFontMapScale_ = value;
      }
    }

    /// <summary>Field number for the "MaxFontMapScale" field.</summary>
    public const int MaxFontMapScaleFieldNumber = 33;
    private uint maxFontMapScale_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint MaxFontMapScale {
      get { return maxFontMapScale_; }
      set {
        maxFontMapScale_ = value;
      }
    }

    /// <summary>Field number for the "GenericEnums" field.</summary>
    public const int GenericEnumsFieldNumber = 34;
    private uint genericEnums_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint GenericEnums {
      get { return genericEnums_; }
      set {
        genericEnums_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as GenericFieldsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GenericFieldsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (LineColor != other.LineColor) return false;
      if(!lineDashStyle_.Equals(other.lineDashStyle_)) return false;
      if (LineDashStyleOffset != other.LineDashStyleOffset) return false;
      if (CenterLineWidth != other.CenterLineWidth) return false;
      if (CenterLineColor != other.CenterLineColor) return false;
      if(!centerLineDashStyle_.Equals(other.centerLineDashStyle_)) return false;
      if (CenterLineDashStyleOffset != other.CenterLineDashStyleOffset) return false;
      if (LineWidth != other.LineWidth) return false;
      if (LineOutlineWidth != other.LineOutlineWidth) return false;
      if (LineOutlineColor != other.LineOutlineColor) return false;
      if (FillForegroundColor != other.FillForegroundColor) return false;
      if (FillBackgroundColor != other.FillBackgroundColor) return false;
      if (BufferLineColor != other.BufferLineColor) return false;
      if(!bufferLineDashStyle_.Equals(other.bufferLineDashStyle_)) return false;
      if (BufferLineDashStyleOffset != other.BufferLineDashStyleOffset) return false;
      if (BufferLineWidth != other.BufferLineWidth) return false;
      if (BufferWidth != other.BufferWidth) return false;
      if (Text != other.Text) return false;
      if (FontName != other.FontName) return false;
      if (FontSize != other.FontSize) return false;
      if (FontForegroundColor != other.FontForegroundColor) return false;
      if (FontBackgroundColor != other.FontBackgroundColor) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      if (SymbolType != other.SymbolType) return false;
      if (SymbolCode != other.SymbolCode) return false;
      if (GenericType != other.GenericType) return false;
      if (UncertaintyAngle != other.UncertaintyAngle) return false;
      if (Margin != other.Margin) return false;
      if (MinFontSize != other.MinFontSize) return false;
      if (MinFontMapScale != other.MinFontMapScale) return false;
      if (MaxFontMapScale != other.MaxFontMapScale) return false;
      if (GenericEnums != other.GenericEnums) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (LineColor != 0) hash ^= LineColor.GetHashCode();
      hash ^= lineDashStyle_.GetHashCode();
      if (LineDashStyleOffset != 0F) hash ^= LineDashStyleOffset.GetHashCode();
      if (CenterLineWidth != 0F) hash ^= CenterLineWidth.GetHashCode();
      if (CenterLineColor != 0) hash ^= CenterLineColor.GetHashCode();
      hash ^= centerLineDashStyle_.GetHashCode();
      if (CenterLineDashStyleOffset != 0F) hash ^= CenterLineDashStyleOffset.GetHashCode();
      if (LineWidth != 0F) hash ^= LineWidth.GetHashCode();
      if (LineOutlineWidth != 0F) hash ^= LineOutlineWidth.GetHashCode();
      if (LineOutlineColor != 0) hash ^= LineOutlineColor.GetHashCode();
      if (FillForegroundColor != 0) hash ^= FillForegroundColor.GetHashCode();
      if (FillBackgroundColor != 0) hash ^= FillBackgroundColor.GetHashCode();
      if (BufferLineColor != 0) hash ^= BufferLineColor.GetHashCode();
      hash ^= bufferLineDashStyle_.GetHashCode();
      if (BufferLineDashStyleOffset != 0F) hash ^= BufferLineDashStyleOffset.GetHashCode();
      if (BufferLineWidth != 0F) hash ^= BufferLineWidth.GetHashCode();
      if (BufferWidth != 0F) hash ^= BufferWidth.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (FontName.Length != 0) hash ^= FontName.GetHashCode();
      if (FontSize != 0) hash ^= FontSize.GetHashCode();
      if (FontForegroundColor != 0) hash ^= FontForegroundColor.GetHashCode();
      if (FontBackgroundColor != 0) hash ^= FontBackgroundColor.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      if (SymbolType.Length != 0) hash ^= SymbolType.GetHashCode();
      if (SymbolCode.Length != 0) hash ^= SymbolCode.GetHashCode();
      if (GenericType.Length != 0) hash ^= GenericType.GetHashCode();
      if (UncertaintyAngle != 0F) hash ^= UncertaintyAngle.GetHashCode();
      if (Margin != 0F) hash ^= Margin.GetHashCode();
      if (MinFontSize != 0) hash ^= MinFontSize.GetHashCode();
      if (MinFontMapScale != 0) hash ^= MinFontMapScale.GetHashCode();
      if (MaxFontMapScale != 0) hash ^= MaxFontMapScale.GetHashCode();
      if (GenericEnums != 0) hash ^= GenericEnums.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (LineColor != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(LineColor);
      }
      lineDashStyle_.WriteTo(output, _repeated_lineDashStyle_codec);
      if (LineDashStyleOffset != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(LineDashStyleOffset);
      }
      if (CenterLineWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(CenterLineWidth);
      }
      if (CenterLineColor != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(CenterLineColor);
      }
      centerLineDashStyle_.WriteTo(output, _repeated_centerLineDashStyle_codec);
      if (CenterLineDashStyleOffset != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(CenterLineDashStyleOffset);
      }
      if (LineWidth != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(LineWidth);
      }
      if (LineOutlineWidth != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(LineOutlineWidth);
      }
      if (LineOutlineColor != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(LineOutlineColor);
      }
      if (FillForegroundColor != 0) {
        output.WriteRawTag(104);
        output.WriteUInt32(FillForegroundColor);
      }
      if (FillBackgroundColor != 0) {
        output.WriteRawTag(112);
        output.WriteUInt32(FillBackgroundColor);
      }
      if (BufferLineColor != 0) {
        output.WriteRawTag(120);
        output.WriteUInt32(BufferLineColor);
      }
      bufferLineDashStyle_.WriteTo(output, _repeated_bufferLineDashStyle_codec);
      if (BufferLineDashStyleOffset != 0F) {
        output.WriteRawTag(141, 1);
        output.WriteFloat(BufferLineDashStyleOffset);
      }
      if (BufferLineWidth != 0F) {
        output.WriteRawTag(149, 1);
        output.WriteFloat(BufferLineWidth);
      }
      if (BufferWidth != 0F) {
        output.WriteRawTag(157, 1);
        output.WriteFloat(BufferWidth);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(Text);
      }
      if (FontName.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(FontName);
      }
      if (FontSize != 0) {
        output.WriteRawTag(176, 1);
        output.WriteUInt32(FontSize);
      }
      if (FontForegroundColor != 0) {
        output.WriteRawTag(184, 1);
        output.WriteUInt32(FontForegroundColor);
      }
      if (FontBackgroundColor != 0) {
        output.WriteRawTag(192, 1);
        output.WriteUInt32(FontBackgroundColor);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(200, 1);
        output.WriteInt32(NumberOfRadials);
      }
      if (SymbolType.Length != 0) {
        output.WriteRawTag(210, 1);
        output.WriteString(SymbolType);
      }
      if (SymbolCode.Length != 0) {
        output.WriteRawTag(218, 1);
        output.WriteString(SymbolCode);
      }
      if (GenericType.Length != 0) {
        output.WriteRawTag(226, 1);
        output.WriteString(GenericType);
      }
      if (UncertaintyAngle != 0F) {
        output.WriteRawTag(237, 1);
        output.WriteFloat(UncertaintyAngle);
      }
      if (Margin != 0F) {
        output.WriteRawTag(245, 1);
        output.WriteFloat(Margin);
      }
      if (MinFontSize != 0) {
        output.WriteRawTag(248, 1);
        output.WriteUInt32(MinFontSize);
      }
      if (MinFontMapScale != 0) {
        output.WriteRawTag(128, 2);
        output.WriteUInt32(MinFontMapScale);
      }
      if (MaxFontMapScale != 0) {
        output.WriteRawTag(136, 2);
        output.WriteUInt32(MaxFontMapScale);
      }
      if (GenericEnums != 0) {
        output.WriteRawTag(149, 2);
        output.WriteFixed32(GenericEnums);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (LineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LineColor);
      }
      size += lineDashStyle_.CalculateSize(_repeated_lineDashStyle_codec);
      if (LineDashStyleOffset != 0F) {
        size += 1 + 4;
      }
      if (CenterLineWidth != 0F) {
        size += 1 + 4;
      }
      if (CenterLineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(CenterLineColor);
      }
      size += centerLineDashStyle_.CalculateSize(_repeated_centerLineDashStyle_codec);
      if (CenterLineDashStyleOffset != 0F) {
        size += 1 + 4;
      }
      if (LineWidth != 0F) {
        size += 1 + 4;
      }
      if (LineOutlineWidth != 0F) {
        size += 1 + 4;
      }
      if (LineOutlineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(LineOutlineColor);
      }
      if (FillForegroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FillForegroundColor);
      }
      if (FillBackgroundColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FillBackgroundColor);
      }
      if (BufferLineColor != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(BufferLineColor);
      }
      size += bufferLineDashStyle_.CalculateSize(_repeated_bufferLineDashStyle_codec);
      if (BufferLineDashStyleOffset != 0F) {
        size += 2 + 4;
      }
      if (BufferLineWidth != 0F) {
        size += 2 + 4;
      }
      if (BufferWidth != 0F) {
        size += 2 + 4;
      }
      if (Text.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (FontName.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(FontName);
      }
      if (FontSize != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontSize);
      }
      if (FontForegroundColor != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontForegroundColor);
      }
      if (FontBackgroundColor != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(FontBackgroundColor);
      }
      if (NumberOfRadials != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumberOfRadials);
      }
      if (SymbolType.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(SymbolType);
      }
      if (SymbolCode.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(SymbolCode);
      }
      if (GenericType.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(GenericType);
      }
      if (UncertaintyAngle != 0F) {
        size += 2 + 4;
      }
      if (Margin != 0F) {
        size += 2 + 4;
      }
      if (MinFontSize != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MinFontSize);
      }
      if (MinFontMapScale != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MinFontMapScale);
      }
      if (MaxFontMapScale != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(MaxFontMapScale);
      }
      if (GenericEnums != 0) {
        size += 2 + 4;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GenericFieldsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.LineColor != 0) {
        LineColor = other.LineColor;
      }
      lineDashStyle_.Add(other.lineDashStyle_);
      if (other.LineDashStyleOffset != 0F) {
        LineDashStyleOffset = other.LineDashStyleOffset;
      }
      if (other.CenterLineWidth != 0F) {
        CenterLineWidth = other.CenterLineWidth;
      }
      if (other.CenterLineColor != 0) {
        CenterLineColor = other.CenterLineColor;
      }
      centerLineDashStyle_.Add(other.centerLineDashStyle_);
      if (other.CenterLineDashStyleOffset != 0F) {
        CenterLineDashStyleOffset = other.CenterLineDashStyleOffset;
      }
      if (other.LineWidth != 0F) {
        LineWidth = other.LineWidth;
      }
      if (other.LineOutlineWidth != 0F) {
        LineOutlineWidth = other.LineOutlineWidth;
      }
      if (other.LineOutlineColor != 0) {
        LineOutlineColor = other.LineOutlineColor;
      }
      if (other.FillForegroundColor != 0) {
        FillForegroundColor = other.FillForegroundColor;
      }
      if (other.FillBackgroundColor != 0) {
        FillBackgroundColor = other.FillBackgroundColor;
      }
      if (other.BufferLineColor != 0) {
        BufferLineColor = other.BufferLineColor;
      }
      bufferLineDashStyle_.Add(other.bufferLineDashStyle_);
      if (other.BufferLineDashStyleOffset != 0F) {
        BufferLineDashStyleOffset = other.BufferLineDashStyleOffset;
      }
      if (other.BufferLineWidth != 0F) {
        BufferLineWidth = other.BufferLineWidth;
      }
      if (other.BufferWidth != 0F) {
        BufferWidth = other.BufferWidth;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      if (other.FontName.Length != 0) {
        FontName = other.FontName;
      }
      if (other.FontSize != 0) {
        FontSize = other.FontSize;
      }
      if (other.FontForegroundColor != 0) {
        FontForegroundColor = other.FontForegroundColor;
      }
      if (other.FontBackgroundColor != 0) {
        FontBackgroundColor = other.FontBackgroundColor;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
      if (other.SymbolType.Length != 0) {
        SymbolType = other.SymbolType;
      }
      if (other.SymbolCode.Length != 0) {
        SymbolCode = other.SymbolCode;
      }
      if (other.GenericType.Length != 0) {
        GenericType = other.GenericType;
      }
      if (other.UncertaintyAngle != 0F) {
        UncertaintyAngle = other.UncertaintyAngle;
      }
      if (other.Margin != 0F) {
        Margin = other.Margin;
      }
      if (other.MinFontSize != 0) {
        MinFontSize = other.MinFontSize;
      }
      if (other.MinFontMapScale != 0) {
        MinFontMapScale = other.MinFontMapScale;
      }
      if (other.MaxFontMapScale != 0) {
        MaxFontMapScale = other.MaxFontMapScale;
      }
      if (other.GenericEnums != 0) {
        GenericEnums = other.GenericEnums;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            LineColor = input.ReadUInt32();
            break;
          }
          case 34:
          case 37: {
            lineDashStyle_.AddEntriesFrom(input, _repeated_lineDashStyle_codec);
            break;
          }
          case 45: {
            LineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 53: {
            CenterLineWidth = input.ReadFloat();
            break;
          }
          case 56: {
            CenterLineColor = input.ReadUInt32();
            break;
          }
          case 66:
          case 69: {
            centerLineDashStyle_.AddEntriesFrom(input, _repeated_centerLineDashStyle_codec);
            break;
          }
          case 77: {
            CenterLineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 85: {
            LineWidth = input.ReadFloat();
            break;
          }
          case 93: {
            LineOutlineWidth = input.ReadFloat();
            break;
          }
          case 96: {
            LineOutlineColor = input.ReadUInt32();
            break;
          }
          case 104: {
            FillForegroundColor = input.ReadUInt32();
            break;
          }
          case 112: {
            FillBackgroundColor = input.ReadUInt32();
            break;
          }
          case 120: {
            BufferLineColor = input.ReadUInt32();
            break;
          }
          case 130:
          case 133: {
            bufferLineDashStyle_.AddEntriesFrom(input, _repeated_bufferLineDashStyle_codec);
            break;
          }
          case 141: {
            BufferLineDashStyleOffset = input.ReadFloat();
            break;
          }
          case 149: {
            BufferLineWidth = input.ReadFloat();
            break;
          }
          case 157: {
            BufferWidth = input.ReadFloat();
            break;
          }
          case 162: {
            Text = input.ReadString();
            break;
          }
          case 170: {
            FontName = input.ReadString();
            break;
          }
          case 176: {
            FontSize = input.ReadUInt32();
            break;
          }
          case 184: {
            FontForegroundColor = input.ReadUInt32();
            break;
          }
          case 192: {
            FontBackgroundColor = input.ReadUInt32();
            break;
          }
          case 200: {
            NumberOfRadials = input.ReadInt32();
            break;
          }
          case 210: {
            SymbolType = input.ReadString();
            break;
          }
          case 218: {
            SymbolCode = input.ReadString();
            break;
          }
          case 226: {
            GenericType = input.ReadString();
            break;
          }
          case 237: {
            UncertaintyAngle = input.ReadFloat();
            break;
          }
          case 245: {
            Margin = input.ReadFloat();
            break;
          }
          case 248: {
            MinFontSize = input.ReadUInt32();
            break;
          }
          case 256: {
            MinFontMapScale = input.ReadUInt32();
            break;
          }
          case 264: {
            MaxFontMapScale = input.ReadUInt32();
            break;
          }
          case 277: {
            GenericEnums = input.ReadFixed32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class VerticalDistanceDataProto : pb::IMessage<VerticalDistanceDataProto> {
    private static readonly pb::MessageParser<VerticalDistanceDataProto> _parser = new pb::MessageParser<VerticalDistanceDataProto>(() => new VerticalDistanceDataProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VerticalDistanceDataProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto(VerticalDistanceDataProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      unitType_ = other.unitType_;
      dimensions_ = other.dimensions_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VerticalDistanceDataProto Clone() {
      return new VerticalDistanceDataProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "UnitType" field.</summary>
    public const int UnitTypeFieldNumber = 3;
    private string unitType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string UnitType {
      get { return unitType_; }
      set {
        unitType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "Dimensions" field.</summary>
    public const int DimensionsFieldNumber = 4;
    private float dimensions_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Dimensions {
      get { return dimensions_; }
      set {
        dimensions_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VerticalDistanceDataProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VerticalDistanceDataProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (UnitType != other.UnitType) return false;
      if (Dimensions != other.Dimensions) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (UnitType.Length != 0) hash ^= UnitType.GetHashCode();
      if (Dimensions != 0F) hash ^= Dimensions.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (UnitType.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(UnitType);
      }
      if (Dimensions != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(Dimensions);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (UnitType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(UnitType);
      }
      if (Dimensions != 0F) {
        size += 1 + 4;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VerticalDistanceDataProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.UnitType.Length != 0) {
        UnitType = other.UnitType;
      }
      if (other.Dimensions != 0F) {
        Dimensions = other.Dimensions;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            UnitType = input.ReadString();
            break;
          }
          case 37: {
            Dimensions = input.ReadFloat();
            break;
          }
        }
      }
    }

  }

  public sealed partial class SurfaceVolumeProto : pb::IMessage<SurfaceVolumeProto> {
    private static readonly pb::MessageParser<SurfaceVolumeProto> _parser = new pb::MessageParser<SurfaceVolumeProto>(() => new SurfaceVolumeProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SurfaceVolumeProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto(SurfaceVolumeProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      LowerVerticalDistance = other.lowerVerticalDistance_ != null ? other.LowerVerticalDistance.Clone() : null;
      UpperVerticalDistance = other.upperVerticalDistance_ != null ? other.UpperVerticalDistance.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SurfaceVolumeProto Clone() {
      return new SurfaceVolumeProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "LowerVerticalDistance" field.</summary>
    public const int LowerVerticalDistanceFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto lowerVerticalDistance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto LowerVerticalDistance {
      get { return lowerVerticalDistance_; }
      set {
        lowerVerticalDistance_ = value;
      }
    }

    /// <summary>Field number for the "UpperVerticalDistance" field.</summary>
    public const int UpperVerticalDistanceFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto upperVerticalDistance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto UpperVerticalDistance {
      get { return upperVerticalDistance_; }
      set {
        upperVerticalDistance_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SurfaceVolumeProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SurfaceVolumeProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(LowerVerticalDistance, other.LowerVerticalDistance)) return false;
      if (!object.Equals(UpperVerticalDistance, other.UpperVerticalDistance)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (lowerVerticalDistance_ != null) hash ^= LowerVerticalDistance.GetHashCode();
      if (upperVerticalDistance_ != null) hash ^= UpperVerticalDistance.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (lowerVerticalDistance_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(LowerVerticalDistance);
      }
      if (upperVerticalDistance_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(UpperVerticalDistance);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (lowerVerticalDistance_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LowerVerticalDistance);
      }
      if (upperVerticalDistance_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpperVerticalDistance);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SurfaceVolumeProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.lowerVerticalDistance_ != null) {
        if (lowerVerticalDistance_ == null) {
          lowerVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
        }
        LowerVerticalDistance.MergeFrom(other.LowerVerticalDistance);
      }
      if (other.upperVerticalDistance_ != null) {
        if (upperVerticalDistance_ == null) {
          upperVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
        }
        UpperVerticalDistance.MergeFrom(other.UpperVerticalDistance);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (lowerVerticalDistance_ == null) {
              lowerVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
            }
            input.ReadMessage(lowerVerticalDistance_);
            break;
          }
          case 34: {
            if (upperVerticalDistance_ == null) {
              upperVerticalDistance_ = new global::TPG.DrawObjects.Serialize.Protoc.VerticalDistanceDataProto();
            }
            input.ReadMessage(upperVerticalDistance_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class OrbitAreaProto : pb::IMessage<OrbitAreaProto> {
    private static readonly pb::MessageParser<OrbitAreaProto> _parser = new pb::MessageParser<OrbitAreaProto>(() => new OrbitAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<OrbitAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto(OrbitAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      FirstPoint = other.firstPoint_ != null ? other.FirstPoint.Clone() : null;
      SecondPoint = other.secondPoint_ != null ? other.SecondPoint.Clone() : null;
      width_ = other.width_;
      orbitAreaAligmentCode_ = other.orbitAreaAligmentCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaProto Clone() {
      return new OrbitAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "FirstPoint" field.</summary>
    public const int FirstPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto firstPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto FirstPoint {
      get { return firstPoint_; }
      set {
        firstPoint_ = value;
      }
    }

    /// <summary>Field number for the "SecondPoint" field.</summary>
    public const int SecondPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto secondPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto SecondPoint {
      get { return secondPoint_; }
      set {
        secondPoint_ = value;
      }
    }

    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 5;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }

    /// <summary>Field number for the "OrbitAreaAligmentCode" field.</summary>
    public const int OrbitAreaAligmentCodeFieldNumber = 6;
    private uint orbitAreaAligmentCode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OrbitAreaAligmentCode {
      get { return orbitAreaAligmentCode_; }
      set {
        orbitAreaAligmentCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as OrbitAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(OrbitAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(FirstPoint, other.FirstPoint)) return false;
      if (!object.Equals(SecondPoint, other.SecondPoint)) return false;
      if (Width != other.Width) return false;
      if (OrbitAreaAligmentCode != other.OrbitAreaAligmentCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (firstPoint_ != null) hash ^= FirstPoint.GetHashCode();
      if (secondPoint_ != null) hash ^= SecondPoint.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      if (OrbitAreaAligmentCode != 0) hash ^= OrbitAreaAligmentCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(FirstPoint);
      }
      if (secondPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(SecondPoint);
      }
      if (Width != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Width);
      }
      if (OrbitAreaAligmentCode != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(OrbitAreaAligmentCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstPoint);
      }
      if (secondPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondPoint);
      }
      if (Width != 0F) {
        size += 1 + 4;
      }
      if (OrbitAreaAligmentCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OrbitAreaAligmentCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(OrbitAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.firstPoint_ != null) {
        if (firstPoint_ == null) {
          firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        FirstPoint.MergeFrom(other.FirstPoint);
      }
      if (other.secondPoint_ != null) {
        if (secondPoint_ == null) {
          secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        SecondPoint.MergeFrom(other.SecondPoint);
      }
      if (other.Width != 0F) {
        Width = other.Width;
      }
      if (other.OrbitAreaAligmentCode != 0) {
        OrbitAreaAligmentCode = other.OrbitAreaAligmentCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (firstPoint_ == null) {
              firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(firstPoint_);
            break;
          }
          case 34: {
            if (secondPoint_ == null) {
              secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(secondPoint_);
            break;
          }
          case 45: {
            Width = input.ReadFloat();
            break;
          }
          case 48: {
            OrbitAreaAligmentCode = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class OrbitAreaShiftedIntProto : pb::IMessage<OrbitAreaShiftedIntProto> {
    private static readonly pb::MessageParser<OrbitAreaShiftedIntProto> _parser = new pb::MessageParser<OrbitAreaShiftedIntProto>(() => new OrbitAreaShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<OrbitAreaShiftedIntProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto(OrbitAreaShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      FirstPoint = other.firstPoint_ != null ? other.FirstPoint.Clone() : null;
      SecondPoint = other.secondPoint_ != null ? other.SecondPoint.Clone() : null;
      width_ = other.width_;
      orbitAreaAligmentCode_ = other.orbitAreaAligmentCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public OrbitAreaShiftedIntProto Clone() {
      return new OrbitAreaShiftedIntProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "FirstPoint" field.</summary>
    public const int FirstPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto firstPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto FirstPoint {
      get { return firstPoint_; }
      set {
        firstPoint_ = value;
      }
    }

    /// <summary>Field number for the "SecondPoint" field.</summary>
    public const int SecondPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto secondPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto SecondPoint {
      get { return secondPoint_; }
      set {
        secondPoint_ = value;
      }
    }

    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 5;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }

    /// <summary>Field number for the "OrbitAreaAligmentCode" field.</summary>
    public const int OrbitAreaAligmentCodeFieldNumber = 6;
    private uint orbitAreaAligmentCode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint OrbitAreaAligmentCode {
      get { return orbitAreaAligmentCode_; }
      set {
        orbitAreaAligmentCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as OrbitAreaShiftedIntProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(OrbitAreaShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(FirstPoint, other.FirstPoint)) return false;
      if (!object.Equals(SecondPoint, other.SecondPoint)) return false;
      if (Width != other.Width) return false;
      if (OrbitAreaAligmentCode != other.OrbitAreaAligmentCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (firstPoint_ != null) hash ^= FirstPoint.GetHashCode();
      if (secondPoint_ != null) hash ^= SecondPoint.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      if (OrbitAreaAligmentCode != 0) hash ^= OrbitAreaAligmentCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(FirstPoint);
      }
      if (secondPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(SecondPoint);
      }
      if (Width != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Width);
      }
      if (OrbitAreaAligmentCode != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(OrbitAreaAligmentCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (firstPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstPoint);
      }
      if (secondPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondPoint);
      }
      if (Width != 0F) {
        size += 1 + 4;
      }
      if (OrbitAreaAligmentCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OrbitAreaAligmentCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(OrbitAreaShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.firstPoint_ != null) {
        if (firstPoint_ == null) {
          firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        FirstPoint.MergeFrom(other.FirstPoint);
      }
      if (other.secondPoint_ != null) {
        if (secondPoint_ == null) {
          secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        SecondPoint.MergeFrom(other.SecondPoint);
      }
      if (other.Width != 0F) {
        Width = other.Width;
      }
      if (other.OrbitAreaAligmentCode != 0) {
        OrbitAreaAligmentCode = other.OrbitAreaAligmentCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (firstPoint_ == null) {
              firstPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(firstPoint_);
            break;
          }
          case 34: {
            if (secondPoint_ == null) {
              secondPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(secondPoint_);
            break;
          }
          case 45: {
            Width = input.ReadFloat();
            break;
          }
          case 48: {
            OrbitAreaAligmentCode = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class FanAreaProto : pb::IMessage<FanAreaProto> {
    private static readonly pb::MessageParser<FanAreaProto> _parser = new pb::MessageParser<FanAreaProto>(() => new FanAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FanAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[12]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto(FanAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minimumRange_ = other.minimumRange_;
      maximumRange_ = other.maximumRange_;
      orientationAngle_ = other.orientationAngle_;
      sectorSizeAngle_ = other.sectorSizeAngle_;
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaProto Clone() {
      return new FanAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "MinimumRange" field.</summary>
    public const int MinimumRangeFieldNumber = 3;
    private float minimumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinimumRange {
      get { return minimumRange_; }
      set {
        minimumRange_ = value;
      }
    }

    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 4;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }

    /// <summary>Field number for the "OrientationAngle" field.</summary>
    public const int OrientationAngleFieldNumber = 5;
    private float orientationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OrientationAngle {
      get { return orientationAngle_; }
      set {
        orientationAngle_ = value;
      }
    }

    /// <summary>Field number for the "SectorSizeAngle" field.</summary>
    public const int SectorSizeAngleFieldNumber = 6;
    private float sectorSizeAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float SectorSizeAngle {
      get { return sectorSizeAngle_; }
      set {
        sectorSizeAngle_ = value;
      }
    }

    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 7;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FanAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FanAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinimumRange != other.MinimumRange) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (OrientationAngle != other.OrientationAngle) return false;
      if (SectorSizeAngle != other.SectorSizeAngle) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinimumRange != 0F) hash ^= MinimumRange.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (OrientationAngle != 0F) hash ^= OrientationAngle.GetHashCode();
      if (SectorSizeAngle != 0F) hash ^= SectorSizeAngle.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinimumRange);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(MaximumRange);
      }
      if (OrientationAngle != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(OrientationAngle);
      }
      if (SectorSizeAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(SectorSizeAngle);
      }
      if (vertexPoint_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(VertexPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (OrientationAngle != 0F) {
        size += 1 + 4;
      }
      if (SectorSizeAngle != 0F) {
        size += 1 + 4;
      }
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FanAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinimumRange != 0F) {
        MinimumRange = other.MinimumRange;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.OrientationAngle != 0F) {
        OrientationAngle = other.OrientationAngle;
      }
      if (other.SectorSizeAngle != 0F) {
        SectorSizeAngle = other.SectorSizeAngle;
      }
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinimumRange = input.ReadFloat();
            break;
          }
          case 37: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 45: {
            OrientationAngle = input.ReadFloat();
            break;
          }
          case 53: {
            SectorSizeAngle = input.ReadFloat();
            break;
          }
          case 58: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class FanAreaAsShiftedIntProto : pb::IMessage<FanAreaAsShiftedIntProto> {
    private static readonly pb::MessageParser<FanAreaAsShiftedIntProto> _parser = new pb::MessageParser<FanAreaAsShiftedIntProto>(() => new FanAreaAsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<FanAreaAsShiftedIntProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[13]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto(FanAreaAsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      minimumRange_ = other.minimumRange_;
      maximumRange_ = other.maximumRange_;
      orientationAngle_ = other.orientationAngle_;
      sectorSizeAngle_ = other.sectorSizeAngle_;
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FanAreaAsShiftedIntProto Clone() {
      return new FanAreaAsShiftedIntProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "MinimumRange" field.</summary>
    public const int MinimumRangeFieldNumber = 3;
    private float minimumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MinimumRange {
      get { return minimumRange_; }
      set {
        minimumRange_ = value;
      }
    }

    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 4;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }

    /// <summary>Field number for the "OrientationAngle" field.</summary>
    public const int OrientationAngleFieldNumber = 5;
    private float orientationAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float OrientationAngle {
      get { return orientationAngle_; }
      set {
        orientationAngle_ = value;
      }
    }

    /// <summary>Field number for the "SectorSizeAngle" field.</summary>
    public const int SectorSizeAngleFieldNumber = 6;
    private float sectorSizeAngle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float SectorSizeAngle {
      get { return sectorSizeAngle_; }
      set {
        sectorSizeAngle_ = value;
      }
    }

    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 7;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as FanAreaAsShiftedIntProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FanAreaAsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (MinimumRange != other.MinimumRange) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (OrientationAngle != other.OrientationAngle) return false;
      if (SectorSizeAngle != other.SectorSizeAngle) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (MinimumRange != 0F) hash ^= MinimumRange.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (OrientationAngle != 0F) hash ^= OrientationAngle.GetHashCode();
      if (SectorSizeAngle != 0F) hash ^= SectorSizeAngle.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(MinimumRange);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(MaximumRange);
      }
      if (OrientationAngle != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(OrientationAngle);
      }
      if (SectorSizeAngle != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(SectorSizeAngle);
      }
      if (vertexPoint_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(VertexPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (MinimumRange != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (OrientationAngle != 0F) {
        size += 1 + 4;
      }
      if (SectorSizeAngle != 0F) {
        size += 1 + 4;
      }
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FanAreaAsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.MinimumRange != 0F) {
        MinimumRange = other.MinimumRange;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.OrientationAngle != 0F) {
        OrientationAngle = other.OrientationAngle;
      }
      if (other.SectorSizeAngle != 0F) {
        SectorSizeAngle = other.SectorSizeAngle;
      }
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            MinimumRange = input.ReadFloat();
            break;
          }
          case 37: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 45: {
            OrientationAngle = input.ReadFloat();
            break;
          }
          case 53: {
            SectorSizeAngle = input.ReadFloat();
            break;
          }
          case 58: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class CorridorAreaProto : pb::IMessage<CorridorAreaProto> {
    private static readonly pb::MessageParser<CorridorAreaProto> _parser = new pb::MessageParser<CorridorAreaProto>(() => new CorridorAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<CorridorAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[14]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto(CorridorAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      width_ = other.width_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CorridorAreaProto Clone() {
      return new CorridorAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "Width" field.</summary>
    public const int WidthFieldNumber = 3;
    private float width_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { return width_; }
      set {
        width_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as CorridorAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(CorridorAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Width != other.Width) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Width != 0F) hash ^= Width.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Width != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(Width);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Width != 0F) {
        size += 1 + 4;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(CorridorAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Width != 0F) {
        Width = other.Width;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 29: {
            Width = input.ReadFloat();
            break;
          }
        }
      }
    }

  }

  public sealed partial class EllipseProto : pb::IMessage<EllipseProto> {
    private static readonly pb::MessageParser<EllipseProto> _parser = new pb::MessageParser<EllipseProto>(() => new EllipseProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<EllipseProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[15]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto(EllipseProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      CentrePoint = other.centrePoint_ != null ? other.CentrePoint.Clone() : null;
      FirstConjugateDiameterPoint = other.firstConjugateDiameterPoint_ != null ? other.FirstConjugateDiameterPoint.Clone() : null;
      SecondConjugateDiameterPoint = other.secondConjugateDiameterPoint_ != null ? other.SecondConjugateDiameterPoint.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseProto Clone() {
      return new EllipseProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "CentrePoint" field.</summary>
    public const int CentrePointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto centrePoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto CentrePoint {
      get { return centrePoint_; }
      set {
        centrePoint_ = value;
      }
    }

    /// <summary>Field number for the "FirstConjugateDiameterPoint" field.</summary>
    public const int FirstConjugateDiameterPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto firstConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto FirstConjugateDiameterPoint {
      get { return firstConjugateDiameterPoint_; }
      set {
        firstConjugateDiameterPoint_ = value;
      }
    }

    /// <summary>Field number for the "SecondConjugateDiameterPoint" field.</summary>
    public const int SecondConjugateDiameterPointFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto secondConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto SecondConjugateDiameterPoint {
      get { return secondConjugateDiameterPoint_; }
      set {
        secondConjugateDiameterPoint_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as EllipseProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(EllipseProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(CentrePoint, other.CentrePoint)) return false;
      if (!object.Equals(FirstConjugateDiameterPoint, other.FirstConjugateDiameterPoint)) return false;
      if (!object.Equals(SecondConjugateDiameterPoint, other.SecondConjugateDiameterPoint)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (centrePoint_ != null) hash ^= CentrePoint.GetHashCode();
      if (firstConjugateDiameterPoint_ != null) hash ^= FirstConjugateDiameterPoint.GetHashCode();
      if (secondConjugateDiameterPoint_ != null) hash ^= SecondConjugateDiameterPoint.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SecondConjugateDiameterPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondConjugateDiameterPoint);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(EllipseProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.centrePoint_ != null) {
        if (centrePoint_ == null) {
          centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        CentrePoint.MergeFrom(other.CentrePoint);
      }
      if (other.firstConjugateDiameterPoint_ != null) {
        if (firstConjugateDiameterPoint_ == null) {
          firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        FirstConjugateDiameterPoint.MergeFrom(other.FirstConjugateDiameterPoint);
      }
      if (other.secondConjugateDiameterPoint_ != null) {
        if (secondConjugateDiameterPoint_ == null) {
          secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        SecondConjugateDiameterPoint.MergeFrom(other.SecondConjugateDiameterPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (centrePoint_ == null) {
              centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(centrePoint_);
            break;
          }
          case 34: {
            if (firstConjugateDiameterPoint_ == null) {
              firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(firstConjugateDiameterPoint_);
            break;
          }
          case 42: {
            if (secondConjugateDiameterPoint_ == null) {
              secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(secondConjugateDiameterPoint_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class EllipseAsShiftedIntProto : pb::IMessage<EllipseAsShiftedIntProto> {
    private static readonly pb::MessageParser<EllipseAsShiftedIntProto> _parser = new pb::MessageParser<EllipseAsShiftedIntProto>(() => new EllipseAsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<EllipseAsShiftedIntProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[16]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto(EllipseAsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      CentrePoint = other.centrePoint_ != null ? other.CentrePoint.Clone() : null;
      FirstConjugateDiameterPoint = other.firstConjugateDiameterPoint_ != null ? other.FirstConjugateDiameterPoint.Clone() : null;
      SecondConjugateDiameterPoint = other.secondConjugateDiameterPoint_ != null ? other.SecondConjugateDiameterPoint.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EllipseAsShiftedIntProto Clone() {
      return new EllipseAsShiftedIntProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "CentrePoint" field.</summary>
    public const int CentrePointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto centrePoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto CentrePoint {
      get { return centrePoint_; }
      set {
        centrePoint_ = value;
      }
    }

    /// <summary>Field number for the "FirstConjugateDiameterPoint" field.</summary>
    public const int FirstConjugateDiameterPointFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto firstConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto FirstConjugateDiameterPoint {
      get { return firstConjugateDiameterPoint_; }
      set {
        firstConjugateDiameterPoint_ = value;
      }
    }

    /// <summary>Field number for the "SecondConjugateDiameterPoint" field.</summary>
    public const int SecondConjugateDiameterPointFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto secondConjugateDiameterPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto SecondConjugateDiameterPoint {
      get { return secondConjugateDiameterPoint_; }
      set {
        secondConjugateDiameterPoint_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as EllipseAsShiftedIntProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(EllipseAsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(CentrePoint, other.CentrePoint)) return false;
      if (!object.Equals(FirstConjugateDiameterPoint, other.FirstConjugateDiameterPoint)) return false;
      if (!object.Equals(SecondConjugateDiameterPoint, other.SecondConjugateDiameterPoint)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (centrePoint_ != null) hash ^= CentrePoint.GetHashCode();
      if (firstConjugateDiameterPoint_ != null) hash ^= FirstConjugateDiameterPoint.GetHashCode();
      if (secondConjugateDiameterPoint_ != null) hash ^= SecondConjugateDiameterPoint.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(SecondConjugateDiameterPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (centrePoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CentrePoint);
      }
      if (firstConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FirstConjugateDiameterPoint);
      }
      if (secondConjugateDiameterPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SecondConjugateDiameterPoint);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(EllipseAsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.centrePoint_ != null) {
        if (centrePoint_ == null) {
          centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        CentrePoint.MergeFrom(other.CentrePoint);
      }
      if (other.firstConjugateDiameterPoint_ != null) {
        if (firstConjugateDiameterPoint_ == null) {
          firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        FirstConjugateDiameterPoint.MergeFrom(other.FirstConjugateDiameterPoint);
      }
      if (other.secondConjugateDiameterPoint_ != null) {
        if (secondConjugateDiameterPoint_ == null) {
          secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        SecondConjugateDiameterPoint.MergeFrom(other.SecondConjugateDiameterPoint);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (centrePoint_ == null) {
              centrePoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(centrePoint_);
            break;
          }
          case 34: {
            if (firstConjugateDiameterPoint_ == null) {
              firstConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(firstConjugateDiameterPoint_);
            break;
          }
          case 42: {
            if (secondConjugateDiameterPoint_ == null) {
              secondConjugateDiameterPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(secondConjugateDiameterPoint_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class PointProto : pb::IMessage<PointProto> {
    private static readonly pb::MessageParser<PointProto> _parser = new pb::MessageParser<PointProto>(() => new PointProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[17]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto(PointProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointProto Clone() {
      return new PointProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private double longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private double latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        output.WriteRawTag(25);
        output.WriteDouble(Longitude);
      }
      if (Latitude != 0D) {
        output.WriteRawTag(33);
        output.WriteDouble(Latitude);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0D) {
        size += 1 + 8;
      }
      if (Latitude != 0D) {
        size += 1 + 8;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0D) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0D) {
        Latitude = other.Latitude;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 25: {
            Longitude = input.ReadDouble();
            break;
          }
          case 33: {
            Latitude = input.ReadDouble();
            break;
          }
        }
      }
    }

  }

  public sealed partial class PointShiftedIntProto : pb::IMessage<PointShiftedIntProto> {
    private static readonly pb::MessageParser<PointShiftedIntProto> _parser = new pb::MessageParser<PointShiftedIntProto>(() => new PointShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PointShiftedIntProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[18]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto(PointShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      longitude_ = other.longitude_;
      latitude_ = other.latitude_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PointShiftedIntProto Clone() {
      return new PointShiftedIntProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 3;
    private int longitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 4;
    private int latitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PointShiftedIntProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PointShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Longitude != other.Longitude) return false;
      if (Latitude != other.Latitude) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Longitude != 0) hash ^= Longitude.GetHashCode();
      if (Latitude != 0) hash ^= Latitude.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        output.WriteRawTag(24);
        output.WriteSInt32(Longitude);
      }
      if (Latitude != 0) {
        output.WriteRawTag(32);
        output.WriteSInt32(Latitude);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Longitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Longitude);
      }
      if (Latitude != 0) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Latitude);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PointShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Longitude != 0) {
        Longitude = other.Longitude;
      }
      if (other.Latitude != 0) {
        Latitude = other.Latitude;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 24: {
            Longitude = input.ReadSInt32();
            break;
          }
          case 32: {
            Latitude = input.ReadSInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class RangeRingsProto : pb::IMessage<RangeRingsProto> {
    private static readonly pb::MessageParser<RangeRingsProto> _parser = new pb::MessageParser<RangeRingsProto>(() => new RangeRingsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<RangeRingsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[19]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto(RangeRingsProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
      rangeBetweenRings_ = other.rangeBetweenRings_;
      maximumRange_ = other.maximumRange_;
      numberOfRadials_ = other.numberOfRadials_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsProto Clone() {
      return new RangeRingsProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }

    /// <summary>Field number for the "RangeBetweenRings" field.</summary>
    public const int RangeBetweenRingsFieldNumber = 4;
    private float rangeBetweenRings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RangeBetweenRings {
      get { return rangeBetweenRings_; }
      set {
        rangeBetweenRings_ = value;
      }
    }

    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 5;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }

    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 6;
    private uint numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as RangeRingsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RangeRingsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      if (RangeBetweenRings != other.RangeBetweenRings) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      if (RangeBetweenRings != 0F) hash ^= RangeBetweenRings.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(RangeBetweenRings);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(MaximumRange);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(NumberOfRadials);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (NumberOfRadials != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumberOfRadials);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RangeRingsProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
      if (other.RangeBetweenRings != 0F) {
        RangeBetweenRings = other.RangeBetweenRings;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
          case 37: {
            RangeBetweenRings = input.ReadFloat();
            break;
          }
          case 45: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 48: {
            NumberOfRadials = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class RangeRingsShiftedIntProto : pb::IMessage<RangeRingsShiftedIntProto> {
    private static readonly pb::MessageParser<RangeRingsShiftedIntProto> _parser = new pb::MessageParser<RangeRingsShiftedIntProto>(() => new RangeRingsShiftedIntProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<RangeRingsShiftedIntProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[20]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto(RangeRingsShiftedIntProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      VertexPoint = other.vertexPoint_ != null ? other.VertexPoint.Clone() : null;
      rangeBetweenRings_ = other.rangeBetweenRings_;
      maximumRange_ = other.maximumRange_;
      numberOfRadials_ = other.numberOfRadials_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RangeRingsShiftedIntProto Clone() {
      return new RangeRingsShiftedIntProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "VertexPoint" field.</summary>
    public const int VertexPointFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto vertexPoint_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto VertexPoint {
      get { return vertexPoint_; }
      set {
        vertexPoint_ = value;
      }
    }

    /// <summary>Field number for the "RangeBetweenRings" field.</summary>
    public const int RangeBetweenRingsFieldNumber = 4;
    private float rangeBetweenRings_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float RangeBetweenRings {
      get { return rangeBetweenRings_; }
      set {
        rangeBetweenRings_ = value;
      }
    }

    /// <summary>Field number for the "MaximumRange" field.</summary>
    public const int MaximumRangeFieldNumber = 5;
    private float maximumRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float MaximumRange {
      get { return maximumRange_; }
      set {
        maximumRange_ = value;
      }
    }

    /// <summary>Field number for the "NumberOfRadials" field.</summary>
    public const int NumberOfRadialsFieldNumber = 6;
    private uint numberOfRadials_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint NumberOfRadials {
      get { return numberOfRadials_; }
      set {
        numberOfRadials_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as RangeRingsShiftedIntProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RangeRingsShiftedIntProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(VertexPoint, other.VertexPoint)) return false;
      if (RangeBetweenRings != other.RangeBetweenRings) return false;
      if (MaximumRange != other.MaximumRange) return false;
      if (NumberOfRadials != other.NumberOfRadials) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (vertexPoint_ != null) hash ^= VertexPoint.GetHashCode();
      if (RangeBetweenRings != 0F) hash ^= RangeBetweenRings.GetHashCode();
      if (MaximumRange != 0F) hash ^= MaximumRange.GetHashCode();
      if (NumberOfRadials != 0) hash ^= NumberOfRadials.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(RangeBetweenRings);
      }
      if (MaximumRange != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(MaximumRange);
      }
      if (NumberOfRadials != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(NumberOfRadials);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (vertexPoint_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VertexPoint);
      }
      if (RangeBetweenRings != 0F) {
        size += 1 + 4;
      }
      if (MaximumRange != 0F) {
        size += 1 + 4;
      }
      if (NumberOfRadials != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(NumberOfRadials);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RangeRingsShiftedIntProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.vertexPoint_ != null) {
        if (vertexPoint_ == null) {
          vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
        }
        VertexPoint.MergeFrom(other.VertexPoint);
      }
      if (other.RangeBetweenRings != 0F) {
        RangeBetweenRings = other.RangeBetweenRings;
      }
      if (other.MaximumRange != 0F) {
        MaximumRange = other.MaximumRange;
      }
      if (other.NumberOfRadials != 0) {
        NumberOfRadials = other.NumberOfRadials;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (vertexPoint_ == null) {
              vertexPoint_ = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointProto();
            }
            input.ReadMessage(vertexPoint_);
            break;
          }
          case 37: {
            RangeBetweenRings = input.ReadFloat();
            break;
          }
          case 45: {
            MaximumRange = input.ReadFloat();
            break;
          }
          case 48: {
            NumberOfRadials = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class VolPolyAreaProto : pb::IMessage<VolPolyAreaProto> {
    private static readonly pb::MessageParser<VolPolyAreaProto> _parser = new pb::MessageParser<VolPolyAreaProto>(() => new VolPolyAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolPolyAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[21]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto(VolPolyAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolPolyAreaProto Clone() {
      return new VolPolyAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolPolyAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolPolyAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolPolyAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class VolOrbitAreaProto : pb::IMessage<VolOrbitAreaProto> {
    private static readonly pb::MessageParser<VolOrbitAreaProto> _parser = new pb::MessageParser<VolOrbitAreaProto>(() => new VolOrbitAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolOrbitAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[22]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto(VolOrbitAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      OrbitArea = other.orbitArea_ != null ? other.OrbitArea.Clone() : null;
      ShiftedIntOrbitArea = other.shiftedIntOrbitArea_ != null ? other.ShiftedIntOrbitArea.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolOrbitAreaProto Clone() {
      return new VolOrbitAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }

    /// <summary>Field number for the "OrbitArea" field.</summary>
    public const int OrbitAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto orbitArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto OrbitArea {
      get { return orbitArea_; }
      set {
        orbitArea_ = value;
      }
    }

    /// <summary>Field number for the "ShiftedIntOrbitArea" field.</summary>
    public const int ShiftedIntOrbitAreaFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto shiftedIntOrbitArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto ShiftedIntOrbitArea {
      get { return shiftedIntOrbitArea_; }
      set {
        shiftedIntOrbitArea_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolOrbitAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolOrbitAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(OrbitArea, other.OrbitArea)) return false;
      if (!object.Equals(ShiftedIntOrbitArea, other.ShiftedIntOrbitArea)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (orbitArea_ != null) hash ^= OrbitArea.GetHashCode();
      if (shiftedIntOrbitArea_ != null) hash ^= ShiftedIntOrbitArea.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (orbitArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(OrbitArea);
      }
      if (shiftedIntOrbitArea_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntOrbitArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (orbitArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OrbitArea);
      }
      if (shiftedIntOrbitArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntOrbitArea);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolOrbitAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.orbitArea_ != null) {
        if (orbitArea_ == null) {
          orbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
        }
        OrbitArea.MergeFrom(other.OrbitArea);
      }
      if (other.shiftedIntOrbitArea_ != null) {
        if (shiftedIntOrbitArea_ == null) {
          shiftedIntOrbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
        }
        ShiftedIntOrbitArea.MergeFrom(other.ShiftedIntOrbitArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (orbitArea_ == null) {
              orbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
            }
            input.ReadMessage(orbitArea_);
            break;
          }
          case 42: {
            if (shiftedIntOrbitArea_ == null) {
              shiftedIntOrbitArea_ = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
            }
            input.ReadMessage(shiftedIntOrbitArea_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class VolFanAreaProto : pb::IMessage<VolFanAreaProto> {
    private static readonly pb::MessageParser<VolFanAreaProto> _parser = new pb::MessageParser<VolFanAreaProto>(() => new VolFanAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolFanAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[23]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto(VolFanAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      FanArea = other.fanArea_ != null ? other.FanArea.Clone() : null;
      ShiftedIntFanArea = other.shiftedIntFanArea_ != null ? other.ShiftedIntFanArea.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolFanAreaProto Clone() {
      return new VolFanAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }

    /// <summary>Field number for the "FanArea" field.</summary>
    public const int FanAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto fanArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto FanArea {
      get { return fanArea_; }
      set {
        fanArea_ = value;
      }
    }

    /// <summary>Field number for the "ShiftedIntFanArea" field.</summary>
    public const int ShiftedIntFanAreaFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto shiftedIntFanArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto ShiftedIntFanArea {
      get { return shiftedIntFanArea_; }
      set {
        shiftedIntFanArea_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolFanAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolFanAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(FanArea, other.FanArea)) return false;
      if (!object.Equals(ShiftedIntFanArea, other.ShiftedIntFanArea)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (fanArea_ != null) hash ^= FanArea.GetHashCode();
      if (shiftedIntFanArea_ != null) hash ^= ShiftedIntFanArea.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (fanArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(FanArea);
      }
      if (shiftedIntFanArea_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntFanArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (fanArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FanArea);
      }
      if (shiftedIntFanArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntFanArea);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolFanAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.fanArea_ != null) {
        if (fanArea_ == null) {
          fanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
        }
        FanArea.MergeFrom(other.FanArea);
      }
      if (other.shiftedIntFanArea_ != null) {
        if (shiftedIntFanArea_ == null) {
          shiftedIntFanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
        }
        ShiftedIntFanArea.MergeFrom(other.ShiftedIntFanArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (fanArea_ == null) {
              fanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
            }
            input.ReadMessage(fanArea_);
            break;
          }
          case 42: {
            if (shiftedIntFanArea_ == null) {
              shiftedIntFanArea_ = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
            }
            input.ReadMessage(shiftedIntFanArea_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class VolEllipseProto : pb::IMessage<VolEllipseProto> {
    private static readonly pb::MessageParser<VolEllipseProto> _parser = new pb::MessageParser<VolEllipseProto>(() => new VolEllipseProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolEllipseProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[24]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto(VolEllipseProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      Ellipse = other.ellipse_ != null ? other.Ellipse.Clone() : null;
      ShiftedIntEllipse = other.shiftedIntEllipse_ != null ? other.ShiftedIntEllipse.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolEllipseProto Clone() {
      return new VolEllipseProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }

    /// <summary>Field number for the "Ellipse" field.</summary>
    public const int EllipseFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.EllipseProto ellipse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseProto Ellipse {
      get { return ellipse_; }
      set {
        ellipse_ = value;
      }
    }

    /// <summary>Field number for the "ShiftedIntEllipse" field.</summary>
    public const int ShiftedIntEllipseFieldNumber = 5;
    private global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto shiftedIntEllipse_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto ShiftedIntEllipse {
      get { return shiftedIntEllipse_; }
      set {
        shiftedIntEllipse_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolEllipseProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolEllipseProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(Ellipse, other.Ellipse)) return false;
      if (!object.Equals(ShiftedIntEllipse, other.ShiftedIntEllipse)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (ellipse_ != null) hash ^= Ellipse.GetHashCode();
      if (shiftedIntEllipse_ != null) hash ^= ShiftedIntEllipse.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (ellipse_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Ellipse);
      }
      if (shiftedIntEllipse_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ShiftedIntEllipse);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (ellipse_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ellipse);
      }
      if (shiftedIntEllipse_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntEllipse);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolEllipseProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.ellipse_ != null) {
        if (ellipse_ == null) {
          ellipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
        }
        Ellipse.MergeFrom(other.Ellipse);
      }
      if (other.shiftedIntEllipse_ != null) {
        if (shiftedIntEllipse_ == null) {
          shiftedIntEllipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
        }
        ShiftedIntEllipse.MergeFrom(other.ShiftedIntEllipse);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (ellipse_ == null) {
              ellipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
            }
            input.ReadMessage(ellipse_);
            break;
          }
          case 42: {
            if (shiftedIntEllipse_ == null) {
              shiftedIntEllipse_ = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
            }
            input.ReadMessage(shiftedIntEllipse_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class VolCorridorAreaProto : pb::IMessage<VolCorridorAreaProto> {
    private static readonly pb::MessageParser<VolCorridorAreaProto> _parser = new pb::MessageParser<VolCorridorAreaProto>(() => new VolCorridorAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VolCorridorAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[25]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto(VolCorridorAreaProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      SurfaceVolume = other.surfaceVolume_ != null ? other.SurfaceVolume.Clone() : null;
      CorridorArea = other.corridorArea_ != null ? other.CorridorArea.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VolCorridorAreaProto Clone() {
      return new VolCorridorAreaProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "SurfaceVolume" field.</summary>
    public const int SurfaceVolumeFieldNumber = 3;
    private global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto surfaceVolume_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto SurfaceVolume {
      get { return surfaceVolume_; }
      set {
        surfaceVolume_ = value;
      }
    }

    /// <summary>Field number for the "CorridorArea" field.</summary>
    public const int CorridorAreaFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto corridorArea_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto CorridorArea {
      get { return corridorArea_; }
      set {
        corridorArea_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VolCorridorAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VolCorridorAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (!object.Equals(SurfaceVolume, other.SurfaceVolume)) return false;
      if (!object.Equals(CorridorArea, other.CorridorArea)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (surfaceVolume_ != null) hash ^= SurfaceVolume.GetHashCode();
      if (corridorArea_ != null) hash ^= CorridorArea.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SurfaceVolume);
      }
      if (corridorArea_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CorridorArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (surfaceVolume_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SurfaceVolume);
      }
      if (corridorArea_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CorridorArea);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VolCorridorAreaProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.surfaceVolume_ != null) {
        if (surfaceVolume_ == null) {
          surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
        }
        SurfaceVolume.MergeFrom(other.SurfaceVolume);
      }
      if (other.corridorArea_ != null) {
        if (corridorArea_ == null) {
          corridorArea_ = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
        }
        CorridorArea.MergeFrom(other.CorridorArea);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            if (surfaceVolume_ == null) {
              surfaceVolume_ = new global::TPG.DrawObjects.Serialize.Protoc.SurfaceVolumeProto();
            }
            input.ReadMessage(surfaceVolume_);
            break;
          }
          case 34: {
            if (corridorArea_ == null) {
              corridorArea_ = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
            }
            input.ReadMessage(corridorArea_);
            break;
          }
        }
      }
    }

  }

  public sealed partial class LineProto : pb::IMessage<LineProto> {
    private static readonly pb::MessageParser<LineProto> _parser = new pb::MessageParser<LineProto>(() => new LineProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LineProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[26]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto(LineProto other) : this() {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LineProto Clone() {
      return new LineProto(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as LineProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LineProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LineProto other) {
      if (other == null) {
        return;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }

  }

  public sealed partial class PolygonAreaProto : pb::IMessage<PolygonAreaProto> {
    private static readonly pb::MessageParser<PolygonAreaProto> _parser = new pb::MessageParser<PolygonAreaProto>(() => new PolygonAreaProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PolygonAreaProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[27]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto(PolygonAreaProto other) : this() {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PolygonAreaProto Clone() {
      return new PolygonAreaProto(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PolygonAreaProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PolygonAreaProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PolygonAreaProto other) {
      if (other == null) {
        return;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }

  }

  public sealed partial class SimpleDrawObjectProto : pb::IMessage<SimpleDrawObjectProto> {
    private static readonly pb::MessageParser<SimpleDrawObjectProto> _parser = new pb::MessageParser<SimpleDrawObjectProto>(() => new SimpleDrawObjectProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SimpleDrawObjectProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[28]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto(SimpleDrawObjectProto other) : this() {
      fieldIndexes_ = other.fieldIndexes_.Clone();
      invalidIndexes_ = other.invalidIndexes_.Clone();
      id_ = other.id_;
      DataFields = other.dataFields_ != null ? other.DataFields.Clone() : null;
      booleanAttributes_ = other.booleanAttributes_;
      compositeDrawObjects_ = other.compositeDrawObjects_.Clone();
      switch (other.TypeFieldsobjectCase) {
        case TypeFieldsobjectOneofCase.TacticalDataFields:
          TacticalDataFields = other.TacticalDataFields.Clone();
          break;
        case TypeFieldsobjectOneofCase.GenericDataFields:
          GenericDataFields = other.GenericDataFields.Clone();
          break;
      }

      switch (other.TypeGeopointCase) {
        case TypeGeopointOneofCase.GeoPoints:
          GeoPoints = other.GeoPoints.Clone();
          break;
        case TypeGeopointOneofCase.GeoShiftedIntPoints:
          GeoShiftedIntPoints = other.GeoShiftedIntPoints.Clone();
          break;
      }

      switch (other.TypeImplementationsCase) {
        case TypeImplementationsOneofCase.CorridorArea:
          CorridorArea = other.CorridorArea.Clone();
          break;
        case TypeImplementationsOneofCase.FanArea:
          FanArea = other.FanArea.Clone();
          break;
        case TypeImplementationsOneofCase.Ellipse:
          Ellipse = other.Ellipse.Clone();
          break;
        case TypeImplementationsOneofCase.VolPolyArea:
          VolPolyArea = other.VolPolyArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolOrbitArea:
          VolOrbitArea = other.VolOrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolFanArea:
          VolFanArea = other.VolFanArea.Clone();
          break;
        case TypeImplementationsOneofCase.VolEllipse:
          VolEllipse = other.VolEllipse.Clone();
          break;
        case TypeImplementationsOneofCase.VolCorridorArea:
          VolCorridorArea = other.VolCorridorArea.Clone();
          break;
        case TypeImplementationsOneofCase.OrbitArea:
          OrbitArea = other.OrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.Point:
          Point = other.Point.Clone();
          break;
        case TypeImplementationsOneofCase.RangeRings:
          RangeRings = other.RangeRings.Clone();
          break;
        case TypeImplementationsOneofCase.Line:
          Line = other.Line.Clone();
          break;
        case TypeImplementationsOneofCase.PolygonArea:
          PolygonArea = other.PolygonArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntPoint:
          ShiftedIntPoint = other.ShiftedIntPoint.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntOrbitArea:
          ShiftedIntOrbitArea = other.ShiftedIntOrbitArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntEllipse:
          ShiftedIntEllipse = other.ShiftedIntEllipse.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntFanArea:
          ShiftedIntFanArea = other.ShiftedIntFanArea.Clone();
          break;
        case TypeImplementationsOneofCase.ShiftedIntRangeRings:
          ShiftedIntRangeRings = other.ShiftedIntRangeRings.Clone();
          break;
      }

    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectProto Clone() {
      return new SimpleDrawObjectProto(this);
    }

    /// <summary>Field number for the "field_indexes" field.</summary>
    public const int FieldIndexesFieldNumber = 1;
    private static readonly pbc::MapField<uint, string>.Codec _map_fieldIndexes_codec
        = new pbc::MapField<uint, string>.Codec(pb::FieldCodec.ForUInt32(8), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<uint, string> fieldIndexes_ = new pbc::MapField<uint, string>();
    /// <summary>
    ///Key is field index#, Value is version info
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<uint, string> FieldIndexes {
      get { return fieldIndexes_; }
    }

    /// <summary>Field number for the "invalid_indexes" field.</summary>
    public const int InvalidIndexesFieldNumber = 2;
    private static readonly pb::FieldCodec<uint> _repeated_invalidIndexes_codec
        = pb::FieldCodec.ForUInt32(18);
    private readonly pbc::RepeatedField<uint> invalidIndexes_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<uint> InvalidIndexes {
      get { return invalidIndexes_; }
    }

    /// <summary>Field number for the "Id" field.</summary>
    public const int IdFieldNumber = 3;
    private string id_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Id {
      get { return id_; }
      set {
        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "data_fields" field.</summary>
    public const int DataFieldsFieldNumber = 4;
    private global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto dataFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto DataFields {
      get { return dataFields_; }
      set {
        dataFields_ = value;
      }
    }

    /// <summary>Field number for the "TacticalDataFields" field.</summary>
    public const int TacticalDataFieldsFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto TacticalDataFields {
      get { return typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields ? (global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto) typeFieldsobject_ : null; }
      set {
        typeFieldsobject_ = value;
        typeFieldsobjectCase_ = value == null ? TypeFieldsobjectOneofCase.None : TypeFieldsobjectOneofCase.TacticalDataFields;
      }
    }

    /// <summary>Field number for the "GenericDataFields" field.</summary>
    public const int GenericDataFieldsFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto GenericDataFields {
      get { return typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields ? (global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto) typeFieldsobject_ : null; }
      set {
        typeFieldsobject_ = value;
        typeFieldsobjectCase_ = value == null ? TypeFieldsobjectOneofCase.None : TypeFieldsobjectOneofCase.GenericDataFields;
      }
    }

    /// <summary>Field number for the "BooleanAttributes" field.</summary>
    public const int BooleanAttributesFieldNumber = 7;
    private uint booleanAttributes_;
    /// <summary>
    ///all ISimpleDrawDrawObject boolean attributes are bitmapped into this attribute
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint BooleanAttributes {
      get { return booleanAttributes_; }
      set {
        booleanAttributes_ = value;
      }
    }

    /// <summary>Field number for the "GeoPoints" field.</summary>
    public const int GeoPointsFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto GeoPoints {
      get { return typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints ? (global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto) typeGeopoint_ : null; }
      set {
        typeGeopoint_ = value;
        typeGeopointCase_ = value == null ? TypeGeopointOneofCase.None : TypeGeopointOneofCase.GeoPoints;
      }
    }

    /// <summary>Field number for the "GeoShiftedIntPoints" field.</summary>
    public const int GeoShiftedIntPointsFieldNumber = 9;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto GeoShiftedIntPoints {
      get { return typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints ? (global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto) typeGeopoint_ : null; }
      set {
        typeGeopoint_ = value;
        typeGeopointCase_ = value == null ? TypeGeopointOneofCase.None : TypeGeopointOneofCase.GeoShiftedIntPoints;
      }
    }

    /// <summary>Field number for the "CorridorArea" field.</summary>
    public const int CorridorAreaFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto CorridorArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea ? (global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.CorridorArea;
      }
    }

    /// <summary>Field number for the "FanArea" field.</summary>
    public const int FanAreaFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto FanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea ? (global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.FanArea;
      }
    }

    /// <summary>Field number for the "Ellipse" field.</summary>
    public const int EllipseFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseProto Ellipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse ? (global::TPG.DrawObjects.Serialize.Protoc.EllipseProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Ellipse;
      }
    }

    /// <summary>Field number for the "VolPolyArea" field.</summary>
    public const int VolPolyAreaFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto VolPolyArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolPolyArea;
      }
    }

    /// <summary>Field number for the "VolOrbitArea" field.</summary>
    public const int VolOrbitAreaFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto VolOrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolOrbitArea;
      }
    }

    /// <summary>Field number for the "VolFanArea" field.</summary>
    public const int VolFanAreaFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto VolFanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolFanArea;
      }
    }

    /// <summary>Field number for the "VolEllipse" field.</summary>
    public const int VolEllipseFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto VolEllipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse ? (global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolEllipse;
      }
    }

    /// <summary>Field number for the "VolCorridorArea" field.</summary>
    public const int VolCorridorAreaFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto VolCorridorArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea ? (global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.VolCorridorArea;
      }
    }

    /// <summary>Field number for the "OrbitArea" field.</summary>
    public const int OrbitAreaFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto OrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.OrbitArea;
      }
    }

    /// <summary>Field number for the "Point" field.</summary>
    public const int PointFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PointProto Point {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Point ? (global::TPG.DrawObjects.Serialize.Protoc.PointProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Point;
      }
    }

    /// <summary>Field number for the "RangeRings" field.</summary>
    public const int RangeRingsFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto RangeRings {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings ? (global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.RangeRings;
      }
    }

    /// <summary>Field number for the "Line" field.</summary>
    public const int LineFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.LineProto Line {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.Line ? (global::TPG.DrawObjects.Serialize.Protoc.LineProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.Line;
      }
    }

    /// <summary>Field number for the "PolygonArea" field.</summary>
    public const int PolygonAreaFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto PolygonArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea ? (global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.PolygonArea;
      }
    }

    /// <summary>Field number for the "ShiftedIntPoint" field.</summary>
    public const int ShiftedIntPointFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto ShiftedIntPoint {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint ? (global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntPoint;
      }
    }

    /// <summary>Field number for the "ShiftedIntOrbitArea" field.</summary>
    public const int ShiftedIntOrbitAreaFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto ShiftedIntOrbitArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea ? (global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntOrbitArea;
      }
    }

    /// <summary>Field number for the "ShiftedIntEllipse" field.</summary>
    public const int ShiftedIntEllipseFieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto ShiftedIntEllipse {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse ? (global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntEllipse;
      }
    }

    /// <summary>Field number for the "ShiftedIntFanArea" field.</summary>
    public const int ShiftedIntFanAreaFieldNumber = 26;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto ShiftedIntFanArea {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea ? (global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntFanArea;
      }
    }

    /// <summary>Field number for the "ShiftedIntRangeRings" field.</summary>
    public const int ShiftedIntRangeRingsFieldNumber = 27;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto ShiftedIntRangeRings {
      get { return typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings ? (global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto) typeImplementations_ : null; }
      set {
        typeImplementations_ = value;
        typeImplementationsCase_ = value == null ? TypeImplementationsOneofCase.None : TypeImplementationsOneofCase.ShiftedIntRangeRings;
      }
    }

    /// <summary>Field number for the "composite_draw_objects" field.</summary>
    public const int CompositeDrawObjectsFieldNumber = 28;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> _repeated_compositeDrawObjects_codec
        = pb::FieldCodec.ForMessage(226, global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> compositeDrawObjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> CompositeDrawObjects {
      get { return compositeDrawObjects_; }
    }

    private object typeFieldsobject_;
    /// <summary>Enum of possible cases for the "type_fieldsobject" oneof.</summary>
    public enum TypeFieldsobjectOneofCase {
      None = 0,
      TacticalDataFields = 5,
      GenericDataFields = 6,
    }
    private TypeFieldsobjectOneofCase typeFieldsobjectCase_ = TypeFieldsobjectOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeFieldsobjectOneofCase TypeFieldsobjectCase {
      get { return typeFieldsobjectCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeFieldsobject() {
      typeFieldsobjectCase_ = TypeFieldsobjectOneofCase.None;
      typeFieldsobject_ = null;
    }

    private object typeGeopoint_;
    /// <summary>Enum of possible cases for the "type_geopoint" oneof.</summary>
    public enum TypeGeopointOneofCase {
      None = 0,
      GeoPoints = 8,
      GeoShiftedIntPoints = 9,
    }
    private TypeGeopointOneofCase typeGeopointCase_ = TypeGeopointOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeGeopointOneofCase TypeGeopointCase {
      get { return typeGeopointCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeGeopoint() {
      typeGeopointCase_ = TypeGeopointOneofCase.None;
      typeGeopoint_ = null;
    }

    private object typeImplementations_;
    /// <summary>Enum of possible cases for the "type_implementations" oneof.</summary>
    public enum TypeImplementationsOneofCase {
      None = 0,
      CorridorArea = 10,
      FanArea = 11,
      Ellipse = 12,
      VolPolyArea = 13,
      VolOrbitArea = 14,
      VolFanArea = 15,
      VolEllipse = 16,
      VolCorridorArea = 17,
      OrbitArea = 18,
      Point = 19,
      RangeRings = 20,
      Line = 21,
      PolygonArea = 22,
      ShiftedIntPoint = 23,
      ShiftedIntOrbitArea = 24,
      ShiftedIntEllipse = 25,
      ShiftedIntFanArea = 26,
      ShiftedIntRangeRings = 27,
    }
    private TypeImplementationsOneofCase typeImplementationsCase_ = TypeImplementationsOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TypeImplementationsOneofCase TypeImplementationsCase {
      get { return typeImplementationsCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTypeImplementations() {
      typeImplementationsCase_ = TypeImplementationsOneofCase.None;
      typeImplementations_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SimpleDrawObjectProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SimpleDrawObjectProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!FieldIndexes.Equals(other.FieldIndexes)) return false;
      if(!invalidIndexes_.Equals(other.invalidIndexes_)) return false;
      if (Id != other.Id) return false;
      if (!object.Equals(DataFields, other.DataFields)) return false;
      if (!object.Equals(TacticalDataFields, other.TacticalDataFields)) return false;
      if (!object.Equals(GenericDataFields, other.GenericDataFields)) return false;
      if (BooleanAttributes != other.BooleanAttributes) return false;
      if (!object.Equals(GeoPoints, other.GeoPoints)) return false;
      if (!object.Equals(GeoShiftedIntPoints, other.GeoShiftedIntPoints)) return false;
      if (!object.Equals(CorridorArea, other.CorridorArea)) return false;
      if (!object.Equals(FanArea, other.FanArea)) return false;
      if (!object.Equals(Ellipse, other.Ellipse)) return false;
      if (!object.Equals(VolPolyArea, other.VolPolyArea)) return false;
      if (!object.Equals(VolOrbitArea, other.VolOrbitArea)) return false;
      if (!object.Equals(VolFanArea, other.VolFanArea)) return false;
      if (!object.Equals(VolEllipse, other.VolEllipse)) return false;
      if (!object.Equals(VolCorridorArea, other.VolCorridorArea)) return false;
      if (!object.Equals(OrbitArea, other.OrbitArea)) return false;
      if (!object.Equals(Point, other.Point)) return false;
      if (!object.Equals(RangeRings, other.RangeRings)) return false;
      if (!object.Equals(Line, other.Line)) return false;
      if (!object.Equals(PolygonArea, other.PolygonArea)) return false;
      if (!object.Equals(ShiftedIntPoint, other.ShiftedIntPoint)) return false;
      if (!object.Equals(ShiftedIntOrbitArea, other.ShiftedIntOrbitArea)) return false;
      if (!object.Equals(ShiftedIntEllipse, other.ShiftedIntEllipse)) return false;
      if (!object.Equals(ShiftedIntFanArea, other.ShiftedIntFanArea)) return false;
      if (!object.Equals(ShiftedIntRangeRings, other.ShiftedIntRangeRings)) return false;
      if(!compositeDrawObjects_.Equals(other.compositeDrawObjects_)) return false;
      if (TypeFieldsobjectCase != other.TypeFieldsobjectCase) return false;
      if (TypeGeopointCase != other.TypeGeopointCase) return false;
      if (TypeImplementationsCase != other.TypeImplementationsCase) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= FieldIndexes.GetHashCode();
      hash ^= invalidIndexes_.GetHashCode();
      if (Id.Length != 0) hash ^= Id.GetHashCode();
      if (dataFields_ != null) hash ^= DataFields.GetHashCode();
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) hash ^= TacticalDataFields.GetHashCode();
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) hash ^= GenericDataFields.GetHashCode();
      if (BooleanAttributes != 0) hash ^= BooleanAttributes.GetHashCode();
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) hash ^= GeoPoints.GetHashCode();
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) hash ^= GeoShiftedIntPoints.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) hash ^= CorridorArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) hash ^= FanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) hash ^= Ellipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) hash ^= VolPolyArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) hash ^= VolOrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) hash ^= VolFanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) hash ^= VolEllipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) hash ^= VolCorridorArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) hash ^= OrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) hash ^= Point.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) hash ^= RangeRings.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) hash ^= Line.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) hash ^= PolygonArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) hash ^= ShiftedIntPoint.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) hash ^= ShiftedIntOrbitArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) hash ^= ShiftedIntEllipse.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) hash ^= ShiftedIntFanArea.GetHashCode();
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) hash ^= ShiftedIntRangeRings.GetHashCode();
      hash ^= compositeDrawObjects_.GetHashCode();
      hash ^= (int) typeFieldsobjectCase_;
      hash ^= (int) typeGeopointCase_;
      hash ^= (int) typeImplementationsCase_;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      fieldIndexes_.WriteTo(output, _map_fieldIndexes_codec);
      invalidIndexes_.WriteTo(output, _repeated_invalidIndexes_codec);
      if (Id.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Id);
      }
      if (dataFields_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(DataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
        output.WriteRawTag(42);
        output.WriteMessage(TacticalDataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
        output.WriteRawTag(50);
        output.WriteMessage(GenericDataFields);
      }
      if (BooleanAttributes != 0) {
        output.WriteRawTag(56);
        output.WriteUInt32(BooleanAttributes);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
        output.WriteRawTag(66);
        output.WriteMessage(GeoPoints);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
        output.WriteRawTag(74);
        output.WriteMessage(GeoShiftedIntPoints);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
        output.WriteRawTag(82);
        output.WriteMessage(CorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
        output.WriteRawTag(90);
        output.WriteMessage(FanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
        output.WriteRawTag(98);
        output.WriteMessage(Ellipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
        output.WriteRawTag(106);
        output.WriteMessage(VolPolyArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
        output.WriteRawTag(114);
        output.WriteMessage(VolOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
        output.WriteRawTag(122);
        output.WriteMessage(VolFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(VolEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(VolCorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(OrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(Point);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(RangeRings);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Line);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(PolygonArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(ShiftedIntPoint);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(ShiftedIntOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(ShiftedIntEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(ShiftedIntFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ShiftedIntRangeRings);
      }
      compositeDrawObjects_.WriteTo(output, _repeated_compositeDrawObjects_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += fieldIndexes_.CalculateSize(_map_fieldIndexes_codec);
      size += invalidIndexes_.CalculateSize(_repeated_invalidIndexes_codec);
      if (Id.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
      }
      if (dataFields_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TacticalDataFields);
      }
      if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GenericDataFields);
      }
      if (BooleanAttributes != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(BooleanAttributes);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GeoPoints);
      }
      if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GeoShiftedIntPoints);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ellipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolPolyArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(VolFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(VolEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(VolCorridorArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Point);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(RangeRings);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Line);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(PolygonArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntPoint);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntOrbitArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntEllipse);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntFanArea);
      }
      if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShiftedIntRangeRings);
      }
      size += compositeDrawObjects_.CalculateSize(_repeated_compositeDrawObjects_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SimpleDrawObjectProto other) {
      if (other == null) {
        return;
      }
      fieldIndexes_.Add(other.fieldIndexes_);
      invalidIndexes_.Add(other.invalidIndexes_);
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      if (other.dataFields_ != null) {
        if (dataFields_ == null) {
          dataFields_ = new global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto();
        }
        DataFields.MergeFrom(other.DataFields);
      }
      if (other.BooleanAttributes != 0) {
        BooleanAttributes = other.BooleanAttributes;
      }
      compositeDrawObjects_.Add(other.compositeDrawObjects_);
      switch (other.TypeFieldsobjectCase) {
        case TypeFieldsobjectOneofCase.TacticalDataFields:
          TacticalDataFields = other.TacticalDataFields;
          break;
        case TypeFieldsobjectOneofCase.GenericDataFields:
          GenericDataFields = other.GenericDataFields;
          break;
      }

      switch (other.TypeGeopointCase) {
        case TypeGeopointOneofCase.GeoPoints:
          GeoPoints = other.GeoPoints;
          break;
        case TypeGeopointOneofCase.GeoShiftedIntPoints:
          GeoShiftedIntPoints = other.GeoShiftedIntPoints;
          break;
      }

      switch (other.TypeImplementationsCase) {
        case TypeImplementationsOneofCase.CorridorArea:
          CorridorArea = other.CorridorArea;
          break;
        case TypeImplementationsOneofCase.FanArea:
          FanArea = other.FanArea;
          break;
        case TypeImplementationsOneofCase.Ellipse:
          Ellipse = other.Ellipse;
          break;
        case TypeImplementationsOneofCase.VolPolyArea:
          VolPolyArea = other.VolPolyArea;
          break;
        case TypeImplementationsOneofCase.VolOrbitArea:
          VolOrbitArea = other.VolOrbitArea;
          break;
        case TypeImplementationsOneofCase.VolFanArea:
          VolFanArea = other.VolFanArea;
          break;
        case TypeImplementationsOneofCase.VolEllipse:
          VolEllipse = other.VolEllipse;
          break;
        case TypeImplementationsOneofCase.VolCorridorArea:
          VolCorridorArea = other.VolCorridorArea;
          break;
        case TypeImplementationsOneofCase.OrbitArea:
          OrbitArea = other.OrbitArea;
          break;
        case TypeImplementationsOneofCase.Point:
          Point = other.Point;
          break;
        case TypeImplementationsOneofCase.RangeRings:
          RangeRings = other.RangeRings;
          break;
        case TypeImplementationsOneofCase.Line:
          Line = other.Line;
          break;
        case TypeImplementationsOneofCase.PolygonArea:
          PolygonArea = other.PolygonArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntPoint:
          ShiftedIntPoint = other.ShiftedIntPoint;
          break;
        case TypeImplementationsOneofCase.ShiftedIntOrbitArea:
          ShiftedIntOrbitArea = other.ShiftedIntOrbitArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntEllipse:
          ShiftedIntEllipse = other.ShiftedIntEllipse;
          break;
        case TypeImplementationsOneofCase.ShiftedIntFanArea:
          ShiftedIntFanArea = other.ShiftedIntFanArea;
          break;
        case TypeImplementationsOneofCase.ShiftedIntRangeRings:
          ShiftedIntRangeRings = other.ShiftedIntRangeRings;
          break;
      }

    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            fieldIndexes_.AddEntriesFrom(input, _map_fieldIndexes_codec);
            break;
          }
          case 18:
          case 16: {
            invalidIndexes_.AddEntriesFrom(input, _repeated_invalidIndexes_codec);
            break;
          }
          case 26: {
            Id = input.ReadString();
            break;
          }
          case 34: {
            if (dataFields_ == null) {
              dataFields_ = new global::TPG.DrawObjects.Serialize.Protoc.DataFieldsProto();
            }
            input.ReadMessage(dataFields_);
            break;
          }
          case 42: {
            global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.TacticalFieldsProto();
            if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.TacticalDataFields) {
              subBuilder.MergeFrom(TacticalDataFields);
            }
            input.ReadMessage(subBuilder);
            TacticalDataFields = subBuilder;
            break;
          }
          case 50: {
            global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GenericFieldsProto();
            if (typeFieldsobjectCase_ == TypeFieldsobjectOneofCase.GenericDataFields) {
              subBuilder.MergeFrom(GenericDataFields);
            }
            input.ReadMessage(subBuilder);
            GenericDataFields = subBuilder;
            break;
          }
          case 56: {
            BooleanAttributes = input.ReadUInt32();
            break;
          }
          case 66: {
            global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GeoDoublePointsProto();
            if (typeGeopointCase_ == TypeGeopointOneofCase.GeoPoints) {
              subBuilder.MergeFrom(GeoPoints);
            }
            input.ReadMessage(subBuilder);
            GeoPoints = subBuilder;
            break;
          }
          case 74: {
            global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.GeoShiftedIntPointsProto();
            if (typeGeopointCase_ == TypeGeopointOneofCase.GeoShiftedIntPoints) {
              subBuilder.MergeFrom(GeoShiftedIntPoints);
            }
            input.ReadMessage(subBuilder);
            GeoShiftedIntPoints = subBuilder;
            break;
          }
          case 82: {
            global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.CorridorAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.CorridorArea) {
              subBuilder.MergeFrom(CorridorArea);
            }
            input.ReadMessage(subBuilder);
            CorridorArea = subBuilder;
            break;
          }
          case 90: {
            global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.FanArea) {
              subBuilder.MergeFrom(FanArea);
            }
            input.ReadMessage(subBuilder);
            FanArea = subBuilder;
            break;
          }
          case 98: {
            global::TPG.DrawObjects.Serialize.Protoc.EllipseProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.EllipseProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Ellipse) {
              subBuilder.MergeFrom(Ellipse);
            }
            input.ReadMessage(subBuilder);
            Ellipse = subBuilder;
            break;
          }
          case 106: {
            global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolPolyAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolPolyArea) {
              subBuilder.MergeFrom(VolPolyArea);
            }
            input.ReadMessage(subBuilder);
            VolPolyArea = subBuilder;
            break;
          }
          case 114: {
            global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolOrbitAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolOrbitArea) {
              subBuilder.MergeFrom(VolOrbitArea);
            }
            input.ReadMessage(subBuilder);
            VolOrbitArea = subBuilder;
            break;
          }
          case 122: {
            global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolFanAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolFanArea) {
              subBuilder.MergeFrom(VolFanArea);
            }
            input.ReadMessage(subBuilder);
            VolFanArea = subBuilder;
            break;
          }
          case 130: {
            global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolEllipseProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolEllipse) {
              subBuilder.MergeFrom(VolEllipse);
            }
            input.ReadMessage(subBuilder);
            VolEllipse = subBuilder;
            break;
          }
          case 138: {
            global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.VolCorridorAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.VolCorridorArea) {
              subBuilder.MergeFrom(VolCorridorArea);
            }
            input.ReadMessage(subBuilder);
            VolCorridorArea = subBuilder;
            break;
          }
          case 146: {
            global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.OrbitArea) {
              subBuilder.MergeFrom(OrbitArea);
            }
            input.ReadMessage(subBuilder);
            OrbitArea = subBuilder;
            break;
          }
          case 154: {
            global::TPG.DrawObjects.Serialize.Protoc.PointProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PointProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Point) {
              subBuilder.MergeFrom(Point);
            }
            input.ReadMessage(subBuilder);
            Point = subBuilder;
            break;
          }
          case 162: {
            global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.RangeRingsProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.RangeRings) {
              subBuilder.MergeFrom(RangeRings);
            }
            input.ReadMessage(subBuilder);
            RangeRings = subBuilder;
            break;
          }
          case 170: {
            global::TPG.DrawObjects.Serialize.Protoc.LineProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.LineProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.Line) {
              subBuilder.MergeFrom(Line);
            }
            input.ReadMessage(subBuilder);
            Line = subBuilder;
            break;
          }
          case 178: {
            global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PolygonAreaProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.PolygonArea) {
              subBuilder.MergeFrom(PolygonArea);
            }
            input.ReadMessage(subBuilder);
            PolygonArea = subBuilder;
            break;
          }
          case 186: {
            global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.PointShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntPoint) {
              subBuilder.MergeFrom(ShiftedIntPoint);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntPoint = subBuilder;
            break;
          }
          case 194: {
            global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.OrbitAreaShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntOrbitArea) {
              subBuilder.MergeFrom(ShiftedIntOrbitArea);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntOrbitArea = subBuilder;
            break;
          }
          case 202: {
            global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.EllipseAsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntEllipse) {
              subBuilder.MergeFrom(ShiftedIntEllipse);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntEllipse = subBuilder;
            break;
          }
          case 210: {
            global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.FanAreaAsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntFanArea) {
              subBuilder.MergeFrom(ShiftedIntFanArea);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntFanArea = subBuilder;
            break;
          }
          case 218: {
            global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto subBuilder = new global::TPG.DrawObjects.Serialize.Protoc.RangeRingsShiftedIntProto();
            if (typeImplementationsCase_ == TypeImplementationsOneofCase.ShiftedIntRangeRings) {
              subBuilder.MergeFrom(ShiftedIntRangeRings);
            }
            input.ReadMessage(subBuilder);
            ShiftedIntRangeRings = subBuilder;
            break;
          }
          case 226: {
            compositeDrawObjects_.AddEntriesFrom(input, _repeated_compositeDrawObjects_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class SimpleDrawObjectsProto : pb::IMessage<SimpleDrawObjectsProto> {
    private static readonly pb::MessageParser<SimpleDrawObjectsProto> _parser = new pb::MessageParser<SimpleDrawObjectsProto>(() => new SimpleDrawObjectsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SimpleDrawObjectsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[29]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto(SimpleDrawObjectsProto other) : this() {
      drawobjects_ = other.drawobjects_.Clone();
      dataVersion_ = other.dataVersion_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SimpleDrawObjectsProto Clone() {
      return new SimpleDrawObjectsProto(this);
    }

    /// <summary>Field number for the "drawobjects" field.</summary>
    public const int DrawobjectsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> _repeated_drawobjects_codec
        = pb::FieldCodec.ForMessage(10, global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> drawobjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto> Drawobjects {
      get { return drawobjects_; }
    }

    /// <summary>Field number for the "data_version" field.</summary>
    public const int DataVersionFieldNumber = 2;
    private uint dataVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint DataVersion {
      get { return dataVersion_; }
      set {
        dataVersion_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SimpleDrawObjectsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SimpleDrawObjectsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!drawobjects_.Equals(other.drawobjects_)) return false;
      if (DataVersion != other.DataVersion) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= drawobjects_.GetHashCode();
      if (DataVersion != 0) hash ^= DataVersion.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      drawobjects_.WriteTo(output, _repeated_drawobjects_codec);
      if (DataVersion != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(DataVersion);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += drawobjects_.CalculateSize(_repeated_drawobjects_codec);
      if (DataVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DataVersion);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SimpleDrawObjectsProto other) {
      if (other == null) {
        return;
      }
      drawobjects_.Add(other.drawobjects_);
      if (other.DataVersion != 0) {
        DataVersion = other.DataVersion;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            drawobjects_.AddEntriesFrom(input, _repeated_drawobjects_codec);
            break;
          }
          case 16: {
            DataVersion = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class DrawObjectProto : pb::IMessage<DrawObjectProto> {
    private static readonly pb::MessageParser<DrawObjectProto> _parser = new pb::MessageParser<DrawObjectProto>(() => new DrawObjectProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DrawObjectProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[30]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto(DrawObjectProto other) : this() {
      Simpledrawobject = other.simpledrawobject_ != null ? other.Simpledrawobject.Clone() : null;
      c2525Code_ = other.c2525Code_;
      useDefaultEnums_ = other.useDefaultEnums_;
      useDefaultValuesInDataFields_ = other.useDefaultValuesInDataFields_;
      useDefaultValuesInExtendedFields_ = other.useDefaultValuesInExtendedFields_;
      useDefaultValuesInTypeFields_ = other.useDefaultValuesInTypeFields_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectProto Clone() {
      return new DrawObjectProto(this);
    }

    /// <summary>Field number for the "simpledrawobject" field.</summary>
    public const int SimpledrawobjectFieldNumber = 1;
    private global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto simpledrawobject_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto Simpledrawobject {
      get { return simpledrawobject_; }
      set {
        simpledrawobject_ = value;
      }
    }

    /// <summary>Field number for the "c2525Code" field.</summary>
    public const int C2525CodeFieldNumber = 2;
    private string c2525Code_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string C2525Code {
      get { return c2525Code_; }
      set {
        c2525Code_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "UseDefaultEnums" field.</summary>
    public const int UseDefaultEnumsFieldNumber = 3;
    private uint useDefaultEnums_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultEnums {
      get { return useDefaultEnums_; }
      set {
        useDefaultEnums_ = value;
      }
    }

    /// <summary>Field number for the "UseDefaultValuesInDataFields" field.</summary>
    public const int UseDefaultValuesInDataFieldsFieldNumber = 4;
    private uint useDefaultValuesInDataFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInDataFields {
      get { return useDefaultValuesInDataFields_; }
      set {
        useDefaultValuesInDataFields_ = value;
      }
    }

    /// <summary>Field number for the "UseDefaultValuesInExtendedFields" field.</summary>
    public const int UseDefaultValuesInExtendedFieldsFieldNumber = 5;
    private uint useDefaultValuesInExtendedFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInExtendedFields {
      get { return useDefaultValuesInExtendedFields_; }
      set {
        useDefaultValuesInExtendedFields_ = value;
      }
    }

    /// <summary>Field number for the "UseDefaultValuesInTypeFields" field.</summary>
    public const int UseDefaultValuesInTypeFieldsFieldNumber = 6;
    private uint useDefaultValuesInTypeFields_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint UseDefaultValuesInTypeFields {
      get { return useDefaultValuesInTypeFields_; }
      set {
        useDefaultValuesInTypeFields_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DrawObjectProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DrawObjectProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Simpledrawobject, other.Simpledrawobject)) return false;
      if (C2525Code != other.C2525Code) return false;
      if (UseDefaultEnums != other.UseDefaultEnums) return false;
      if (UseDefaultValuesInDataFields != other.UseDefaultValuesInDataFields) return false;
      if (UseDefaultValuesInExtendedFields != other.UseDefaultValuesInExtendedFields) return false;
      if (UseDefaultValuesInTypeFields != other.UseDefaultValuesInTypeFields) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (simpledrawobject_ != null) hash ^= Simpledrawobject.GetHashCode();
      if (C2525Code.Length != 0) hash ^= C2525Code.GetHashCode();
      if (UseDefaultEnums != 0) hash ^= UseDefaultEnums.GetHashCode();
      if (UseDefaultValuesInDataFields != 0) hash ^= UseDefaultValuesInDataFields.GetHashCode();
      if (UseDefaultValuesInExtendedFields != 0) hash ^= UseDefaultValuesInExtendedFields.GetHashCode();
      if (UseDefaultValuesInTypeFields != 0) hash ^= UseDefaultValuesInTypeFields.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (simpledrawobject_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Simpledrawobject);
      }
      if (C2525Code.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(C2525Code);
      }
      if (UseDefaultEnums != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(UseDefaultEnums);
      }
      if (UseDefaultValuesInDataFields != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(UseDefaultValuesInDataFields);
      }
      if (UseDefaultValuesInExtendedFields != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(UseDefaultValuesInExtendedFields);
      }
      if (UseDefaultValuesInTypeFields != 0) {
        output.WriteRawTag(48);
        output.WriteUInt32(UseDefaultValuesInTypeFields);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (simpledrawobject_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Simpledrawobject);
      }
      if (C2525Code.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(C2525Code);
      }
      if (UseDefaultEnums != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultEnums);
      }
      if (UseDefaultValuesInDataFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInDataFields);
      }
      if (UseDefaultValuesInExtendedFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInExtendedFields);
      }
      if (UseDefaultValuesInTypeFields != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(UseDefaultValuesInTypeFields);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DrawObjectProto other) {
      if (other == null) {
        return;
      }
      if (other.simpledrawobject_ != null) {
        if (simpledrawobject_ == null) {
          simpledrawobject_ = new global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto();
        }
        Simpledrawobject.MergeFrom(other.Simpledrawobject);
      }
      if (other.C2525Code.Length != 0) {
        C2525Code = other.C2525Code;
      }
      if (other.UseDefaultEnums != 0) {
        UseDefaultEnums = other.UseDefaultEnums;
      }
      if (other.UseDefaultValuesInDataFields != 0) {
        UseDefaultValuesInDataFields = other.UseDefaultValuesInDataFields;
      }
      if (other.UseDefaultValuesInExtendedFields != 0) {
        UseDefaultValuesInExtendedFields = other.UseDefaultValuesInExtendedFields;
      }
      if (other.UseDefaultValuesInTypeFields != 0) {
        UseDefaultValuesInTypeFields = other.UseDefaultValuesInTypeFields;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (simpledrawobject_ == null) {
              simpledrawobject_ = new global::TPG.DrawObjects.Serialize.Protoc.SimpleDrawObjectProto();
            }
            input.ReadMessage(simpledrawobject_);
            break;
          }
          case 18: {
            C2525Code = input.ReadString();
            break;
          }
          case 24: {
            UseDefaultEnums = input.ReadUInt32();
            break;
          }
          case 32: {
            UseDefaultValuesInDataFields = input.ReadUInt32();
            break;
          }
          case 40: {
            UseDefaultValuesInExtendedFields = input.ReadUInt32();
            break;
          }
          case 48: {
            UseDefaultValuesInTypeFields = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  public sealed partial class DrawObjectsProto : pb::IMessage<DrawObjectsProto> {
    private static readonly pb::MessageParser<DrawObjectsProto> _parser = new pb::MessageParser<DrawObjectsProto>(() => new DrawObjectsProto());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DrawObjectsProto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::TPG.DrawObjects.Serialize.Protoc.SimpledrawobjectReflection.Descriptor.MessageTypes[31]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto(DrawObjectsProto other) : this() {
      drawobjects_ = other.drawobjects_.Clone();
      dataVersion_ = other.dataVersion_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrawObjectsProto Clone() {
      return new DrawObjectsProto(this);
    }

    /// <summary>Field number for the "drawobjects" field.</summary>
    public const int DrawobjectsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> _repeated_drawobjects_codec
        = pb::FieldCodec.ForMessage(10, global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto.Parser);
    private readonly pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> drawobjects_ = new pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::TPG.DrawObjects.Serialize.Protoc.DrawObjectProto> Drawobjects {
      get { return drawobjects_; }
    }

    /// <summary>Field number for the "data_version" field.</summary>
    public const int DataVersionFieldNumber = 2;
    private uint dataVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint DataVersion {
      get { return dataVersion_; }
      set {
        dataVersion_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DrawObjectsProto);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DrawObjectsProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!drawobjects_.Equals(other.drawobjects_)) return false;
      if (DataVersion != other.DataVersion) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= drawobjects_.GetHashCode();
      if (DataVersion != 0) hash ^= DataVersion.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      drawobjects_.WriteTo(output, _repeated_drawobjects_codec);
      if (DataVersion != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(DataVersion);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += drawobjects_.CalculateSize(_repeated_drawobjects_codec);
      if (DataVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DataVersion);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DrawObjectsProto other) {
      if (other == null) {
        return;
      }
      drawobjects_.Add(other.drawobjects_);
      if (other.DataVersion != 0) {
        DataVersion = other.DataVersion;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            drawobjects_.AddEntriesFrom(input, _repeated_drawobjects_codec);
            break;
          }
          case 16: {
            DataVersion = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code