local worldmap_8000 = {
  [1200000] = {
    [-1] = -1,
    [-2] = -2,
    [-3] = {
      -3,
      -4,
      -5
    },
    [-4] = {
      -6,
      -6,
      -6
    },
    [-5] = -6,
    [-6] = -7,
    [-7] = -6,
    [-8] = {},
    [-9] = -6,
    [-10] = -6,
    [-11] = -6,
    [-12] = {},
    [-13] = {},
    [-14] = {},
    [-15] = {},
    [-16] = -6,
    [-17] = -6,
    [-18] = {},
    [-19] = {},
    [-20] = -6,
    [-21] = -6,
    [-22] = -6,
    [-23] = -6
  }
}
local key_to_index_map = {
  id = -1,
  cityId = -2,
  position = -3,
  rotation = -4,
  scale = -5,
  spawnerId = -6,
  expandId = -7,
  expandParams = -8,
  aiTree = -9,
  blueprint = -10,
  fsm = -11,
  statusReward = -12,
  appearCond = -13,
  disappearCond = -14,
  commonTag = -15,
  allBlockShow = -16,
  keepOnComplete = -17,
  interactOptions = -18,
  interactOverrideParams = -19,
  filterMark = -20,
  randomEvtId = -21,
  initStatus = -22,
  initialCompleteState = -23
}
local index_to_key_map = {}
for k, v in pairs(key_to_index_map) do
  index_to_key_map[v] = k
end
local value_to_index_map = {
  [1200000] = -1,
  [8000] = -2,
  [54.33] = -3,
  [104.314] = -4,
  [77.87] = -5,
  [0.0] = -6,
  [1] = -7
}
local index_to_value_map = {}
for k, v in pairs(value_to_index_map) do
  index_to_value_map[v] = k
end

local function SetReadonlyTable(t)
  for k, v in pairs(t) do
    if type(v) == "table" then
      t[k] = SetReadonlyTable(v)
    end
  end
  local mt = {
    __data = t,
    __index_to_key_map = index_to_key_map,
    __key_to_index_map = key_to_index_map,
    __index_to_value_map = index_to_value_map,
    __index = function(t, k)
      local tmt = getmetatable(t)
      local data = tmt.__data
      local value_index
      if tmt.__key_to_index_map[k] ~= nil then
        value_index = data[tmt.__key_to_index_map[k]]
      else
        value_index = data[k]
      end
      if type(value_index) == "table" then
        return value_index
      else
        return tmt.__index_to_value_map[value_index]
      end
    end,
    __newindex = function(t, k, v)
      errorf("attempt to modify a read-only talbe!", 2)
    end,
    __pairs = function(t, k)
      return function(t, k)
        local tmt = getmetatable(t)
        local data = tmt.__data
        local nk, nv
        if tmt.__key_to_index_map[k] ~= nil then
          local iter_key = tmt.__key_to_index_map[k]
          nk, nv = next(data, iter_key)
        else
          nk, nv = next(data, k)
        end
        local key, value
        if tmt.__index_to_key_map[nk] ~= nil then
          key = tmt.__index_to_key_map[nk]
        else
          key = nk
        end
        if type(nv) == "table" then
          value = nv
        else
          value = tmt.__index_to_value_map[nv]
        end
        return key, value
      end, t, nil
    end,
    __len = function(t)
      local tmt = getmetatable(t)
      local data = tmt.__data
      return #data
    end
  }
  t = setmetatable({}, mt)
  return t
end

worldmap_8000 = SetReadonlyTable(worldmap_8000)
return worldmap_8000
