geolite 0.0.11

open source geocode solution
#[derive(prost::Message)]
pub struct blob_header_msg {
  #[prost(string, tag = "1")]
  pub r#type: String,
  // wire-compatible with int32 for non-negative values; datasize is always >= 0 in practice
  #[prost(uint32, tag = "3")]
  pub datasize: u32,
}

#[derive(prost::Message)]
pub struct blob_msg {
  #[prost(bytes = "vec", optional, tag = "1")]
  pub raw: Option<Vec<u8>>,
  #[prost(int32, optional, tag = "2")]
  pub raw_size: Option<i32>,
  #[prost(bytes = "vec", optional, tag = "3")]
  pub zlib_data: Option<Vec<u8>>,
}

#[derive(prost::Message)]
pub struct header_block_msg {
  #[prost(message, optional, tag = "1")]
  pub bbox: Option<header_bbox_msg>,
  #[prost(string, repeated, tag = "4")]
  pub required_features: Vec<String>,
  #[prost(string, repeated, tag = "5")]
  pub optional_features: Vec<String>,
  #[prost(string, optional, tag = "16")]
  pub writingprogram: Option<String>,
  #[prost(string, optional, tag = "17")]
  pub source: Option<String>,
  #[prost(int64, optional, tag = "32")]
  pub osmosis_replication_timestamp: Option<i64>,
  #[prost(int64, optional, tag = "33")]
  pub osmosis_replication_sequence_number: Option<i64>,
  #[prost(string, optional, tag = "34")]
  pub osmosis_replication_base_url: Option<String>,
}

#[derive(prost::Message)]
pub struct header_bbox_msg {
  #[prost(sint64, tag = "1")]
  pub left: i64,
  #[prost(sint64, tag = "2")]
  pub right: i64,
  #[prost(sint64, tag = "3")]
  pub top: i64,
  #[prost(sint64, tag = "4")]
  pub bottom: i64,
}

#[derive(prost::Message)]
pub struct string_table_msg {
  #[prost(bytes = "vec", repeated, tag = "1")]
  pub s: Vec<Vec<u8>>,
}

#[derive(prost::Message)]
pub struct primitive_block_msg {
  #[prost(message, optional, tag = "1")]
  pub stringtable: Option<string_table_msg>,
  #[prost(message, repeated, tag = "2")]
  pub primitivegroup: Vec<primitive_group_msg>,
  #[prost(int32, optional, tag = "17")]
  pub granularity: Option<i32>,
  #[prost(int64, optional, tag = "19")]
  pub lat_offset: Option<i64>,
  #[prost(int64, optional, tag = "20")]
  pub lon_offset: Option<i64>,
  #[prost(int32, optional, tag = "18")]
  pub date_granularity: Option<i32>,
}

#[derive(prost::Message)]
pub struct primitive_group_msg {
  #[prost(message, repeated, tag = "1")]
  pub nodes: Vec<node_msg>,
  #[prost(message, optional, tag = "2")]
  pub dense: Option<dense_nodes_msg>,
  #[prost(message, repeated, tag = "3")]
  pub ways: Vec<way_msg>,
  #[prost(message, repeated, tag = "4")]
  pub relations: Vec<relation_msg>,
}

#[derive(prost::Message)]
pub struct info_msg {
  #[prost(int32, optional, tag = "1", default = "-1")]
  pub version: Option<i32>,
  #[prost(int64, optional, tag = "2")]
  pub timestamp: Option<i64>,
  #[prost(int64, optional, tag = "3")]
  pub changeset: Option<i64>,
  #[prost(int32, optional, tag = "4")]
  pub uid: Option<i32>,
  #[prost(uint32, optional, tag = "5")]
  pub user_sid: Option<u32>,
  #[prost(bool, optional, tag = "6")]
  pub visible: Option<bool>,
}

#[derive(prost::Message)]
pub struct dense_info_msg {
  #[prost(int32, repeated, tag = "1")]
  pub version: Vec<i32>,
  #[prost(sint64, repeated, tag = "2")]
  pub timestamp: Vec<i64>,
  #[prost(sint64, repeated, tag = "3")]
  pub changeset: Vec<i64>,
  #[prost(sint32, repeated, tag = "4")]
  pub uid: Vec<i32>,
  #[prost(sint32, repeated, tag = "5")]
  pub user_sid: Vec<i32>,
  #[prost(bool, repeated, tag = "6")]
  pub visible: Vec<bool>,
}

#[derive(prost::Message)]
pub struct node_msg {
  #[prost(sint64, tag = "1")]
  pub id: i64,
  #[prost(uint32, repeated, tag = "2")]
  pub keys: Vec<u32>,
  #[prost(uint32, repeated, tag = "3")]
  pub vals: Vec<u32>,
  #[prost(message, optional, tag = "4")]
  pub info: Option<info_msg>,
  #[prost(sint64, tag = "8")]
  pub lat: i64,
  #[prost(sint64, tag = "9")]
  pub lon: i64,
}

#[derive(prost::Message)]
pub struct dense_nodes_msg {
  #[prost(sint64, repeated, tag = "1")]
  pub id: Vec<i64>,
  #[prost(message, optional, tag = "5")]
  pub denseinfo: Option<dense_info_msg>,
  #[prost(sint64, repeated, tag = "8")]
  pub lat: Vec<i64>,
  #[prost(sint64, repeated, tag = "9")]
  pub lon: Vec<i64>,
  #[prost(int32, repeated, tag = "10")]
  pub keys_vals: Vec<i32>,
}

#[derive(prost::Message)]
pub struct way_msg {
  #[prost(int64, tag = "1")]
  pub id: i64,
  #[prost(uint32, repeated, tag = "2")]
  pub keys: Vec<u32>,
  #[prost(uint32, repeated, tag = "3")]
  pub vals: Vec<u32>,
  #[prost(message, optional, tag = "4")]
  pub info: Option<info_msg>,
  #[prost(sint64, repeated, tag = "8")]
  pub refs: Vec<i64>,
  #[prost(sint64, repeated, tag = "9")]
  pub lat: Vec<i64>,
  #[prost(sint64, repeated, tag = "10")]
  pub lon: Vec<i64>,
}

#[derive(prost::Message)]
pub struct relation_msg {
  #[prost(int64, tag = "1")]
  pub id: i64,
  #[prost(uint32, repeated, tag = "2")]
  pub keys: Vec<u32>,
  #[prost(uint32, repeated, tag = "3")]
  pub vals: Vec<u32>,
  #[prost(message, optional, tag = "4")]
  pub info: Option<info_msg>,
  #[prost(int32, repeated, tag = "8")]
  pub roles_sid: Vec<i32>,
  #[prost(sint64, repeated, tag = "9")]
  pub memids: Vec<i64>,
  #[prost(int32, repeated, tag = "10")]
  pub types: Vec<i32>,
}