AeonLucid/POGOProtos

View on GitHub
base/v0.59.1.proto

Summary

Maintainability
Test Coverage
syntax = "proto3";
package Holoholo.Rpc;

enum PokemonCreateContext
{
    CREATE_CONTEXT_WILD = 0;
    CREATE_CONTEXT_EGG = 1;
    CREATE_CONTEXT_EVOLVE = 2;
}

enum FortType
{
    GYM = 0;
    CHECKPOINT = 1;
}

enum Item
{
    ITEM_UNKNOWN = 0;
    ITEM_POKE_BALL = 1;
    ITEM_GREAT_BALL = 2;
    ITEM_ULTRA_BALL = 3;
    ITEM_MASTER_BALL = 4;
    ITEM_POTION = 101;
    ITEM_SUPER_POTION = 102;
    ITEM_HYPER_POTION = 103;
    ITEM_MAX_POTION = 104;
    ITEM_REVIVE = 201;
    ITEM_MAX_REVIVE = 202;
    ITEM_LUCKY_EGG = 301;
    ITEM_INCENSE_ORDINARY = 401;
    ITEM_INCENSE_SPICY = 402;
    ITEM_INCENSE_COOL = 403;
    ITEM_INCENSE_FLORAL = 404;
    ITEM_TROY_DISK = 501;
    ITEM_X_ATTACK = 602;
    ITEM_X_DEFENSE = 603;
    ITEM_X_MIRACLE = 604;
    ITEM_RAZZ_BERRY = 701;
    ITEM_BLUK_BERRY = 702;
    ITEM_NANAB_BERRY = 703;
    ITEM_WEPAR_BERRY = 704;
    ITEM_PINAP_BERRY = 705;
    ITEM_SPECIAL_CAMERA = 801;
    ITEM_INCUBATOR_BASIC_UNLIMITED = 901;
    ITEM_INCUBATOR_BASIC = 902;
    ITEM_POKEMON_STORAGE_UPGRADE = 1001;
    ITEM_ITEM_STORAGE_UPGRADE = 1002;
    ITEM_SUN_STONE = 1101;
    ITEM_KINGS_ROCK = 1102;
    ITEM_METAL_COAT = 1103;
    ITEM_DRAGON_SCALE = 1104;
    ITEM_UP_GRADE = 1105;
}

enum PlayerAvatarType
{
    PLAYER_AVATAR_MALE = 0;
    PLAYER_AVATAR_FEMALE = 1;
}

enum InventoryUpgradeType
{
    UPGRADE_UNSET = 0;
    INCREASE_ITEM_STORAGE = 1;
    INCREASE_POKEMON_STORAGE = 2;
}

enum QuestType
{
    QUEST_UNKNOWN_TYPE = 0;
    QUEST_FIRST_CATCH_OF_THE_DAY = 1;
    QUEST_FIRST_POKESTOP_OF_THE_DAY = 2;
}

enum EggIncubatorType
{
    INCUBATOR_UNSET = 0;
    INCUBATOR_DISTANCE = 1;
}

enum Team
{
    UNSET = 0;
    TEAM_BLUE = 1;
    TEAM_RED = 2;
    TEAM_YELLOW = 3;
}

enum HoloPokemonType
{
    POKEMON_TYPE_NONE = 0;
    POKEMON_TYPE_NORMAL = 1;
    POKEMON_TYPE_FIGHTING = 2;
    POKEMON_TYPE_FLYING = 3;
    POKEMON_TYPE_POISON = 4;
    POKEMON_TYPE_GROUND = 5;
    POKEMON_TYPE_ROCK = 6;
    POKEMON_TYPE_BUG = 7;
    POKEMON_TYPE_GHOST = 8;
    POKEMON_TYPE_STEEL = 9;
    POKEMON_TYPE_FIRE = 10;
    POKEMON_TYPE_WATER = 11;
    POKEMON_TYPE_GRASS = 12;
    POKEMON_TYPE_ELECTRIC = 13;
    POKEMON_TYPE_PSYCHIC = 14;
    POKEMON_TYPE_ICE = 15;
    POKEMON_TYPE_DRAGON = 16;
    POKEMON_TYPE_DARK = 17;
    POKEMON_TYPE_FAIRY = 18;
}

enum HoloPokemonClass
{
    POKEMON_CLASS_NORMAL = 0;
    POKEMON_CLASS_LEGENDARY = 1;
    POKEMON_CLASS_MYTHIC = 2;
}

enum HoloPokemonNature
{
    NATURE_UNKNOWN = 0;
    V0001_POKEMON_NATURE_STOIC = 1;
    V0002_POKEMON_NATURE_ASSASSIN = 2;
    V0003_POKEMON_NATURE_GUARDIAN = 3;
    V0004_POKEMON_NATURE_RAIDER = 4;
    V0005_POKEMON_NATURE_PROTECTOR = 5;
    V0006_POKEMON_NATURE_SENTRY = 6;
    V0007_POKEMON_NATURE_CHAMPION = 7;
}

enum HoloPokemonMovementType
{
    POKEMON_ENC_MOVEMENT_STATIC = 0;
    POKEMON_ENC_MOVEMENT_JUMP = 1;
    POKEMON_ENC_MOVEMENT_VERTICAL = 2;
    POKEMON_ENC_MOVEMENT_PSYCHIC = 3;
    POKEMON_ENC_MOVEMENT_ELECTRIC = 4;
    POKEMON_ENC_MOVEMENT_FLYING = 5;
    POKEMON_ENC_MOVEMENT_HOVERING = 6;
}

enum HoloItemType
{
    ITEM_TYPE_NONE = 0;
    ITEM_TYPE_POKEBALL = 1;
    ITEM_TYPE_POTION = 2;
    ITEM_TYPE_REVIVE = 3;
    ITEM_TYPE_MAP = 4;
    ITEM_TYPE_BATTLE = 5;
    ITEM_TYPE_FOOD = 6;
    ITEM_TYPE_CAMERA = 7;
    ITEM_TYPE_DISK = 8;
    ITEM_TYPE_INCUBATOR = 9;
    ITEM_TYPE_INCENSE = 10;
    ITEM_TYPE_XP_BOOST = 11;
    ITEM_TYPE_INVENTORY_UPGRADE = 12;
    ITEM_TYPE_EVOLUTION_REQUIREMENT = 13;
}

enum HoloItemCategory
{
    ITEM_CATEGORY_NONE = 0;
    ITEM_CATEGORY_POKEBALL = 1;
    ITEM_CATEGORY_FOOD = 2;
    ITEM_CATEGORY_MEDICINE = 3;
    ITEM_CATEGORY_BOOST = 4;
    ITEM_CATEGORY_UTILITES = 5;
    ITEM_CATEGORY_CAMERA = 6;
    ITEM_CATEGORY_DISK = 7;
    ITEM_CATEGORY_INCUBATOR = 8;
    ITEM_CATEGORY_INCENSE = 9;
    ITEM_CATEGORY_XP_BOOST = 10;
    ITEM_CATEGORY_INVENTORY_UPGRADE = 11;
    ITEM_CATEGORY_EVOLUTION_REQUIREMENT = 12;
}

enum HoloIapItemCategory
{
    IAP_CATEGORY_NONE = 0;
    IAP_CATEGORY_BUNDLE = 1;
    IAP_CATEGORY_ITEMS = 2;
    IAP_CATEGORY_UPGRADES = 3;
    IAP_CATEGORY_POKECOINS = 4;
    IAP_CATEGORY_AVATAR = 5;
}

enum HoloItemEffect
{
    ITEM_EFFECT_NONE = 0;
    ITEM_EFFECT_CAP_NO_FLEE = 1000;
    ITEM_EFFECT_CAP_NO_MOVEMENT = 1002;
    ITEM_EFFECT_CAP_NO_THREAT = 1003;
    ITEM_EFFECT_CAP_TARGET_MAX = 1004;
    ITEM_EFFECT_CAP_TARGET_SLOW = 1005;
    ITEM_EFFECT_CAP_CHANCE_NIGHT = 1006;
    ITEM_EFFECT_CAP_CHANCE_TRAINER = 1007;
    ITEM_EFFECT_CAP_CHANCE_FIRST_THROW = 1008;
    ITEM_EFFECT_CAP_CHANCE_LEGEND = 1009;
    ITEM_EFFECT_CAP_CHANCE_HEAVY = 1010;
    ITEM_EFFECT_CAP_CHANCE_REPEAT = 1011;
    ITEM_EFFECT_CAP_CHANCE_MULTI_THROW = 1012;
    ITEM_EFFECT_CAP_CHANCE_ALWAYS = 1013;
    ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW = 1014;
    ITEM_EFFECT_CANDY_AWARD = 1015;
}

enum HoloActivityType
{
    ACTIVITY_UNKNOWN = 0;
    ACTIVITY_CATCH_POKEMON = 1;
    ACTIVITY_CATCH_LEGEND_POKEMON = 2;
    ACTIVITY_FLEE_POKEMON = 3;
    ACTIVITY_DEFEAT_FORT = 4;
    ACTIVITY_EVOLVE_POKEMON = 5;
    ACTIVITY_HATCH_EGG = 6;
    ACTIVITY_WALK_KM = 7;
    ACTIVITY_POKEDEX_ENTRY_NEW = 8;
    ACTIVITY_CATCH_FIRST_THROW = 9;
    ACTIVITY_CATCH_NICE_THROW = 10;
    ACTIVITY_CATCH_GREAT_THROW = 11;
    ACTIVITY_CATCH_EXCELLENT_THROW = 12;
    ACTIVITY_CATCH_CURVEBALL = 13;
    ACTIVITY_CATCH_FIRST_CATCH_OF_DAY = 14;
    ACTIVITY_CATCH_MILESTONE = 15;
    ACTIVITY_TRAIN_POKEMON = 16;
    ACTIVITY_SEARCH_FORT = 17;
    ACTIVITY_RELEASE_POKEMON = 18;
    ACTIVITY_HATCH_EGG_SMALL_BONUS = 19;
    ACTIVITY_HATCH_EGG_MEDIUM_BONUS = 20;
    ACTIVITY_HATCH_EGG_LARGE_BONUS = 21;
    ACTIVITY_DEFEAT_GYM_DEFENDER = 22;
    ACTIVITY_DEFEAT_GYM_LEADER = 23;
    ACTIVITY_CATCH_FIRST_CATCH_STREAK_BONUS = 24;
    ACTIVITY_SEARCH_FORT_FIRST_OF_THE_DAY = 25;
    ACTIVITY_SEARCH_FORT_STREAK_BONUS = 26;
}

enum HoloBadgeType
{
    BADGE_UNSET = 0;
    BADGE_TRAVEL_KM = 1;
    BADGE_POKEDEX_ENTRIES = 2;
    BADGE_CAPTURE_TOTAL = 3;
    BADGE_DEFEATED_FORT = 4;
    BADGE_EVOLVED_TOTAL = 5;
    BADGE_HATCHED_TOTAL = 6;
    BADGE_ENCOUNTERED_TOTAL = 7;
    BADGE_POKESTOPS_VISITED = 8;
    BADGE_UNIQUE_POKESTOPS = 9;
    BADGE_POKEBALL_THROWN = 10;
    BADGE_BIG_MAGIKARP = 11;
    BADGE_DEPLOYED_TOTAL = 12;
    BADGE_BATTLE_ATTACK_WON = 13;
    BADGE_BATTLE_TRAINING_WON = 14;
    BADGE_BATTLE_DEFEND_WON = 15;
    BADGE_PRESTIGE_RAISED = 16;
    BADGE_PRESTIGE_DROPPED = 17;
    BADGE_TYPE_NORMAL = 18;
    BADGE_TYPE_FIGHTING = 19;
    BADGE_TYPE_FLYING = 20;
    BADGE_TYPE_POISON = 21;
    BADGE_TYPE_GROUND = 22;
    BADGE_TYPE_ROCK = 23;
    BADGE_TYPE_BUG = 24;
    BADGE_TYPE_GHOST = 25;
    BADGE_TYPE_STEEL = 26;
    BADGE_TYPE_FIRE = 27;
    BADGE_TYPE_WATER = 28;
    BADGE_TYPE_GRASS = 29;
    BADGE_TYPE_ELECTRIC = 30;
    BADGE_TYPE_PSYCHIC = 31;
    BADGE_TYPE_ICE = 32;
    BADGE_TYPE_DRAGON = 33;
    BADGE_TYPE_DARK = 34;
    BADGE_TYPE_FAIRY = 35;
    BADGE_SMALL_RATTATA = 36;
    BADGE_PIKACHU = 37;
    BADGE_UNOWN = 38;
    BADGE_POKEDEX_ENTRIES_GEN2 = 39;
}

enum CameraInterpolation
{
    CAM_INTERP_CUT = 0;
    CAM_INTERP_LINEAR = 1;
    CAM_INTERP_SMOOTH = 2;
    CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE = 3;
    CAM_INTERP_DEPENDS = 4;
}

enum CameraTarget
{
    CAM_TARGET_ATTACKER = 0;
    CAM_TARGET_ATTACKER_EDGE = 1;
    CAM_TARGET_ATTACKER_GROUND = 2;
    CAM_TARGET_DEFENDER = 3;
    CAM_TARGET_DEFENDER_EDGE = 4;
    CAM_TARGET_DEFENDER_GROUND = 5;
    CAM_TARGET_ATTACKER_DEFENDER = 6;
    CAM_TARGET_ATTACKER_DEFENDER_EDGE = 7;
    CAM_TARGET_DEFENDER_ATTACKER = 8;
    CAM_TARGET_DEFENDER_ATTACKER_EDGE = 9;
    CAM_TARGET_ATTACKER_DEFENDER_MIRROR = 11;
    CAM_TARGET_SHOULDER_ATTACKER_DEFENDER = 12;
    CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR = 13;
    CAM_TARGET_ATTACKER_DEFENDER_WORLD = 14;
}

enum HoloPokemonMove
{
    MOVE_UNSET = 0;
    V0001_MOVE_THUNDER_SHOCK = 1;
    V0002_MOVE_QUICK_ATTACK = 2;
    V0003_MOVE_SCRATCH = 3;
    V0004_MOVE_EMBER = 4;
    V0005_MOVE_VINE_WHIP = 5;
    V0006_MOVE_TACKLE = 6;
    V0007_MOVE_RAZOR_LEAF = 7;
    V0008_MOVE_TAKE_DOWN = 8;
    V0009_MOVE_WATER_GUN = 9;
    V0010_MOVE_BITE = 10;
    V0011_MOVE_POUND = 11;
    V0012_MOVE_DOUBLE_SLAP = 12;
    V0013_MOVE_WRAP = 13;
    V0014_MOVE_HYPER_BEAM = 14;
    V0015_MOVE_LICK = 15;
    V0016_MOVE_DARK_PULSE = 16;
    V0017_MOVE_SMOG = 17;
    V0018_MOVE_SLUDGE = 18;
    V0019_MOVE_METAL_CLAW = 19;
    V0020_MOVE_VICE_GRIP = 20;
    V0021_MOVE_FLAME_WHEEL = 21;
    V0022_MOVE_MEGAHORN = 22;
    V0023_MOVE_WING_ATTACK = 23;
    V0024_MOVE_FLAMETHROWER = 24;
    V0025_MOVE_SUCKER_PUNCH = 25;
    V0026_MOVE_DIG = 26;
    V0027_MOVE_LOW_KICK = 27;
    V0028_MOVE_CROSS_CHOP = 28;
    V0029_MOVE_PSYCHO_CUT = 29;
    V0030_MOVE_PSYBEAM = 30;
    V0031_MOVE_EARTHQUAKE = 31;
    V0032_MOVE_STONE_EDGE = 32;
    V0033_MOVE_ICE_PUNCH = 33;
    V0034_MOVE_HEART_STAMP = 34;
    V0035_MOVE_DISCHARGE = 35;
    V0036_MOVE_FLASH_CANNON = 36;
    V0037_MOVE_PECK = 37;
    V0038_MOVE_DRILL_PECK = 38;
    V0039_MOVE_ICE_BEAM = 39;
    V0040_MOVE_BLIZZARD = 40;
    V0041_MOVE_AIR_SLASH = 41;
    V0042_MOVE_HEAT_WAVE = 42;
    V0043_MOVE_TWINEEDLE = 43;
    V0044_MOVE_POISON_JAB = 44;
    V0045_MOVE_AERIAL_ACE = 45;
    V0046_MOVE_DRILL_RUN = 46;
    V0047_MOVE_PETAL_BLIZZARD = 47;
    V0048_MOVE_MEGA_DRAIN = 48;
    V0049_MOVE_BUG_BUZZ = 49;
    V0050_MOVE_POISON_FANG = 50;
    V0051_MOVE_NIGHT_SLASH = 51;
    V0052_MOVE_SLASH = 52;
    V0053_MOVE_BUBBLE_BEAM = 53;
    V0054_MOVE_SUBMISSION = 54;
    V0055_MOVE_KARATE_CHOP = 55;
    V0056_MOVE_LOW_SWEEP = 56;
    V0057_MOVE_AQUA_JET = 57;
    V0058_MOVE_AQUA_TAIL = 58;
    V0059_MOVE_SEED_BOMB = 59;
    V0060_MOVE_PSYSHOCK = 60;
    V0061_MOVE_ROCK_THROW = 61;
    V0062_MOVE_ANCIENT_POWER = 62;
    V0063_MOVE_ROCK_TOMB = 63;
    V0064_MOVE_ROCK_SLIDE = 64;
    V0065_MOVE_POWER_GEM = 65;
    V0066_MOVE_SHADOW_SNEAK = 66;
    V0067_MOVE_SHADOW_PUNCH = 67;
    V0068_MOVE_SHADOW_CLAW = 68;
    V0069_MOVE_OMINOUS_WIND = 69;
    V0070_MOVE_SHADOW_BALL = 70;
    V0071_MOVE_BULLET_PUNCH = 71;
    V0072_MOVE_MAGNET_BOMB = 72;
    V0073_MOVE_STEEL_WING = 73;
    V0074_MOVE_IRON_HEAD = 74;
    V0075_MOVE_PARABOLIC_CHARGE = 75;
    V0076_MOVE_SPARK = 76;
    V0077_MOVE_THUNDER_PUNCH = 77;
    V0078_MOVE_THUNDER = 78;
    V0079_MOVE_THUNDERBOLT = 79;
    V0080_MOVE_TWISTER = 80;
    V0081_MOVE_DRAGON_BREATH = 81;
    V0082_MOVE_DRAGON_PULSE = 82;
    V0083_MOVE_DRAGON_CLAW = 83;
    V0084_MOVE_DISARMING_VOICE = 84;
    V0085_MOVE_DRAINING_KISS = 85;
    V0086_MOVE_DAZZLING_GLEAM = 86;
    V0087_MOVE_MOONBLAST = 87;
    V0088_MOVE_PLAY_ROUGH = 88;
    V0089_MOVE_CROSS_POISON = 89;
    V0090_MOVE_SLUDGE_BOMB = 90;
    V0091_MOVE_SLUDGE_WAVE = 91;
    V0092_MOVE_GUNK_SHOT = 92;
    V0093_MOVE_MUD_SHOT = 93;
    V0094_MOVE_BONE_CLUB = 94;
    V0095_MOVE_BULLDOZE = 95;
    V0096_MOVE_MUD_BOMB = 96;
    V0097_MOVE_FURY_CUTTER = 97;
    V0098_MOVE_BUG_BITE = 98;
    V0099_MOVE_SIGNAL_BEAM = 99;
    V0100_MOVE_X_SCISSOR = 100;
    V0101_MOVE_FLAME_CHARGE = 101;
    V0102_MOVE_FLAME_BURST = 102;
    V0103_MOVE_FIRE_BLAST = 103;
    V0104_MOVE_BRINE = 104;
    V0105_MOVE_WATER_PULSE = 105;
    V0106_MOVE_SCALD = 106;
    V0107_MOVE_HYDRO_PUMP = 107;
    V0108_MOVE_PSYCHIC = 108;
    V0109_MOVE_PSYSTRIKE = 109;
    V0110_MOVE_ICE_SHARD = 110;
    V0111_MOVE_ICY_WIND = 111;
    V0112_MOVE_FROST_BREATH = 112;
    V0113_MOVE_ABSORB = 113;
    V0114_MOVE_GIGA_DRAIN = 114;
    V0115_MOVE_FIRE_PUNCH = 115;
    V0116_MOVE_SOLAR_BEAM = 116;
    V0117_MOVE_LEAF_BLADE = 117;
    V0118_MOVE_POWER_WHIP = 118;
    V0119_MOVE_SPLASH = 119;
    V0120_MOVE_ACID = 120;
    V0121_MOVE_AIR_CUTTER = 121;
    V0122_MOVE_HURRICANE = 122;
    V0123_MOVE_BRICK_BREAK = 123;
    V0124_MOVE_CUT = 124;
    V0125_MOVE_SWIFT = 125;
    V0126_MOVE_HORN_ATTACK = 126;
    V0127_MOVE_STOMP = 127;
    V0128_MOVE_HEADBUTT = 128;
    V0129_MOVE_HYPER_FANG = 129;
    V0130_MOVE_SLAM = 130;
    V0131_MOVE_BODY_SLAM = 131;
    V0132_MOVE_REST = 132;
    V0133_MOVE_STRUGGLE = 133;
    V0134_MOVE_SCALD_BLASTOISE = 134;
    V0135_MOVE_HYDRO_PUMP_BLASTOISE = 135;
    V0136_MOVE_WRAP_GREEN = 136;
    V0137_MOVE_WRAP_PINK = 137;
    V0200_MOVE_FURY_CUTTER_FAST = 200;
    V0201_MOVE_BUG_BITE_FAST = 201;
    V0202_MOVE_BITE_FAST = 202;
    V0203_MOVE_SUCKER_PUNCH_FAST = 203;
    V0204_MOVE_DRAGON_BREATH_FAST = 204;
    V0205_MOVE_THUNDER_SHOCK_FAST = 205;
    V0206_MOVE_SPARK_FAST = 206;
    V0207_MOVE_LOW_KICK_FAST = 207;
    V0208_MOVE_KARATE_CHOP_FAST = 208;
    V0209_MOVE_EMBER_FAST = 209;
    V0210_MOVE_WING_ATTACK_FAST = 210;
    V0211_MOVE_PECK_FAST = 211;
    V0212_MOVE_LICK_FAST = 212;
    V0213_MOVE_SHADOW_CLAW_FAST = 213;
    V0214_MOVE_VINE_WHIP_FAST = 214;
    V0215_MOVE_RAZOR_LEAF_FAST = 215;
    V0216_MOVE_MUD_SHOT_FAST = 216;
    V0217_MOVE_ICE_SHARD_FAST = 217;
    V0218_MOVE_FROST_BREATH_FAST = 218;
    V0219_MOVE_QUICK_ATTACK_FAST = 219;
    V0220_MOVE_SCRATCH_FAST = 220;
    V0221_MOVE_TACKLE_FAST = 221;
    V0222_MOVE_POUND_FAST = 222;
    V0223_MOVE_CUT_FAST = 223;
    V0224_MOVE_POISON_JAB_FAST = 224;
    V0225_MOVE_ACID_FAST = 225;
    V0226_MOVE_PSYCHO_CUT_FAST = 226;
    V0227_MOVE_ROCK_THROW_FAST = 227;
    V0228_MOVE_METAL_CLAW_FAST = 228;
    V0229_MOVE_BULLET_PUNCH_FAST = 229;
    V0230_MOVE_WATER_GUN_FAST = 230;
    V0231_MOVE_SPLASH_FAST = 231;
    V0232_MOVE_WATER_GUN_FAST_BLASTOISE = 232;
    V0233_MOVE_MUD_SLAP_FAST = 233;
    V0234_MOVE_ZEN_HEADBUTT_FAST = 234;
    V0235_MOVE_CONFUSION_FAST = 235;
    V0236_MOVE_POISON_STING_FAST = 236;
    V0237_MOVE_BUBBLE_FAST = 237;
    V0238_MOVE_FEINT_ATTACK_FAST = 238;
    V0239_MOVE_STEEL_WING_FAST = 239;
    V0240_MOVE_FIRE_FANG_FAST = 240;
    V0241_MOVE_ROCK_SMASH_FAST = 241;
    V0242_MOVE_TRANSFORM_FAST = 242;
    V0243_MOVE_COUNTER_FAST = 243;
    V0244_MOVE_POWDER_SNOW_FAST = 244;
    V0245_MOVE_CLOSE_COMBAT = 245;
    V0246_MOVE_DYNAMIC_PUNCH = 246;
    V0247_MOVE_FOCUS_BLAST = 247;
    V0248_MOVE_AURORA_BEAM = 248;
    V0249_MOVE_CHARGE_BEAM_FAST = 249;
    V0250_MOVE_VOLT_SWITCH_FAST = 250;
    V0251_MOVE_WILD_CHARGE = 251;
    V0252_MOVE_ZAP_CANNON = 252;
    V0253_MOVE_DRAGON_TAIL_FAST = 253;
    V0254_MOVE_AVALANCHE = 254;
    V0255_MOVE_AIR_SLASH_FAST = 255;
    V0256_MOVE_BRAVE_BIRD = 256;
    V0257_MOVE_SKY_ATTACK = 257;
    V0258_MOVE_SAND_TOMB = 258;
    V0259_MOVE_ROCK_BLAST = 259;
    V0260_MOVE_INFESTATION_FAST = 260;
    V0261_MOVE_STRUGGLE_BUG_FAST = 261;
    V0262_MOVE_SILVER_WIND = 262;
    V0263_MOVE_ASTONISH_FAST = 263;
    V0264_MOVE_HEX_FAST = 264;
    V0265_MOVE_NIGHT_SHADE = 265;
    V0266_MOVE_IRON_TAIL_FAST = 266;
    V0267_MOVE_GYRO_BALL = 267;
    V0268_MOVE_HEAVY_SLAM = 268;
    V0269_MOVE_FIRE_SPIN_FAST = 269;
    V0270_MOVE_OVERHEAT = 270;
    V0271_MOVE_BULLET_SEED_FAST = 271;
    V0272_MOVE_GRASS_KNOT = 272;
    V0273_MOVE_ENERGY_BALL = 273;
    V0274_MOVE_EXTRASENSORY_FAST = 274;
    V0275_MOVE_FUTURESIGHT = 275;
    V0276_MOVE_MIRROR_COAT = 276;
    V0277_MOVE_OUTRAGE = 277;
    V0278_MOVE_SNARL_FAST = 278;
    V0279_MOVE_CRUNCH = 279;
    V0280_MOVE_FOUL_PLAY = 280;
    V0281_MOVE_HIDDEN_POWER_FAST = 281;
}

enum HoloPokemonId
{
    POKEMON_UNSET = 0;
    V0001_POKEMON_BULBASAUR = 1;
    V0002_POKEMON_IVYSAUR = 2;
    V0003_POKEMON_VENUSAUR = 3;
    V0004_POKEMON_CHARMANDER = 4;
    V0005_POKEMON_CHARMELEON = 5;
    V0006_POKEMON_CHARIZARD = 6;
    V0007_POKEMON_SQUIRTLE = 7;
    V0008_POKEMON_WARTORTLE = 8;
    V0009_POKEMON_BLASTOISE = 9;
    V0010_POKEMON_CATERPIE = 10;
    V0011_POKEMON_METAPOD = 11;
    V0012_POKEMON_BUTTERFREE = 12;
    V0013_POKEMON_WEEDLE = 13;
    V0014_POKEMON_KAKUNA = 14;
    V0015_POKEMON_BEEDRILL = 15;
    V0016_POKEMON_PIDGEY = 16;
    V0017_POKEMON_PIDGEOTTO = 17;
    V0018_POKEMON_PIDGEOT = 18;
    V0019_POKEMON_RATTATA = 19;
    V0020_POKEMON_RATICATE = 20;
    V0021_POKEMON_SPEAROW = 21;
    V0022_POKEMON_FEAROW = 22;
    V0023_POKEMON_EKANS = 23;
    V0024_POKEMON_ARBOK = 24;
    V0025_POKEMON_PIKACHU = 25;
    V0026_POKEMON_RAICHU = 26;
    V0027_POKEMON_SANDSHREW = 27;
    V0028_POKEMON_SANDSLASH = 28;
    V0029_POKEMON_NIDORAN = 29;
    V0030_POKEMON_NIDORINA = 30;
    V0031_POKEMON_NIDOQUEEN = 31;
    V0032_POKEMON_NIDORAN = 32;
    V0033_POKEMON_NIDORINO = 33;
    V0034_POKEMON_NIDOKING = 34;
    V0035_POKEMON_CLEFAIRY = 35;
    V0036_POKEMON_CLEFABLE = 36;
    V0037_POKEMON_VULPIX = 37;
    V0038_POKEMON_NINETALES = 38;
    V0039_POKEMON_JIGGLYPUFF = 39;
    V0040_POKEMON_WIGGLYTUFF = 40;
    V0041_POKEMON_ZUBAT = 41;
    V0042_POKEMON_GOLBAT = 42;
    V0043_POKEMON_ODDISH = 43;
    V0044_POKEMON_GLOOM = 44;
    V0045_POKEMON_VILEPLUME = 45;
    V0046_POKEMON_PARAS = 46;
    V0047_POKEMON_PARASECT = 47;
    V0048_POKEMON_VENONAT = 48;
    V0049_POKEMON_VENOMOTH = 49;
    V0050_POKEMON_DIGLETT = 50;
    V0051_POKEMON_DUGTRIO = 51;
    V0052_POKEMON_MEOWTH = 52;
    V0053_POKEMON_PERSIAN = 53;
    V0054_POKEMON_PSYDUCK = 54;
    V0055_POKEMON_GOLDUCK = 55;
    V0056_POKEMON_MANKEY = 56;
    V0057_POKEMON_PRIMEAPE = 57;
    V0058_POKEMON_GROWLITHE = 58;
    V0059_POKEMON_ARCANINE = 59;
    V0060_POKEMON_POLIWAG = 60;
    V0061_POKEMON_POLIWHIRL = 61;
    V0062_POKEMON_POLIWRATH = 62;
    V0063_POKEMON_ABRA = 63;
    V0064_POKEMON_KADABRA = 64;
    V0065_POKEMON_ALAKAZAM = 65;
    V0066_POKEMON_MACHOP = 66;
    V0067_POKEMON_MACHOKE = 67;
    V0068_POKEMON_MACHAMP = 68;
    V0069_POKEMON_BELLSPROUT = 69;
    V0070_POKEMON_WEEPINBELL = 70;
    V0071_POKEMON_VICTREEBEL = 71;
    V0072_POKEMON_TENTACOOL = 72;
    V0073_POKEMON_TENTACRUEL = 73;
    V0074_POKEMON_GEODUDE = 74;
    V0075_POKEMON_GRAVELER = 75;
    V0076_POKEMON_GOLEM = 76;
    V0077_POKEMON_PONYTA = 77;
    V0078_POKEMON_RAPIDASH = 78;
    V0079_POKEMON_SLOWPOKE = 79;
    V0080_POKEMON_SLOWBRO = 80;
    V0081_POKEMON_MAGNEMITE = 81;
    V0082_POKEMON_MAGNETON = 82;
    V0083_POKEMON_FARFETCHD = 83;
    V0084_POKEMON_DODUO = 84;
    V0085_POKEMON_DODRIO = 85;
    V0086_POKEMON_SEEL = 86;
    V0087_POKEMON_DEWGONG = 87;
    V0088_POKEMON_GRIMER = 88;
    V0089_POKEMON_MUK = 89;
    V0090_POKEMON_SHELLDER = 90;
    V0091_POKEMON_CLOYSTER = 91;
    V0092_POKEMON_GASTLY = 92;
    V0093_POKEMON_HAUNTER = 93;
    V0094_POKEMON_GENGAR = 94;
    V0095_POKEMON_ONIX = 95;
    V0096_POKEMON_DROWZEE = 96;
    V0097_POKEMON_HYPNO = 97;
    V0098_POKEMON_KRABBY = 98;
    V0099_POKEMON_KINGLER = 99;
    V0100_POKEMON_VOLTORB = 100;
    V0101_POKEMON_ELECTRODE = 101;
    V0102_POKEMON_EXEGGCUTE = 102;
    V0103_POKEMON_EXEGGUTOR = 103;
    V0104_POKEMON_CUBONE = 104;
    V0105_POKEMON_MAROWAK = 105;
    V0106_POKEMON_HITMONLEE = 106;
    V0107_POKEMON_HITMONCHAN = 107;
    V0108_POKEMON_LICKITUNG = 108;
    V0109_POKEMON_KOFFING = 109;
    V0110_POKEMON_WEEZING = 110;
    V0111_POKEMON_RHYHORN = 111;
    V0112_POKEMON_RHYDON = 112;
    V0113_POKEMON_CHANSEY = 113;
    V0114_POKEMON_TANGELA = 114;
    V0115_POKEMON_KANGASKHAN = 115;
    V0116_POKEMON_HORSEA = 116;
    V0117_POKEMON_SEADRA = 117;
    V0118_POKEMON_GOLDEEN = 118;
    V0119_POKEMON_SEAKING = 119;
    V0120_POKEMON_STARYU = 120;
    V0121_POKEMON_STARMIE = 121;
    V0122_POKEMON_MR_MIME = 122;
    V0123_POKEMON_SCYTHER = 123;
    V0124_POKEMON_JYNX = 124;
    V0125_POKEMON_ELECTABUZZ = 125;
    V0126_POKEMON_MAGMAR = 126;
    V0127_POKEMON_PINSIR = 127;
    V0128_POKEMON_TAUROS = 128;
    V0129_POKEMON_MAGIKARP = 129;
    V0130_POKEMON_GYARADOS = 130;
    V0131_POKEMON_LAPRAS = 131;
    V0132_POKEMON_DITTO = 132;
    V0133_POKEMON_EEVEE = 133;
    V0134_POKEMON_VAPOREON = 134;
    V0135_POKEMON_JOLTEON = 135;
    V0136_POKEMON_FLAREON = 136;
    V0137_POKEMON_PORYGON = 137;
    V0138_POKEMON_OMANYTE = 138;
    V0139_POKEMON_OMASTAR = 139;
    V0140_POKEMON_KABUTO = 140;
    V0141_POKEMON_KABUTOPS = 141;
    V0142_POKEMON_AERODACTYL = 142;
    V0143_POKEMON_SNORLAX = 143;
    V0144_POKEMON_ARTICUNO = 144;
    V0145_POKEMON_ZAPDOS = 145;
    V0146_POKEMON_MOLTRES = 146;
    V0147_POKEMON_DRATINI = 147;
    V0148_POKEMON_DRAGONAIR = 148;
    V0149_POKEMON_DRAGONITE = 149;
    V0150_POKEMON_MEWTWO = 150;
    V0151_POKEMON_MEW = 151;
    V0152_POKEMON_CHIKORITA = 152;
    V0153_POKEMON_BAYLEEF = 153;
    V0154_POKEMON_MEGANIUM = 154;
    V0155_POKEMON_CYNDAQUIL = 155;
    V0156_POKEMON_QUILAVA = 156;
    V0157_POKEMON_TYPHLOSION = 157;
    V0158_POKEMON_TOTODILE = 158;
    V0159_POKEMON_CROCONAW = 159;
    V0160_POKEMON_FERALIGATR = 160;
    V0161_POKEMON_SENTRET = 161;
    V0162_POKEMON_FURRET = 162;
    V0163_POKEMON_HOOTHOOT = 163;
    V0164_POKEMON_NOCTOWL = 164;
    V0165_POKEMON_LEDYBA = 165;
    V0166_POKEMON_LEDIAN = 166;
    V0167_POKEMON_SPINARAK = 167;
    V0168_POKEMON_ARIADOS = 168;
    V0169_POKEMON_CROBAT = 169;
    V0170_POKEMON_CHINCHOU = 170;
    V0171_POKEMON_LANTURN = 171;
    V0172_POKEMON_PICHU = 172;
    V0173_POKEMON_CLEFFA = 173;
    V0174_POKEMON_IGGLYBUFF = 174;
    V0175_POKEMON_TOGEPI = 175;
    V0176_POKEMON_TOGETIC = 176;
    V0177_POKEMON_NATU = 177;
    V0178_POKEMON_XATU = 178;
    V0179_POKEMON_MAREEP = 179;
    V0180_POKEMON_FLAAFFY = 180;
    V0181_POKEMON_AMPHAROS = 181;
    V0182_POKEMON_BELLOSSOM = 182;
    V0183_POKEMON_MARILL = 183;
    V0184_POKEMON_AZUMARILL = 184;
    V0185_POKEMON_SUDOWOODO = 185;
    V0186_POKEMON_POLITOED = 186;
    V0187_POKEMON_HOPPIP = 187;
    V0188_POKEMON_SKIPLOOM = 188;
    V0189_POKEMON_JUMPLUFF = 189;
    V0190_POKEMON_AIPOM = 190;
    V0191_POKEMON_SUNKERN = 191;
    V0192_POKEMON_SUNFLORA = 192;
    V0193_POKEMON_YANMA = 193;
    V0194_POKEMON_WOOPER = 194;
    V0195_POKEMON_QUAGSIRE = 195;
    V0196_POKEMON_ESPEON = 196;
    V0197_POKEMON_UMBREON = 197;
    V0198_POKEMON_MURKROW = 198;
    V0199_POKEMON_SLOWKING = 199;
    V0200_POKEMON_MISDREAVUS = 200;
    V0201_POKEMON_UNOWN = 201;
    V0202_POKEMON_WOBBUFFET = 202;
    V0203_POKEMON_GIRAFARIG = 203;
    V0204_POKEMON_PINECO = 204;
    V0205_POKEMON_FORRETRESS = 205;
    V0206_POKEMON_DUNSPARCE = 206;
    V0207_POKEMON_GLIGAR = 207;
    V0208_POKEMON_STEELIX = 208;
    V0209_POKEMON_SNUBBULL = 209;
    V0210_POKEMON_GRANBULL = 210;
    V0211_POKEMON_QWILFISH = 211;
    V0212_POKEMON_SCIZOR = 212;
    V0213_POKEMON_SHUCKLE = 213;
    V0214_POKEMON_HERACROSS = 214;
    V0215_POKEMON_SNEASEL = 215;
    V0216_POKEMON_TEDDIURSA = 216;
    V0217_POKEMON_URSARING = 217;
    V0218_POKEMON_SLUGMA = 218;
    V0219_POKEMON_MAGCARGO = 219;
    V0220_POKEMON_SWINUB = 220;
    V0221_POKEMON_PILOSWINE = 221;
    V0222_POKEMON_CORSOLA = 222;
    V0223_POKEMON_REMORAID = 223;
    V0224_POKEMON_OCTILLERY = 224;
    V0225_POKEMON_DELIBIRD = 225;
    V0226_POKEMON_MANTINE = 226;
    V0227_POKEMON_SKARMORY = 227;
    V0228_POKEMON_HOUNDOUR = 228;
    V0229_POKEMON_HOUNDOOM = 229;
    V0230_POKEMON_KINGDRA = 230;
    V0231_POKEMON_PHANPY = 231;
    V0232_POKEMON_DONPHAN = 232;
    V0233_POKEMON_PORYGON2 = 233;
    V0234_POKEMON_STANTLER = 234;
    V0235_POKEMON_SMEARGLE = 235;
    V0236_POKEMON_TYROGUE = 236;
    V0237_POKEMON_HITMONTOP = 237;
    V0238_POKEMON_SMOOCHUM = 238;
    V0239_POKEMON_ELEKID = 239;
    V0240_POKEMON_MAGBY = 240;
    V0241_POKEMON_MILTANK = 241;
    V0242_POKEMON_BLISSEY = 242;
    V0243_POKEMON_RAIKOU = 243;
    V0244_POKEMON_ENTEI = 244;
    V0245_POKEMON_SUICUNE = 245;
    V0246_POKEMON_LARVITAR = 246;
    V0247_POKEMON_PUPITAR = 247;
    V0248_POKEMON_TYRANITAR = 248;
    V0249_POKEMON_LUGIA = 249;
    V0250_POKEMON_HO_OH = 250;
    V0251_POKEMON_CELEBI = 251;
}

enum HoloPokemonFamilyId
{
    FAMILY_UNSET = 0;
    V0001_FAMILY_BULBASAUR = 1;
    V0004_FAMILY_CHARMANDER = 4;
    V0007_FAMILY_SQUIRTLE = 7;
    V0010_FAMILY_CATERPIE = 10;
    V0013_FAMILY_WEEDLE = 13;
    V0016_FAMILY_PIDGEY = 16;
    V0019_FAMILY_RATTATA = 19;
    V0021_FAMILY_SPEAROW = 21;
    V0023_FAMILY_EKANS = 23;
    V0025_FAMILY_PIKACHU = 25;
    V0027_FAMILY_SANDSHREW = 27;
    V0029_FAMILY_NIDORAN = 29;
    V0032_FAMILY_NIDORAN = 32;
    V0035_FAMILY_CLEFAIRY = 35;
    V0037_FAMILY_VULPIX = 37;
    V0039_FAMILY_JIGGLYPUFF = 39;
    V0041_FAMILY_ZUBAT = 41;
    V0043_FAMILY_ODDISH = 43;
    V0046_FAMILY_PARAS = 46;
    V0048_FAMILY_VENONAT = 48;
    V0050_FAMILY_DIGLETT = 50;
    V0052_FAMILY_MEOWTH = 52;
    V0054_FAMILY_PSYDUCK = 54;
    V0056_FAMILY_MANKEY = 56;
    V0058_FAMILY_GROWLITHE = 58;
    V0060_FAMILY_POLIWAG = 60;
    V0063_FAMILY_ABRA = 63;
    V0066_FAMILY_MACHOP = 66;
    V0069_FAMILY_BELLSPROUT = 69;
    V0072_FAMILY_TENTACOOL = 72;
    V0074_FAMILY_GEODUDE = 74;
    V0077_FAMILY_PONYTA = 77;
    V0079_FAMILY_SLOWPOKE = 79;
    V0081_FAMILY_MAGNEMITE = 81;
    V0083_FAMILY_FARFETCHD = 83;
    V0084_FAMILY_DODUO = 84;
    V0086_FAMILY_SEEL = 86;
    V0088_FAMILY_GRIMER = 88;
    V0090_FAMILY_SHELLDER = 90;
    V0092_FAMILY_GASTLY = 92;
    V0095_FAMILY_ONIX = 95;
    V0096_FAMILY_DROWZEE = 96;
    V0098_FAMILY_KRABBY = 98;
    V0100_FAMILY_VOLTORB = 100;
    V0102_FAMILY_EXEGGCUTE = 102;
    V0104_FAMILY_CUBONE = 104;
    V0106_FAMILY_HITMONLEE = 106;
    V0107_FAMILY_HITMONCHAN = 107;
    V0108_FAMILY_LICKITUNG = 108;
    V0109_FAMILY_KOFFING = 109;
    V0111_FAMILY_RHYHORN = 111;
    V0113_FAMILY_CHANSEY = 113;
    V0114_FAMILY_TANGELA = 114;
    V0115_FAMILY_KANGASKHAN = 115;
    V0116_FAMILY_HORSEA = 116;
    V0118_FAMILY_GOLDEEN = 118;
    V0120_FAMILY_STARYU = 120;
    V0122_FAMILY_MR_MIME = 122;
    V0123_FAMILY_SCYTHER = 123;
    V0124_FAMILY_JYNX = 124;
    V0125_FAMILY_ELECTABUZZ = 125;
    V0126_FAMILY_MAGMAR = 126;
    V0127_FAMILY_PINSIR = 127;
    V0128_FAMILY_TAUROS = 128;
    V0129_FAMILY_MAGIKARP = 129;
    V0131_FAMILY_LAPRAS = 131;
    V0132_FAMILY_DITTO = 132;
    V0133_FAMILY_EEVEE = 133;
    V0137_FAMILY_PORYGON = 137;
    V0138_FAMILY_OMANYTE = 138;
    V0140_FAMILY_KABUTO = 140;
    V0142_FAMILY_AERODACTYL = 142;
    V0143_FAMILY_SNORLAX = 143;
    V0144_FAMILY_ARTICUNO = 144;
    V0145_FAMILY_ZAPDOS = 145;
    V0146_FAMILY_MOLTRES = 146;
    V0147_FAMILY_DRATINI = 147;
    V0150_FAMILY_MEWTWO = 150;
    V0151_FAMILY_MEW = 151;
    V0152_FAMILY_CHIKORITA = 152;
    V0155_FAMILY_CYNDAQUIL = 155;
    V0158_FAMILY_TOTODILE = 158;
    V0161_FAMILY_SENTRET = 161;
    V0163_FAMILY_HOOTHOOT = 163;
    V0165_FAMILY_LEDYBA = 165;
    V0167_FAMILY_SPINARAK = 167;
    V0170_FAMILY_CHINCHOU = 170;
    V0175_FAMILY_TOGEPI = 175;
    V0177_FAMILY_NATU = 177;
    V0179_FAMILY_MAREEP = 179;
    V0183_FAMILY_MARILL = 183;
    V0185_FAMILY_SUDOWOODO = 185;
    V0187_FAMILY_HOPPIP = 187;
    V0190_FAMILY_AIPOM = 190;
    V0191_FAMILY_SUNKERN = 191;
    V0193_FAMILY_YANMA = 193;
    V0194_FAMILY_WOOPER = 194;
    V0198_FAMILY_MURKROW = 198;
    V0200_FAMILY_MISDREAVUS = 200;
    V0201_FAMILY_UNOWN = 201;
    V0202_FAMILY_WOBBUFFET = 202;
    V0203_FAMILY_GIRAFARIG = 203;
    V0204_FAMILY_PINECO = 204;
    V0206_FAMILY_DUNSPARCE = 206;
    V0207_FAMILY_GLIGAR = 207;
    V0209_FAMILY_SNUBBULL = 209;
    V0211_FAMILY_QWILFISH = 211;
    V0213_FAMILY_SHUCKLE = 213;
    V0214_FAMILY_HERACROSS = 214;
    V0215_FAMILY_SNEASEL = 215;
    V0216_FAMILY_TEDDIURSA = 216;
    V0218_FAMILY_SLUGMA = 218;
    V0220_FAMILY_SWINUB = 220;
    V0222_FAMILY_CORSOLA = 222;
    V0223_FAMILY_REMORAID = 223;
    V0225_FAMILY_DELIBIRD = 225;
    V0226_FAMILY_MANTINE = 226;
    V0227_FAMILY_SKARMORY = 227;
    V0228_FAMILY_HOUNDOUR = 228;
    V0231_FAMILY_PHANPY = 231;
    V0234_FAMILY_STANTLER = 234;
    V0235_FAMILY_SMEARGLE = 235;
    V0236_FAMILY_TYROGUE = 236;
    V0241_FAMILY_MILTANK = 241;
    V0243_FAMILY_RAIKOU = 243;
    V0244_FAMILY_ENTEI = 244;
    V0245_FAMILY_SUICUNE = 245;
    V0246_FAMILY_LARVITAR = 246;
    V0249_FAMILY_LUGIA = 249;
    V0250_FAMILY_HO_OH = 250;
    V0251_FAMILY_CELEBI = 251;
}

enum EncounterType
{
    SPAWN_POINT = 0;
    INCENSE = 1;
    DISK = 2;
}

enum Method
{
    METHOD_UNSET = 0;
    GET_PLAYER = 2;
    GET_INVENTORY = 4;
    DOWNLOAD_SETTINGS = 5;
    DOWNLOAD_ITEM_TEMPLATES = 6;
    DOWNLOAD_REMOTE_CONFIG_VERSION = 7;
    REGISTER_BACKGROUND_DEVICE = 8;
    FORT_SEARCH = 101;
    ENCOUNTER = 102;
    CATCH_POKEMON = 103;
    FORT_DETAILS = 104;
    GET_MAP_OBJECTS = 106;
    FORT_DEPLOY_POKEMON = 110;
    FORT_RECALL_POKEMON = 111;
    RELEASE_POKEMON = 112;
    USE_ITEM_POTION = 113;
    USE_ITEM_CAPTURE = 114;
    USE_ITEM_FLEE = 115;
    USE_ITEM_REVIVE = 116;
    GET_PLAYER_PROFILE = 121;
    EVOLVE_POKEMON = 125;
    GET_HATCHED_EGGS = 126;
    ENCOUNTER_TUTORIAL_COMPLETE = 127;
    LEVEL_UP_REWARDS = 128;
    CHECK_AWARDED_BADGES = 129;
    USE_ITEM_GYM = 133;
    GET_GYM_DETAILS = 134;
    START_GYM_BATTLE = 135;
    ATTACK_GYM = 136;
    RECYCLE_INVENTORY_ITEM = 137;
    COLLECT_DAILY_BONUS = 138;
    USE_ITEM_XP_BOOST = 139;
    USE_ITEM_EGG_INCUBATOR = 140;
    USE_INCENSE = 141;
    GET_INCENSE_POKEMON = 142;
    INCENSE_ENCOUNTER = 143;
    ADD_FORT_MODIFIER = 144;
    DISK_ENCOUNTER = 145;
    COLLECT_DAILY_DEFENDER_BONUS = 146;
    UPGRADE_POKEMON = 147;
    SET_FAVORITE_POKEMON = 148;
    NICKNAME_POKEMON = 149;
    EQUIP_BADGE = 150;
    SET_CONTACT_SETTINGS = 151;
    SET_BUDDY_POKEMON = 152;
    GET_BUDDY_WALKED = 153;
    USE_ITEM_ENCOUNTER = 154;
    GET_ASSET_DIGEST = 300;
    GET_DOWNLOAD_URLS = 301;
    CLAIM_CODENAME = 403;
    SET_AVATAR = 404;
    SET_PLAYER_TEAM = 405;
    MARK_TUTORIAL_COMPLETE = 406;
    CHECK_CHALLENGE = 600;
    VERIFY_CHALLENGE = 601;
    ECHO = 666;
    SFIDA_REGISTRATION = 800;
    SFIDA_ACTION_LOG = 801;
    SFIDA_CERTIFICATION = 802;
    SFIDA_UPDATE = 803;
    SFIDA_ACTION = 804;
    SFIDA_DOWSER = 805;
    SFIDA_CAPTURE = 806;
    LIST_AVATAR_CUSTOMIZATIONS = 807;
    SET_AVATAR_ITEM_AS_VIEWED = 808;
}

enum Platform
{
    PLATFORM_UNSET = 0;
    PLATFORM_IOS = 1;
    PLATFORM_ANDROID = 2;
    PLATFORM_OSX = 3;
    PLATFORM_WINDOWS = 4;
    PLATFORM_APPLE_WATCH = 5;
}

enum TutorialCompletion
{
    LEGAL_SCREEN = 0;
    AVATAR_SELECTION = 1;
    ACCOUNT_CREATION = 2;
    POKEMON_CAPTURE = 3;
    NAME_SELECTION = 4;
    POKEMON_BERRY = 5;
    USE_ITEM = 6;
    FIRST_TIME_EXPERIENCE_COMPLETE = 7;
    POKESTOP_TUTORIAL = 8;
    GYM_TUTORIAL = 9;
}

message ListAvatarCustomizationsProto
{
    PlayerAvatarType avatar_type = 1;
    repeated Slot slot = 2;
    repeated Filter filters = 3;
    int32 start = 4;
    int32 limit = 5;

    enum Slot
    {
        UNSET_SLOT = 0;
        HAIR = 1;
        SHIRT = 2;
        PANTS = 3;
        HAT = 4;
        SHOES = 5;
        EYES = 6;
        BACKPACK = 7;
        GLOVES = 8;
        SOCKS = 9;
        BELT = 10;
        GLASSES = 11;
        NECKLACE = 12;
    }

    enum Filter
    {
        UNSET = 0;
        ALL = 1;
        DEFAULT = 2;
        OWNED = 3;
        FEATURED = 4;
        PURCHASABLE = 5;
        UNLOCKABLE = 6;
    }
}

message ListAvatarCustomizationsOutProto
{
    Result result = 1;
    repeated AvatarCustomization avatar_customizations = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    message AvatarCustomization
    {
        string avatar_template_id = 1;
        repeated Label labels = 2;

        enum Label
        {
            UNSET_LABEL = 0;
            DEFAULT = 1;
            OWNED = 2;
            FEATURED = 3;
            NEW = 4;
            SALE = 5;
            PURCHASABLE = 6;
            UNLOCKABLE = 7;
            VIEWED = 8;
            LOCKED_PURCHASABLE = 9;
        }
    }
}

message SetAvatarItemAsViewedProto
{
    repeated string avatar_template_id = 1;
}

message SetAvatarItemAsViewedOutProto
{
    Result result = 1;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }
}

message BackgroundToken
{
    bytes token = 1;
    int64 expiration_time = 2;
    bytes iv = 3;
}

message RegisterBackgroundDeviceActionProto
{
    string device_type = 1;
    string device_id = 2;
}

message RegisterBackgroundDeviceResponseProto
{
    Status status = 1;
    BackgroundToken token = 2;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
    }
}

message AssetDigestRequestProto
{
    Platform platform = 1;
    string device_manufacturer = 2;
    string device_model = 3;
    string locale = 4;
    uint32 app_version = 5;
}

message AssetDigestEntryProto
{
    string asset_id = 1;
    string bundle_name = 2;
    int64 version = 3;
    fixed32 checksum = 4;
    int32 size = 5;
    bytes key = 6;
}

message AssetDigestOutProto
{
    repeated AssetDigestEntryProto digest = 1;
    uint64 timestamp = 2;
}

message DownloadUrlRequestProto
{
    repeated string asset_id = 1;
}

message DownloadUrlEntryProto
{
    string asset_id = 1;
    string url = 2;
    int32 size = 3;
    fixed32 checksum = 4;
}

message DownloadUrlOutProto
{
    repeated DownloadUrlEntryProto download_urls = 1;
}

message CollectDailyBonusProto
{
}

message CollectDailyBonusOutProto
{
    Result result = 1;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        TOO_SOON = 3;
    }
}

message CollectDailyDefenderBonusProto
{
}

message CollectDailyDefenderBonusOutProto
{
    Result result = 1;
    repeated string currency_type = 2;
    repeated int32 currency_awarded = 3;
    int32 num_defenders = 4;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        TOO_SOON = 3;
        NO_DEFENDERS = 4;
    }
}

message EchoProto
{
}

message EchoOutProto
{
    string context = 1;
}

message GetHatchedEggsProto
{
}

message GetHatchedEggsOutProto
{
    bool success = 1;
    repeated fixed64 pokemon_id = 2;
    repeated int32 exp_awarded = 3;
    repeated int32 candy_awarded = 4;
    repeated int32 stardust_awarded = 5;
    repeated float egg_km_walked = 6;
    repeated PokemonProto hatched_pokemon = 7;
}

message EncounterProto
{
    fixed64 encounter_id = 1;
    string spawnpoint_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message EncounterOutProto
{
    WildPokemonProto pokemon = 1;
    Background background = 2;
    Status status = 3;
    CaptureProbabilityProto capture_probability = 4;
    Item active_item = 5;

    enum Background
    {
        PARK = 0;
        DESERT = 1;
    }

    enum Status
    {
        ENCOUNTER_ERROR = 0;
        ENCOUNTER_SUCCESS = 1;
        ENCOUNTER_NOT_FOUND = 2;
        ENCOUNTER_CLOSED = 3;
        ENCOUNTER_POKEMON_FLED = 4;
        ENCOUNTER_NOT_IN_RANGE = 5;
        ENCOUNTER_ALREADY_HAPPENED = 6;
        POKEMON_INVENTORY_FULL = 7;
    }
}

message CatchPokemonProto
{
    fixed64 encounter_id = 1;
    int32 pokeball = 2;
    double normalized_reticle_size = 3;
    string spawn_point_guid = 4;
    bool hit_pokemon = 5;
    double spin_modifier = 6;
    double normalized_hit_position = 7;
}

message CatchPokemonOutProto
{
    Status status = 1;
    double miss_percent = 2;
    fixed64 captured_pokemon_id = 3;
    CaptureScoreProto scores = 4;
    CaptureReason capture_reason = 5;
    int32 display_pokedex_id = 6;

    enum Status
    {
        CATCH_ERROR = 0;
        CATCH_SUCCESS = 1;
        CATCH_ESCAPE = 2;
        CATCH_FLEE = 3;
        CATCH_MISSED = 4;
    }

    enum CaptureReason
    {
        UNSET = 0;
        DEFAULT = 1;
        ELEMENTAL_BADGE = 2;
        CRITICAL_CATCH = 3;
    }
}

message UseItemCaptureProto
{
    Item item = 1;
    fixed64 encounter_id = 2;
    string spawn_point_guid = 3;
}

message UseItemCaptureOutProto
{
    bool success = 1;
    double item_capture_mult = 2;
    double item_flee_mult = 3;
    bool stop_movement = 4;
    bool stop_attack = 5;
    bool target_max = 6;
    bool target_slow = 7;
}

message EncounterTutorialCompleteProto
{
    int32 pokedex_id = 1;
}

message EncounterTutorialCompleteOutProto
{
    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureScoreProto scores = 3;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_POKEMON = 2;
    }
}

message CaptureProbabilityProto
{
    repeated Item pokeball_type = 1;
    repeated float capture_probability = 2;
    double reticle_difficulty_scale = 12;
}

message CaptureScoreProto
{
    repeated HoloActivityType activity_type = 1;
    repeated int32 exp = 2;
    repeated int32 candy = 3;
    repeated int32 stardust = 4;
}

message UseIncenseActionProto
{
    Item incense_type = 1;
}

message UseIncenseActionOutProto
{
    Result result = 1;
    AppliedItemProto applied_incense = 2;

    enum Result
    {
        UNKNOWN = 0;
        SUCCESS = 1;
        INCENSE_ALREADY_ACTIVE = 2;
        NONE_IN_INVENTORY = 3;
        LOCATION_UNSET = 4;
    }
}

message GetIncensePokemonProto
{
    double player_lat_degrees = 1;
    double player_lng_degrees = 2;
}

message GetIncensePokemonOutProto
{
    Result result = 1;
    int32 pokemon_type_id = 2;
    double lat = 3;
    double lng = 4;
    string encounter_location = 5;
    fixed64 encounter_id = 6;
    int64 disappear_time_ms = 7;
    PokemonDisplayProto pokemon_display = 8;

    enum Result
    {
        INCENSE_ENCOUNTER_UNKNOWN = 0;
        INCENSE_ENCOUNTER_AVAILABLE = 1;
        INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
    }
}

message IncenseEncounterProto
{
    int64 encounter_id = 1;
    string encounter_location = 2;
}

message IncenseEncounterOutProto
{
    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;

    enum Result
    {
        INCENSE_ENCOUNTER_UNKNOWN = 0;
        INCENSE_ENCOUNTER_SUCCESS = 1;
        INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
        POKEMON_INVENTORY_FULL = 3;
    }
}

message DiskEncounterProto
{
    int64 encounter_id = 1;
    string fort_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message DiskEncounterOutProto
{
    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;

    enum Result
    {
        UNKNOWN = 0;
        SUCCESS = 1;
        NOT_AVAILABLE = 2;
        NOT_IN_RANGE = 3;
        ENCOUNTER_ALREADY_FINISHED = 4;
        POKEMON_INVENTORY_FULL = 5;
    }
}

message UseItemEncounterProto
{
    Item item = 1;
    fixed64 encounter_id = 2;
    string spawn_point_guid = 3;
}

message UseItemEncounterOutProto
{
    Status status = 1;
    CaptureProbabilityProto capture_probability = 2;
    Item active_item = 3;

    enum Status
    {
        SUCCESS = 0;
        ALREADY_COMPLETED = 1;
        ACTIVE_ITEM_EXISTS = 2;
        NO_ITEM_IN_INVENTORY = 3;
        INVALID_ITEM_CATEGORY = 4;
    }
}

message EvolvePokemonProto
{
    fixed64 pokemon_id = 1;
    Item evolution_item_requirement = 2;
}

message EvolvePokemonOutProto
{
    Result result = 1;
    PokemonProto evolved_pokemon = 2;
    int32 exp_awarded = 3;
    int32 candy_awarded = 4;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILED_POKEMON_MISSING = 2;
        FAILED_INSUFFICIENT_RESOURCES = 3;
        FAILED_POKEMON_CANNOT_EVOLVE = 4;
        FAILED_POKEMON_IS_DEPLOYED = 5;
        FAILED_INVALID_ITEM_REQUIREMENT = 6;
    }
}

message AwardItemProto
{
    Item item = 1;
    int32 item_count = 2;
    int32 bonus_count = 3;
}

message FortSearchProto
{
    string id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
    double fort_lat_degrees = 4;
    double fort_lng_degrees = 5;
}

message FortSearchOutProto
{
    Result result = 1;
    repeated AwardItemProto items = 2;
    int32 gems_awarded = 3;
    PokemonProto egg_pokemon = 4;
    int32 xp_awarded = 5;
    int64 cooldown_complete = 6;
    int32 chain_hack_sequence_number = 7;

    enum Result
    {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        OUT_OF_RANGE = 2;
        IN_COOLDOWN_PERIOD = 3;
        INVENTORY_FULL = 4;
        EXCEEDED_DAILY_LIMIT = 5;
        POI_INACCESSIBLE = 6;
    }
}

message FortDetailsProto
{
    string id = 1;
    double latitude = 2;
    double longitude = 3;
}

message FortDetailsOutProto
{
    string id = 1;
    int32 team = 2;
    repeated PokemonProto pokemon = 3;
    string name = 4;
    repeated string image_url = 5;
    int32 fp = 6;
    int32 stamina = 7;
    int32 max_stamina = 8;
    FortType fort_type = 9;
    double latitude = 10;
    double longitude = 11;
    string description = 12;
    repeated ClientFortModifierProto modifier = 13;
}

message ClientFortModifierProto
{
    Item modifier_type = 1;
    int64 expiration_time_ms = 2;
    string deploying_player_codename = 3;
}

message FortDeployProto
{
    string fort_id = 1;
    fixed64 pokemon_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message FortDeployOutProto
{
    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;
    PokemonProto egg_pokemon = 3;
    GymStateProto gym_state_proto = 4;

    enum Result
    {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_ALREADY_HAS_POKEMON_ON_FORT = 2;
        ERROR_OPPOSING_TEAM_OWNS_FORT = 3;
        ERROR_FORT_IS_FULL = 4;
        ERROR_NOT_IN_RANGE = 5;
        ERROR_PLAYER_HAS_NO_TEAM = 6;
        ERROR_POKEMON_NOT_FULL_HP = 7;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 8;
        ERROR_POKEMON_IS_BUDDY = 9;
        ERROR_FORT_DEPLOY_LOCKOUT = 10;
        ERROR_PLAYER_HAS_NO_NICKNAME = 11;
        ERROR_POI_INACCESSIBLE = 12;
    }
}

message FortRecallProto
{
    string fort_id = 1;
    fixed64 pokemon_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message FortRecallOutProto
{
    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;

    enum Result
    {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_POKEMON_NOT_ON_FORT = 3;
        ERROR_NO_PLAYER = 4;
    }
}

message AddFortModifierProto
{
    Item modifier_type = 1;
    string fort_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message AddFortModifierOutProto
{
    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;

    enum Result
    {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        FORT_ALREADY_HAS_MODIFIER = 2;
        TOO_FAR_AWAY = 3;
        NO_ITEM_IN_INVENTORY = 4;
        POI_INACCESSIBLE = 5;
    }
}

message PokemonCameraAttributesProto
{
    float disk_radius_m = 1;
    float cyl_radius_m = 2;
    float cyl_height_m = 3;
    float cyl_ground_m = 4;
    float shoulder_mode_scale = 5;
}

message PokemonEncounterAttributesProto
{
    float base_capture_rate = 1;
    float base_flee_rate = 2;
    float collision_radius_m = 3;
    float collision_height_m = 4;
    float collision_head_radius_m = 5;
    HoloPokemonMovementType movement_type = 6;
    float movement_timer_s = 7;
    float jump_time_s = 8;
    float attack_timer_s = 9;
    int32 bonus_candy_capture_reward = 10;
    int32 bonus_stardust_capture_reward = 11;
    float attack_probability = 12;
    float dodge_probability = 13;
    float dodge_duration_s = 14;
    float dodge_distance = 15;
    float camera_distance = 16;
    float min_pokemon_action_frequency_s = 17;
    float max_pokemon_action_frequency_s = 18;
}

message PokemonStatsAttributesProto
{
    int32 base_stamina = 1;
    int32 base_attack = 2;
    int32 base_defense = 3;
    int32 dodge_energy_delta = 8;
}

message PokemonSettingsProto
{
    HoloPokemonId unique_id = 1;
    float model_scale = 3;
    HoloPokemonType type1 = 4;
    HoloPokemonType type2 = 5;
    PokemonCameraAttributesProto camera = 6;
    PokemonEncounterAttributesProto encounter = 7;
    PokemonStatsAttributesProto stats = 8;
    repeated HoloPokemonMove quick_moves = 9;
    repeated HoloPokemonMove cinematic_moves = 10;
    repeated float anim_time = 11;
    repeated HoloPokemonId evolution = 12;
    int32 evolution_pips = 13;
    HoloPokemonClass pokemon_class = 14;
    float pokedex_height_m = 15;
    float pokedex_weight_kg = 16;
    HoloPokemonId parent_id = 17;
    float height_std_dev = 18;
    float weight_std_dev = 19;
    float km_distance_to_hatch = 20;
    HoloPokemonFamilyId family_id = 21;
    int32 candy_to_evolve = 22;
    float km_buddy_distance = 23;
    BuddySize buddy_size = 24;
    float model_height = 25;
    repeated EvolutionBranchProto evolution_branch = 26;

    enum BuddySize
    {
        BUDDY_MEDIUM = 0;
        BUDDY_SHOULDER = 1;
        BUDDY_BIG = 2;
        BUDDY_FLYING = 3;
        BUDDY_BABY = 4;
    }
}

message EvolutionBranchProto
{
    HoloPokemonId evolution = 1;
    Item evolution_item_requirement = 2;
    int32 candy_cost = 3;
}

message PokeBallAttributesProto
{
    HoloItemEffect item_effect = 1;
    float capture_multi = 2;
    float capture_multi_effect = 3;
    float item_effect_mod = 4;
}

message PotionAttributesProto
{
    float sta_percent = 1;
    int32 sta_amount = 2;
}

message ReviveAttributesProto
{
    float sta_percent = 1;
}

message BattleAttributesProto
{
    float sta_percent = 1;
    float atk_percent = 2;
    float def_percent = 3;
    float duration_s = 4;
}

message FoodAttributesProto
{
    repeated HoloItemEffect item_effect = 1;
    repeated float item_effect_percent = 2;
    float growth_percent = 3;
}

message InventoryUpgradeAttributesProto
{
    int32 additional_storage = 1;
    InventoryUpgradeType upgrade_type = 2;
}

message ExperienceBoostAttributesProto
{
    float xp_multiplier = 1;
    int32 boost_duration_ms = 2;
}

message EggIncubatorAttributesProto
{
    EggIncubatorType incubator_type = 1;
    int32 uses = 2;
    float distance_multiplier = 3;
}

message IncenseAttributesProto
{
    int32 incense_lifetime_seconds = 1;
    repeated HoloPokemonType pokemon_type = 2;
    float pokemon_incense_type_probability = 3;
    int32 standing_time_between_encounters_sec = 4;
    int32 moving_time_between_encounter_sec = 5;
    int32 distance_required_for_shorter_interval_meters = 6;
    int32 pokemon_attracted_length_sec = 7;
}

message FortModifierAttributesProto
{
    int32 modifier_lifetime_seconds = 1;
    int32 troy_disk_num_pokemon_spawned = 2;
}

message ItemSettingsProto
{
    Item unique_id = 1;
    HoloItemType item_type = 2;
    HoloItemCategory category = 3;
    float drop_freq = 4;
    int32 drop_trainer_level = 5;
    PokeBallAttributesProto pokeball = 6;
    PotionAttributesProto potion = 7;
    ReviveAttributesProto revive = 8;
    BattleAttributesProto battle = 9;
    FoodAttributesProto food = 10;
    InventoryUpgradeAttributesProto inventory_upgrade = 11;
    ExperienceBoostAttributesProto xp_boost = 12;
    IncenseAttributesProto incense = 13;
    EggIncubatorAttributesProto egg_incubator = 14;
    FortModifierAttributesProto fort_modifier = 15;
}

message IapItemDisplayProto
{
    string sku = 1;
    HoloIapItemCategory category = 2;
    int32 sort_order = 3;
    repeated Item items = 4;
    repeated int32 counts = 5;
}

message MoveSettingsProto
{
    HoloPokemonMove unique_id = 1;
    int32 animation_id = 2;
    HoloPokemonType type = 3;
    float power = 4;
    float accuracy_chance = 5;
    float critical_chance = 6;
    float heal_scalar = 7;
    float stamina_loss_scalar = 8;
    int32 trainer_level_min = 9;
    int32 trainer_level_max = 10;
    string vfx_name = 11;
    int32 duration_ms = 12;
    int32 damage_window_start_ms = 13;
    int32 damage_window_end_ms = 14;
    int32 energy_delta = 15;
}

message MoveSequenceSettingsProto
{
    repeated string sequence = 1;
}

message TypeEffectiveSettingsProto
{
    HoloPokemonType attack_type = 2;
    repeated float attack_scalar = 1;
}

message BadgeSettingsProto
{
    HoloBadgeType badge_type = 1;
    int32 badge_ranks = 2;
    repeated int32 targets = 3;
    repeated BadgeCaptureReward capture_reward = 4;
}

message BadgeCaptureReward
{
    float capture_reward_multiplier = 1;
    repeated string avatar_template_ids = 2;
}

message CameraSettingsProto
{
    string next_camera = 1;
    repeated CameraInterpolation interpolation = 2;
    repeated CameraTarget target_type = 3;
    repeated float ease_in_speed = 4;
    repeated float ease_out_speed = 5;
    repeated float duration_s = 6;
    repeated float wait_s = 7;
    repeated float transition_s = 8;
    repeated float angle_deg = 9;
    repeated float angle_offset_deg = 10;
    repeated float pitch_deg = 11;
    repeated float pitch_offset_deg = 12;
    repeated float roll_deg = 13;
    repeated float distance_m = 14;
    repeated float height_percent = 15;
    repeated float vert_ctr_ratio = 16;
}

message PlayerLevelSettingsProto
{
    repeated int32 rank_num = 1;
    repeated int32 required_exp = 2;
    repeated float cp_multiplier = 3;
    int32 max_egg_player_level = 4;
    int32 max_encounter_player_level = 5;
}

message GymLevelSettingsProto
{
    repeated int32 required_exp = 1;
    repeated int32 leader_slots = 2;
    repeated int32 trainer_slots = 3;
    repeated int32 search_roll_bonus = 4;
}

message GymBattleSettingsProto
{
    float energy_per_sec = 1;
    float dodge_energy_cost = 2;
    float retarget_seconds = 3;
    float enemy_attack_interval = 4;
    float attack_server_interval = 5;
    float round_duration_seconds = 6;
    float bonus_time_per_ally_seconds = 7;
    int32 maximum_attackers_per_battle = 8;
    float same_type_attack_bonus_multiplier = 9;
    int32 maximum_energy = 10;
    float energy_delta_per_health_lost = 11;
    int32 dodge_duration_ms = 12;
    int32 minimum_player_level = 13;
    int32 swap_duration_ms = 14;
    float dodge_damage_reduction_percent = 15;
}

message EncounterSettingsProto
{
    float spin_bonus_threshold = 1;
    float excellent_throw_threshold = 2;
    float great_throw_threshold = 3;
    float nice_throw_threshold = 4;
    int32 milestone_threshold = 5;
}

message IapSettingsProto
{
    int32 daily_bonus_coins = 1;
    repeated int32 daily_defender_bonus_per_pokemon = 2;
    int32 daily_defender_bonus_max_defenders = 3;
    repeated string daily_defender_bonus_currency = 4;
    int64 min_time_between_claims_ms = 5;
    bool daily_bonus_enabled = 6;
    bool daily_defender_bonus_enabled = 7;
}

message PokemonUpgradeSettingsProto
{
    int32 upgrades_per_level = 1;
    int32 allowed_levels_above_player = 2;
    repeated int32 candy_cost = 3;
    repeated int32 stardust_cost = 4;
}

message EquippedBadgeSettingsProto
{
    int64 equip_badge_cooldown_ms = 1;
    repeated float catch_probability_bonus = 2;
    repeated float flee_probability_bonus = 3;
}

message DailyQuestSettings
{
    int32 buckets_per_day = 1;
    int32 streak_length = 2;
    float bonus_multiplier = 3;
    float streak_bonus_multiplier = 4;
}

message QuestSettingsProto
{
    QuestType quest_type = 1;
    DailyQuestSettings daily_quest = 2;
}

message AvatarCustomizationProto
{
    bool enabled = 1;
    PlayerAvatarType avatar_type = 2;
    repeated Slot slot = 3;
    string bundle_name = 4;
    string asset_name = 5;
    string group_name = 6;
    int32 sort_order = 7;
    AvatarCustomizationUnlockType unlock_type = 8;
    repeated AvatarCustomizationPromoType promo_type = 9;
    HoloBadgeType unlock_badge_type = 10;
    string iap_sku = 11;
    int32 unlock_badge_level = 12;
    string icon_name = 13;
    int32 unlock_player_level = 14;

    enum AvatarCustomizationPromoType
    {
        UNSET_PROMO_TYPE = 0;
        SALE = 1;
        FEATURED = 2;
    }

    enum AvatarCustomizationUnlockType
    {
        UNSET_UNLOCK_TYPE = 0;
        DEFAULT = 1;
        MEDAL_REWARD = 2;
        IAP_CLOTHING = 3;
        LEVEL_REWARD = 4;
    }
}

message FormSettingsProto
{
    HoloPokemonId pokemon = 1;
    repeated FormProto forms = 2;
}

message FormProto
{
    Form form = 1;
    int32 asset_bundle_value = 2;

    enum Form
    {
        FORM_UNSET = 0;
        UNOWN_A = 1;
        UNOWN_B = 2;
        UNOWN_C = 3;
        UNOWN_D = 4;
        UNOWN_E = 5;
        UNOWN_F = 6;
        UNOWN_G = 7;
        UNOWN_H = 8;
        UNOWN_I = 9;
        UNOWN_J = 10;
        UNOWN_K = 11;
        UNOWN_L = 12;
        UNOWN_M = 13;
        UNOWN_N = 14;
        UNOWN_O = 15;
        UNOWN_P = 16;
        UNOWN_Q = 17;
        UNOWN_R = 18;
        UNOWN_S = 19;
        UNOWN_T = 20;
        UNOWN_U = 21;
        UNOWN_V = 22;
        UNOWN_W = 23;
        UNOWN_X = 24;
        UNOWN_Y = 25;
        UNOWN_Z = 26;
        UNOWN_EXCLAMATION_POINT = 27;
        UNOWN_QUESTION_MARK = 28;
    }
}

message ClientGenderProto
{
    float male_percent = 1;
    float female_percent = 2;
    float genderless_percent = 3;
}

message ClientGenderSettingsProto
{
    HoloPokemonId pokemon = 1;
    ClientGenderProto gender = 2;
}

message GameMasterClientTemplateProto
{
    string template_id = 1;
    PokemonSettingsProto pokemon = 2;
    ItemSettingsProto item = 3;
    MoveSettingsProto move = 4;
    MoveSequenceSettingsProto move_sequence = 5;
    TypeEffectiveSettingsProto type_effective = 8;
    BadgeSettingsProto badge = 10;
    CameraSettingsProto camera = 11;
    PlayerLevelSettingsProto player_level = 12;
    GymLevelSettingsProto gym_level = 13;
    GymBattleSettingsProto battle_settings = 14;
    EncounterSettingsProto encounter_settings = 15;
    IapItemDisplayProto iap_item_display = 16;
    IapSettingsProto iap_settings = 17;
    PokemonUpgradeSettingsProto pokemon_upgrades = 18;
    EquippedBadgeSettingsProto equipped_badges = 19;
    QuestSettingsProto quest_settings = 20;
    AvatarCustomizationProto avatar_customization = 21;
    FormSettingsProto form_settings = 22;
    ClientGenderSettingsProto gender_settings = 23;
}

message GetGameMasterClientTemplatesProto
{
    bool paginate = 1;
    int32 page_offset = 2;
    uint64 page_timestamp = 3;
}

message GetGameMasterClientTemplatesOutProto
{
    Result result = 1;
    repeated GameMasterClientTemplateProto items = 2;
    uint64 timestamp = 3;
    int32 page_offset = 4;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        PAGE = 2;
        RETRY = 3;
    }
}

message GetRemoteConfigVersionsProto
{
    Platform platform = 1;
    string device_manufacturer = 2;
    string device_model = 3;
    string locale = 4;
    uint32 app_version = 5;
}

message GetRemoteConfigVersionsOutProto
{
    Result result = 1;
    uint64 game_master_timestamp = 2;
    uint64 asset_digest_timestamp = 3;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
    }
}

message ClientMapCellProto
{
    uint64 s2_cell_id = 1;
    int64 as_of_time_ms = 2;
    repeated PokemonFortProto fort = 3;
    repeated ClientSpawnPointProto spawn_point = 4;
    repeated WildPokemonProto wild_pokemon = 5;
    repeated string deleted_object = 6;
    bool is_truncated_list = 7;
    repeated PokemonSummaryFortProto fort_summary = 8;
    repeated ClientSpawnPointProto decimated_spawn_point = 9;
    repeated MapPokemonProto catchable_pokemon = 10;
    repeated NearbyPokemonProto nearby_pokemon = 11;
}

message GetMapObjectsProto
{
    repeated uint64 cell_id = 1;
    repeated int64 since_time_ms = 2;
    double player_lat = 3;
    double player_lng = 4;
}

message GetMapObjectsOutProto
{
    repeated ClientMapCellProto map_cell = 1;
    Status status = 2;
    TimeOfDay time_of_day = 3;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        LOCATION_UNSET = 2;
    }

    enum TimeOfDay
    {
        NONE = 0;
        DAY = 1;
        NIGHT = 2;
    }
}

message NearbyPokemonProto
{
    int32 pokedex_number = 1;
    float distance_meters = 2;
    fixed64 encounter_id = 3;
    string fort_id = 4;
    string fort_image_url = 5;
    PokemonDisplayProto pokemon_display = 6;
}

message GetGymDetailsProto
{
    string gym_id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
    double gym_lat_degrees = 4;
    double gym_lng_degrees = 5;
    string client_version = 6;
}

message GetGymDetailsOutProto
{
    GymStateProto gym_state = 1;
    string name = 2;
    repeated string url = 3;
    Result result = 4;
    string description = 5;
    repeated string secondary_url = 6;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
    }
}

message GymStateProto
{
    PokemonFortProto fort_map_data = 1;
    repeated GymMembershipProto gym_membership = 2;
    bool deploy_lockout = 3;
}

message StartGymBattleProto
{
    string gym_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
    fixed64 defending_pokemon_id = 3;
    double player_lat_degrees = 4;
    double player_lng_degrees = 5;
}

message StartGymBattleOutProto
{
    Result result = 1;
    int64 battle_start_ms = 2;
    int64 battle_end_ms = 3;
    string battle_id = 4;
    BattleParticipantProto defender = 5;
    BattleLogProto battle_log = 6;
    BattleParticipantProto attacker = 7;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_GYM_NOT_FOUND = 2;
        ERROR_GYM_NEUTRAL = 3;
        ERROR_GYM_WRONG_TEAM = 4;
        ERROR_GYM_EMPTY = 5;
        ERROR_INVALID_DEFENDER = 6;
        ERROR_TRAINING_INVALID_ATTACKER_COUNT = 7;
        ERROR_ALL_POKEMON_FAINTED = 8;
        ERROR_TOO_MANY_BATTLES = 9;
        ERROR_TOO_MANY_PLAYERS = 10;
        ERROR_GYM_BATTLE_LOCKOUT = 11;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 12;
        ERROR_NOT_IN_RANGE = 13;
        ERROR_POI_INACCESSIBLE = 14;
    }
}

message AttackGymProto
{
    string gym_id = 1;
    string battle_id = 2;
    repeated BattleActionProto attacker_actions = 3;
    BattleActionProto last_retrieved_action = 4;
    double player_lat_degrees = 5;
    double player_lng_degrees = 6;
}

message BattleActionProto
{
    ActionType type = 1;
    int64 action_start_ms = 2;
    int32 duration_ms = 3;
    int32 energy_delta = 5;
    int32 attacker_index = 6;
    int32 target_index = 7;
    fixed64 active_pokemon_id = 8;
    BattleParticipantProto joined_player = 9;
    BattleResultsProto battle_results = 10;
    int64 damage_window_start_ms = 11;
    int64 damage_window_end_ms = 12;
    BattleParticipantProto quit_player = 13;
    fixed64 target_pokemon_id = 14;

    enum ActionType
    {
        UNSET = 0;
        ATTACK = 1;
        DODGE = 2;
        SPECIAL_ATTACK = 3;
        SWAP_POKEMON = 4;
        FAINT = 5;
        PLAYER_JOIN = 6;
        PLAYER_QUIT = 7;
        VICTORY = 8;
        DEFEAT = 9;
        TIMED_OUT = 10;
    }
}

message AttackGymOutProto
{
    Result result = 1;
    BattleLogProto battle_log = 2;
    string battle_id = 3;
    PokemonInfo active_defender = 4;
    PokemonInfo active_attacker = 5;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ATTACK_ACTIONS = 2;
        ERROR_NOT_IN_RANGE = 3;
    }
}

message GymMembershipProto
{
    PokemonProto pokemon = 1;
    PlayerPublicProfileProto trainer_public_profile = 2;
    PokemonProto training_pokemon = 3;
}

message BattleParticipantProto
{
    PokemonInfo active_pokemon = 1;
    PlayerPublicProfileProto trainer_public_profile = 2;
    repeated PokemonInfo reserve_pokemon = 3;
    repeated PokemonInfo defeated_pokemon = 4;
}

message PokemonInfo
{
    PokemonProto pokemon = 1;
    int32 current_health = 2;
    int32 current_energy = 3;
}

message BattleResultsProto
{
    GymStateProto gym_state = 1;
    repeated BattleParticipantProto attackers = 2;
    repeated int32 player_xp_awarded = 3;
    int64 next_defender_pokemon_id = 4;
    int32 gym_points_delta = 5;
}

message BattleLogProto
{
    State state = 1;
    BattleType battle_type = 2;
    int64 server_ms = 3;
    repeated BattleActionProto battle_actions = 4;
    int64 battle_start_ms = 5;
    int64 battle_end_ms = 6;

    enum State
    {
        STATE_UNSET = 0;
        ACTIVE = 1;
        VICTORY = 2;
        DEFEATED = 3;
        TIMED_OUT = 4;
    }

    enum BattleType
    {
        BATTLE_TYPE_UNSET = 0;
        NORMAL = 1;
        TRAINING = 2;
    }
}

message HoloInventoryKeyProto
{
    fixed64 pokemon_id = 1;
    Item item = 2;
    int32 pokedex_entry_id = 3;
    bool player_stats = 4;
    bool player_currency = 5;
    bool player_camera = 6;
    bool inventory_upgrades = 7;
    bool applied_items = 8;
    bool egg_incubators = 9;
    int32 pokemon_family_id = 10;
    QuestType quest_type = 11;
    string avatar_template_id = 12;
}

message HoloInventoryItemProto
{
    PokemonProto pokemon = 1;
    ItemProto item = 2;
    PokedexEntryProto pokedex_entry = 3;
    PlayerStatsProto player_stats = 4;
    PlayerCurrencyProto player_currency = 5;
    PlayerCameraProto player_camera = 6;
    InventoryUpgradesProto inventory_upgrades = 7;
    AppliedItemsProto applied_items = 8;
    EggIncubatorsProto egg_incubators = 9;
    PokemonFamilyProto pokemon_family = 10;
    QuestProto quest = 11;
    AvatarItemProto avatar_item = 12;
}

message FortSponsor
{
}

message FortRenderingType
{
}

message PokemonProto
{
    fixed64 id = 1;
    int32 pokemon_id = 2;
    int32 cp = 3;
    int32 stamina = 4;
    int32 max_stamina = 5;
    int32 move1 = 6;
    int32 move2 = 7;
    string deployed_fort_id = 8;
    string owner_name = 9;
    bool is_egg = 10;
    double egg_km_walked_target = 11;
    double egg_km_walked_start = 12;
    PokemonCreateContext origin = 14;
    float height_m = 15;
    float weight_kg = 16;
    int32 individual_attack = 17;
    int32 individual_defense = 18;
    int32 individual_stamina = 19;
    float cp_multiplier = 20;
    Item pokeball = 21;
    int64 captured_s2_cell_id = 22;
    int32 battles_attacked = 23;
    int32 battles_defended = 24;
    string egg_incubator_id = 25;
    int64 creation_time_ms = 26;
    int32 num_upgrades = 27;
    float additional_cp_multiplier = 28;
    bool favorite = 29;
    string nickname = 30;
    bool from_fort = 31;
    int32 buddy_candy_awarded = 32;
    float buddy_km_walked = 33;
    int32 display_pokemon_id = 34;
    int32 display_cp = 35;
    PokemonDisplayProto pokemon_display = 36;
}

message ItemProto
{
    Item item = 1;
    int32 count = 2;
    bool unseen = 3;
}

message AvatarItemProto
{
    string avatar_template_id = 1;
    int64 new_timestamp_ms = 2;
    bool viewed = 3;
}

message PokedexEntryProto
{
    int32 pokedex_entry_number = 1;
    int32 times_encountered = 2;
    int32 times_captured = 3;
    int32 evolution_stone_pieces = 4;
    int32 evolution_stones = 5;
    repeated Costume captured_costumes = 6;
    repeated Form captured_forms = 7;
    repeated Gender captured_genders = 8;
    bool captured_shiny = 9;
    repeated Costume encountered_costumes = 10;
    repeated Form encountered_forms = 11;
    repeated Gender encountered_genders = 12;
    bool encountered_shiny = 13;

    enum Costume
    {
        UNSET = 0;
        HOLIDAY_2016 = 1;
        ANNIVERSARY = 2;
    }

    enum Gender
    {
        GENDER_UNSET = 0;
        MALE = 1;
        FEMALE = 2;
        GENDERLESS = 3;
    }
}

message PlayerStatsProto
{
    int32 level = 1;
    int64 experience = 2;
    int64 prev_level_exp = 3;
    int64 next_level_exp = 4;
    float km_walked = 5;
    int32 num_pokemon_encountered = 6;
    int32 num_unique_pokedex_entries = 7;
    int32 num_pokemon_captured = 8;
    int32 num_evolutions = 9;
    int32 poke_stop_visits = 10;
    int32 number_of_pokeball_thrown = 11;
    int32 num_eggs_hatched = 12;
    int32 big_magikarp_caught = 13;
    int32 num_battle_attack_won = 14;
    int32 num_battle_attack_total = 15;
    int32 num_battle_defended_won = 16;
    int32 num_battle_training_won = 17;
    int32 num_battle_training_total = 18;
    int32 prestige_raised_total = 19;
    int32 prestige_dropped_total = 20;
    int32 num_pokemon_deployed = 21;
    repeated int32 num_pokemon_caught_by_type = 22;
    int32 small_rattata_caught = 23;
    double used_km_pool = 24;
    int64 last_km_refill_ms = 25;
}

message PlayerCurrencyProto
{
    int32 gems = 1;
}

message PlayerCameraProto
{
    bool default_camera = 1;
}

message InventoryUpgradesProto
{
    repeated InventoryUpgradeProto inventory_upgrade = 1;
}

message InventoryUpgradeProto
{
    Item item = 1;
    InventoryUpgradeType upgrade_type = 2;
    int32 additional_storage = 3;
}

message DailyQuestProto
{
    int32 current_period_bucket = 1;
    int32 current_streak_count = 2;
}

message QuestProto
{
    QuestType quest_type = 1;
    DailyQuestProto daily_quest = 2;
}

message EggIncubatorsProto
{
    repeated EggIncubatorProto egg_incubator = 1;
}

message EggIncubatorProto
{
    string item_id = 1;
    Item item = 2;
    EggIncubatorType incubator_type = 3;
    int32 uses_remaining = 4;
    int64 pokemon_id = 5;
    double start_km_walked = 6;
    double target_km_walked = 7;
}

message AppliedItemsProto
{
    repeated AppliedItemProto item = 4;
}

message AppliedItemProto
{
    Item item = 1;
    HoloItemType item_type = 2;
    int64 expiration_ms = 3;
    int64 applied_ms = 4;
}

message PokemonFamilyProto
{
    HoloPokemonFamilyId family_id = 1;
    int32 candy = 2;
}

message BuddyPokemonProto
{
    fixed64 buddy_pokemon_id = 1;
    double start_km_walked = 2;
    double last_km_awarded = 3;
}

message PlayerPublicProfileProto
{
    string name = 1;
    int32 level = 2;
    PlayerAvatarProto avatar = 3;
}

message PlayerAvatarProto
{
    int32 avatar = 8;
    int32 skin = 2;
    int32 hair = 3;
    int32 shirt = 4;
    int32 pants = 5;
    int32 hat = 6;
    int32 shoes = 7;
    int32 eyes = 9;
    int32 backpack = 10;
    string avatar_hair = 11;
    string avatar_shirt = 12;
    string avatar_pants = 13;
    string avatar_hat = 14;
    string avatar_shoes = 15;
    string avatar_eyes = 16;
    string avatar_backpack = 17;
    string avatar_gloves = 18;
    string avatar_socks = 19;
    string avatar_belt = 20;
    string avatar_glasses = 21;
    string avatar_necklace = 22;
}

message ActionLogEntry
{
    int64 timestamp_ms = 1;
    bool sfida = 2;
    CatchPokemonLogEntry catch_pokemon = 3;
    FortSearchLogEntry fort_search = 4;
    BuddyPokemonLogEntry buddy_pokemon = 5;
}

message CatchPokemonLogEntry
{
    Result result = 1;
    int32 pokedex_number = 2;
    int32 combat_points = 3;
    fixed64 pokemon_id = 4;
    PokemonDisplayProto pokemon_display = 5;

    enum Result
    {
        UNSET = 0;
        POKEMON_CAPTURED = 1;
        POKEMON_FLED = 2;
        POKEMON_HATCHED = 3;
    }
}

message BuddyPokemonLogEntry
{
    Result result = 1;
    HoloPokemonId pokemon_type = 2;
    int32 amount = 3;
    PokemonDisplayProto pokemon_display = 4;
    fixed64 pokemon_id = 5;

    enum Result
    {
        UNSET = 0;
        CANDY_FOUND = 1;
    }
}

message FortSearchLogEntry
{
    Result result = 1;
    string fort_id = 2;
    repeated ItemProto items = 3;
    int32 eggs = 4;
    repeated PokemonProto pokemon_eggs = 5;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
    }
}

message PokemonDisplayProto
{
    Costume costume = 1;
    Gender gender = 2;
    bool shiny = 3;
    Form form = 4;
}

message InventoryProto
{
    repeated InventoryItemProto inventory_item = 1;
}

message InventoryItemProto
{
    int64 modified_timestamp = 1;
    bytes deleted_item_key = 2;
    bytes item = 3;
}

message InventoryDeltaProto
{
    int64 original_timestamp = 1;
    int64 new_timestamp = 2;
    repeated InventoryItemProto inventory_item = 3;
}

message PlayerBadgeProto
{
    HoloBadgeType badge_type = 1;
    int32 rank = 2;
    int32 start_value = 3;
    int32 end_value = 4;
    double current_value = 5;
}

message PlayerProfileProto
{
    string player_name = 1;
}

message PlayerProfileOutProto
{
    Result result = 1;
    int64 start_time = 2;
    repeated PlayerBadgeProto badges = 3;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
    }
}

message LevelUpRewardsProto
{
    int32 level = 1;
}

message LevelUpRewardsOutProto
{
    Result result = 1;
    repeated AwardItemProto items = 2;
    repeated Item items_unlocked = 4;
    repeated string avatar_template_ids = 5;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        AWARDED_ALREADY = 2;
    }
}

message RedeemedItemProto
{
    Item item = 1;
    int32 item_count = 2;
}

message RedeemedAvatarItemProto
{
    string avatar_template_id = 1;
    int32 item_count = 2;
}

message PokeCandyProto
{
    fixed64 pokemon_id = 1;
    int32 candy_count = 2;
}

message RedeemPasscodeRewardProto
{
    repeated RedeemedItemProto items = 1;
    repeated RedeemedAvatarItemProto avatar_items = 2;
    repeated PokemonProto egg_pokemon = 3;
    repeated PokemonProto pokemon = 4;
    repeated PokeCandyProto poke_candy = 5;
    int32 stardust = 6;
    int32 pokecoins = 7;
}

message PokemonFortProto
{
    string fort_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
    int32 team = 5;
    int32 guard_pokemon_id = 6;
    int32 guard_pokemon_level = 7;
    bool enabled = 8;
    FortType fort_type = 9;
    int64 gym_points = 10;
    bool is_in_battle = 11;
    repeated Item active_fort_modifier = 12;
    MapPokemonProto active_pokemon = 13;
    int64 cooldown_complete_ms = 14;
    Sponsor sponsor = 15;
    RenderingType rendering_type = 16;
    int64 deploy_lockout_end_ms = 17;
    PokemonDisplayProto guard_pokemon_display = 18;

    enum Sponsor
    {
        UNSET = 0;
        MCDONALDS = 1;
        POKEMON_STORE = 2;
        TOHO = 3;
        SOFTBANK = 4;
        GLOBE = 5;
        SPATULA = 6;
        THERMOMETER = 7;
        KNIFE = 8;
        GRILL = 9;
        SMOKER = 10;
        PAN = 11;
        BBQ = 12;
        FRYER = 13;
        STEAMER = 14;
        HOOD = 15;
        SLOWCOOKER = 16;
        MIXER = 17;
        SCOOPER = 18;
        MUFFINTIN = 19;
    }

    enum RenderingType
    {
        DEFAULT = 0;
        INTERNAL_TEST = 1;
    }
}

message PokemonSummaryFortProto
{
    string fort_summary_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
}

message ClientSpawnPointProto
{
    double latitude = 2;
    double longitude = 3;
}

message WildPokemonProto
{
    fixed64 encounter_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
    string spawn_point_id = 5;
    PokemonProto pokemon = 7;
    int32 time_till_hidden_ms = 11;
}

message MapPokemonProto
{
    string spawnpoint_id = 1;
    fixed64 encounter_id = 2;
    int32 pokedex_type_id = 3;
    int64 expiration_time_ms = 4;
    double latitude = 5;
    double longitude = 6;
    PokemonDisplayProto pokemon_display = 7;
}

message ClientPlayerProto
{
    int64 creation_time_ms = 1;
    string name = 2;
    int32 team = 5;
    repeated TutorialCompletion tutorial_complete = 7;
    PlayerAvatarProto player_avatar_proto = 8;
    int32 max_pokemon_storage = 9;
    int32 max_item_storage = 10;
    DailyBonusProto daily_bonus_proto = 11;
    EquippedBadgeProto equipped_badge_proto = 12;
    ContactSettingsProto contact_settings_proto = 13;
    repeated CurrencyQuantityProto currency_balance = 14;
    int32 remaining_codename_claims = 15;
    BuddyPokemonProto buddy_pokemon_proto = 16;
    int64 battle_lockout_end_ms = 17;
    PlayerAvatarProto secondary_player_avatar_proto = 18;
    bool name_is_blacklisted = 19;
}

message CurrencyQuantityProto
{
    string currency_type = 1;
    int32 quantity = 2;
}

message ContactSettingsProto
{
    bool send_marketing_emails = 1;
    bool send_push_notifications = 2;
}

message DailyBonusProto
{
    int64 next_collect_timestamp_ms = 1;
    int64 next_defender_bonus_collect_timestamp_ms = 2;
}

message EquippedBadgeProto
{
    HoloBadgeType equipped_badge = 1;
    int32 level = 2;
    int64 next_equip_change_allowed_timestamp_ms = 3;
}

message PlayerLocaleProto
{
    string country = 1;
    string language = 2;
    string timezone = 3;
}

message GetPlayerProto
{
    PlayerLocaleProto player_locale = 1;
}

message GetPlayerOutProto
{
    bool success = 1;
    ClientPlayerProto player = 2;
    bool banned = 3;
    bool warn = 4;
}

message GetInventoryProto
{
    int64 timestamp_millis = 1;
    repeated Item item_been_seen = 2;
}

message GetInventoryOutProto
{
    bool success = 1;
    InventoryDeltaProto inventory_delta = 2;
}

message SetFavoritePokemonProto
{
    int64 pokemon_id = 1;
    bool is_favorite = 2;
}

message SetFavoritePokemonOutProto
{
    Result result = 1;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_POKEMON_NOT_FOUND = 2;
        ERROR_POKEMON_IS_EGG = 3;
    }
}

message ReleasePokemonProto
{
    fixed64 pokemon_id = 1;
    repeated fixed64 pokemon_ids = 2;
}

message ReleasePokemonOutProto
{
    Status status = 1;
    int32 candy_awarded = 2;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        POKEMON_DEPLOYED = 2;
        FAILED = 3;
        ERROR_POKEMON_IS_EGG = 4;
        ERROR_POKEMON_IS_BUDDY = 5;
    }
}

message NicknamePokemonProto
{
    fixed64 pokemon_id = 1;
    string nickname = 2;
}

message NicknamePokemonOutProto
{
    Result result = 1;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_NICKNAME = 2;
        ERROR_POKEMON_NOT_FOUND = 3;
        ERROR_POKEMON_IS_EGG = 4;
    }
}

message ClaimCodenameRequestProto
{
    string codename = 1;
    bool force = 2;
}

message CodenameResultProto
{
    string codename = 1;
    string user_message = 2;
    bool is_assignable = 3;
    Status status = 4;
    ClientPlayerProto updated_player = 5;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        CODENAME_NOT_AVAILABLE = 2;
        CODENAME_NOT_VALID = 3;
        CURRENT_OWNER = 4;
        CODENAME_CHANGE_NOT_ALLOWED = 5;
    }
}

message SetAvatarProto
{
    PlayerAvatarProto player_avatar_proto = 2;
}

message SetAvatarOutProto
{
    Status status = 1;
    ClientPlayerProto player = 2;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        AVATAR_ALREADY_SET = 2;
        FAILURE = 3;
        SLOT_NOT_ALLOWED = 4;
        ITEM_NOT_OWNED = 5;
        INVALID_AVATAR_TYPE = 6;
    }
}

message SetContactSettingsProto
{
    ContactSettingsProto contact_settings_proto = 1;
}

message SetContactSettingsOutProto
{
    Status status = 1;
    ClientPlayerProto player = 2;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }
}

message SetPlayerTeamProto
{
    Team team = 1;
}

message SetPlayerTeamOutProto
{
    Status status = 1;
    ClientPlayerProto player = 2;

    enum Status
    {
        UNSET = 0;
        SUCCESS = 1;
        TEAM_ALREADY_SET = 2;
        FAILURE = 3;
    }
}

message MarkTutorialCompleteProto
{
    repeated TutorialCompletion tutorial_complete = 1;
    bool send_marketing_emails = 2;
    bool send_push_notifications = 3;
}

message MarkTutorialCompleteOutProto
{
    bool success = 1;
    ClientPlayerProto player = 2;
}

message CheckAwardedBadgesProto
{
}

message CheckAwardedBadgesOutProto
{
    bool success = 1;
    repeated HoloBadgeType awarded_badges = 2;
    repeated int32 awarded_badge_levels = 3;
    repeated string avatar_template_ids = 4;
}

message RecycleItemProto
{
    Item item = 1;
    int32 count = 2;
}

message RecycleItemOutProto
{
    Result result = 1;
    int32 new_count = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_ENOUGH_COPIES = 2;
        ERROR_CANNOT_RECYCLE_INCUBATORS = 3;
    }
}

message PtcToken
{
    string token = 1;
    int32 expiration = 2;
}

message EquipBadgeProto
{
    HoloBadgeType badge = 1;
}

message EquipBadgeOutProto
{
    Result result = 1;
    EquippedBadgeProto equipped = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        COOLDOWN_ACTIVE = 2;
        NOT_QUALIFIED = 3;
    }
}

message GetActionLogRequest
{
}

message GetActionLogResponse
{
    Result result = 1;
    repeated ActionLogEntry log = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
    }
}

message CheckChallengeProto
{
    bool debug_request = 1;
}

message CheckChallengeOutProto
{
    bool show_challenge = 1;
    string challenge_url = 2;
}

message VerifyChallengeProto
{
    string token = 1;
}

message VerifyChallengeOutProto
{
    bool success = 1;
}

message SetBuddyPokemonProto
{
    fixed64 pokemon_id = 1;
}

message SetBuddyPokemonOutProto
{
    Result result = 1;
    BuddyPokemonProto updated_buddy = 2;

    enum Result
    {
        UNEST = 0;
        SUCCESS = 1;
        ERROR_POKEMON_DEPLOYED = 2;
        ERROR_POKEMON_NOT_OWNED = 3;
        ERROR_POKEMON_IS_EGG = 4;
    }
}

message GetBuddyWalkedProto
{
}

message GetBuddyWalkedOutProto
{
    bool success = 1;
    HoloPokemonFamilyId family_candy_id = 2;
    int32 candy_earned_count = 3;
}

message GlobalSettingsProto
{
    FortSettingsProto fort_settings = 2;
    MapSettingsProto map_settings = 3;
    LevelSettingsProto level_settings = 4;
    InventorySettingsProto inventory_settings = 5;
    string minimum_client_version = 6;
    GpsSettingsProto gps_settings = 7;
    FestivalSettingsProto festival_settings = 8;
    EventSettingsProto event_settings = 9;
    int32 max_pokemon_types = 10;
    SfidaGlobalSettingsProto sfida_settings = 11;
    NewsSettingProto news_settings = 12;
    TranslationSettingsProto translation_settings = 13;
    PasscodeSettingsProto passcode_settings = 14;
}

message FortSettingsProto
{
    double interaction_range_meters = 1;
    int32 max_total_deployed_pokemon = 2;
    int32 max_player_deployed_pokemon = 3;
    double deploy_stamina_multiplier = 4;
    double deploy_attack_multiplier = 5;
    double far_interaction_range_meters = 6;
}

message MapSettingsProto
{
    double pokemon_visible_range = 1;
    double poke_nav_range_meters = 2;
    double encounter_range_meters = 3;
    float get_map_objects_min_refresh_seconds = 4;
    float get_map_objects_max_refresh_seconds = 5;
    float get_map_objects_min_distance_meters = 6;
    string google_maps_api_key = 7;
    int32 min_nearby_hide_sightings = 8;
}

message LevelSettingsProto
{
    double trainer_cp_modifier = 2;
    double trainer_difficulty_modifier = 3;
}

message InventorySettingsProto
{
    int32 max_pokemon = 1;
    int32 max_bag_items = 2;
    int32 base_pokemon = 3;
    int32 base_bag_items = 4;
    int32 base_eggs = 5;
}

message GpsSettingsProto
{
    float driving_warning_speed_meters_per_second = 1;
    float driving_warning_cooldown_minutes = 2;
    float driving_speed_sample_interval_seconds = 3;
    int32 driving_speed_sample_count = 4;
}

message FestivalSettingsProto
{
    FestivalType festival_type = 1;
    string key = 2;
    string vector = 3;

    enum FestivalType
    {
        NONE = 0;
        HALLOWEEN = 1;
        HOLIDAY = 2;
    }
}

message EventSettingsProto
{
    repeated string condolence_ribbon_country = 1;
}

message NewsSettingProto
{
    repeated NewsProto news_protos = 1;
}

message NewsProto
{
    string news_bundle_id = 1;
    repeated string exclusive_countries = 2;
}

message TranslationSettingsProto
{
    repeated string translation_bundle_ids = 1;
}

message SfidaGlobalSettingsProto
{
    float low_battery_threshold = 1;
}

message PasscodeSettingsProto
{
    bool show_passcode_in_store = 1;
}

message DownloadSettingsActionProto
{
    string sha1 = 1;
}

message DownloadSettingsResponseProto
{
    string error = 1;
    string sha1 = 2;
    bytes values = 3;
}

message RegisterSfidaRequest
{
    string sfida_id = 1;
}

message RegisterSfidaResponse
{
    bytes access_token = 1;
}

message UpgradePokemonProto
{
    fixed64 pokemon_id = 1;
}

message UpgradePokemonOutProto
{
    Result result = 1;
    PokemonProto upgraded_pokemon = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_POKEMON_NOT_FOUND = 2;
        ERROR_INSUFFICIENT_RESOURCES = 3;
        ERROR_UPGRADE_NOT_AVAILABLE = 4;
        ERROR_POKEMON_IS_DEPLOYED = 5;
    }
}

message UseItemPotionProto
{
    Item item = 1;
    fixed64 pokemon_id = 2;
}

message UseItemPotionOutProto
{
    Result result = 1;
    int32 stamina = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NO_POKEMON = 2;
        ERROR_CANNOT_USE = 3;
        ERROR_DEPLOYED_TO_FORT = 4;
    }
}

message UseItemReviveProto
{
    Item item = 1;
    fixed64 pokemon_id = 2;
}

message UseItemReviveOutProto
{
    Result result = 1;
    int32 stamina = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NO_POKEMON = 2;
        ERROR_CANNOT_USE = 3;
        ERROR_DEPLOYED_TO_FORT = 4;
    }
}

message UseItemGymProto
{
    Item item = 1;
    string gym_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

message UseItemGymOutProto
{
    Result result = 1;
    int64 updated_gp = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_CANNOT_USE = 2;
        ERROR_NOT_IN_RANGE = 3;
    }
}

message UseItemXpBoostProto
{
    Item item = 1;
}

message UseItemXpBoostOutProto
{
    Result result = 1;
    AppliedItemsProto applied_items = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ITEM_TYPE = 2;
        ERROR_XP_BOOST_ALREADY_ACTIVE = 3;
        ERROR_NO_ITEMS_REMAINING = 4;
        ERROR_LOCATION_UNSET = 5;
    }
}

message UseItemEggIncubatorProto
{
    string item_id = 1;
    int64 pokemond_id = 2;
}

message UseItemEggIncubatorOutProto
{
    Result result = 1;
    EggIncubatorProto egg_incubator = 2;

    enum Result
    {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INCUBATOR_NOT_FOUND = 2;
        ERROR_POKEMON_EGG_NOT_FOUND = 3;
        ERROR_POKEMON_ID_NOT_EGG = 4;
        ERROR_INCUBATOR_ALREADY_IN_USE = 5;
        ERROR_POKEMON_ALREADY_INCUBATING = 6;
        ERROR_INCUBATOR_NO_USES_REMAINING = 7;
    }
}

message ClientVersionProto
{
    string min_version = 1;
}