summaryrefslogtreecommitdiff
path: root/script-beta
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-11-22 23:26:32 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-11-22 23:26:32 +0800
commitd0ff66c9abe9d6abbca12fd811e0c3cb69c1033a (patch)
treebb34518d70b85de7656dbdbe958dfa221a3ff3b3 /script-beta
parent0a2c2ad15e1ec359171fb0dd4c72e57c5b66e9ba (diff)
downloadlua-language-server-d0ff66c9abe9d6abbca12fd811e0c3cb69c1033a.zip
整理一下目录结构
Diffstat (limited to 'script-beta')
-rw-r--r--script-beta/debugger.lua56
-rw-r--r--script-beta/main.lua19
-rw-r--r--script-beta/platform.lua28
-rw-r--r--script-beta/src/await.lua100
-rw-r--r--script-beta/src/brave/brave.lua70
-rw-r--r--script-beta/src/brave/init.lua4
-rw-r--r--script-beta/src/brave/log.lua52
-rw-r--r--script-beta/src/brave/work.lua55
-rw-r--r--script-beta/src/config.lua193
-rw-r--r--script-beta/src/core/definition.lua105
-rw-r--r--script-beta/src/core/diagnostics/ambiguity-1.lua69
-rw-r--r--script-beta/src/core/diagnostics/duplicate-index.lua62
-rw-r--r--script-beta/src/core/diagnostics/emmy-lua.lua3
-rw-r--r--script-beta/src/core/diagnostics/empty-block.lua49
-rw-r--r--script-beta/src/core/diagnostics/global-in-nil-env.lua66
-rw-r--r--script-beta/src/core/diagnostics/init.lua41
-rw-r--r--script-beta/src/core/diagnostics/lowercase-global.lua39
-rw-r--r--script-beta/src/core/diagnostics/newfield-call.lua37
-rw-r--r--script-beta/src/core/diagnostics/newline-call.lua38
-rw-r--r--script-beta/src/core/diagnostics/redefined-local.lua32
-rw-r--r--script-beta/src/core/diagnostics/redundant-parameter.lua102
-rw-r--r--script-beta/src/core/diagnostics/redundant-value.lua24
-rw-r--r--script-beta/src/core/diagnostics/trailing-space.lua55
-rw-r--r--script-beta/src/core/diagnostics/undefined-env-child.lua32
-rw-r--r--script-beta/src/core/diagnostics/undefined-global.lua63
-rw-r--r--script-beta/src/core/diagnostics/unused-function.lua45
-rw-r--r--script-beta/src/core/diagnostics/unused-label.lua22
-rw-r--r--script-beta/src/core/diagnostics/unused-local.lua46
-rw-r--r--script-beta/src/core/diagnostics/unused-vararg.lua31
-rw-r--r--script-beta/src/core/highlight.lua230
-rw-r--r--script-beta/src/core/hover/arg.lua20
-rw-r--r--script-beta/src/core/hover/init.lua56
-rw-r--r--script-beta/src/core/hover/label.lua103
-rw-r--r--script-beta/src/core/hover/name.lua64
-rw-r--r--script-beta/src/core/hover/return.lua34
-rw-r--r--script-beta/src/core/hover/table.lua35
-rw-r--r--script-beta/src/core/reference.lua84
-rw-r--r--script-beta/src/core/rename.lua374
-rw-r--r--script-beta/src/define/DiagnosticDefaultSeverity.lua21
-rw-r--r--script-beta/src/define/DiagnosticSeverity.lua6
-rw-r--r--script-beta/src/define/ErrorCodes.lua16
-rw-r--r--script-beta/src/doctor.lua380
-rw-r--r--script-beta/src/file-uri.lua108
-rw-r--r--script-beta/src/files.lua290
-rw-r--r--script-beta/src/fs-utility.lua314
-rw-r--r--script-beta/src/glob/gitignore.lua221
-rw-r--r--script-beta/src/glob/glob.lua122
-rw-r--r--script-beta/src/glob/init.lua4
-rw-r--r--script-beta/src/glob/matcher.lua151
-rw-r--r--script-beta/src/json/decode.lua153
-rw-r--r--script-beta/src/json/encode.lua135
-rw-r--r--script-beta/src/json/init.lua6
-rw-r--r--script-beta/src/jsonrpc.lua41
-rw-r--r--script-beta/src/language.lua137
-rw-r--r--script-beta/src/library.lua296
-rw-r--r--script-beta/src/log.lua140
-rw-r--r--script-beta/src/parser/ast.lua1738
-rw-r--r--script-beta/src/parser/calcline.lua93
-rw-r--r--script-beta/src/parser/compile.lua549
-rw-r--r--script-beta/src/parser/emmy.lua321
-rw-r--r--script-beta/src/parser/grammar.lua537
-rw-r--r--script-beta/src/parser/guide.lua621
-rw-r--r--script-beta/src/parser/init.lua11
-rw-r--r--script-beta/src/parser/lines.lua46
-rw-r--r--script-beta/src/parser/parse.lua45
-rw-r--r--script-beta/src/parser/relabel.lua361
-rw-r--r--script-beta/src/parser/split.lua9
-rw-r--r--script-beta/src/proto/define.lua140
-rw-r--r--script-beta/src/proto/init.lua3
-rw-r--r--script-beta/src/proto/proto.lua133
-rw-r--r--script-beta/src/provider/capability.lua42
-rw-r--r--script-beta/src/provider/completion.lua53
-rw-r--r--script-beta/src/provider/diagnostic.lua209
-rw-r--r--script-beta/src/provider/init.lua298
-rw-r--r--script-beta/src/provider/markdown.lua22
-rw-r--r--script-beta/src/pub/init.lua4
-rw-r--r--script-beta/src/pub/pub.lua236
-rw-r--r--script-beta/src/pub/report.lua21
-rw-r--r--script-beta/src/service/init.lua3
-rw-r--r--script-beta/src/service/service.lua137
-rw-r--r--script-beta/src/timer.lua218
-rw-r--r--script-beta/src/utility.lua452
-rw-r--r--script-beta/src/vm/dummySource.lua13
-rw-r--r--script-beta/src/vm/eachDef.lua65
-rw-r--r--script-beta/src/vm/eachField.lua169
-rw-r--r--script-beta/src/vm/eachRef.lua500
-rw-r--r--script-beta/src/vm/getGlobal.lua6
-rw-r--r--script-beta/src/vm/getGlobals.lua45
-rw-r--r--script-beta/src/vm/getLibrary.lua89
-rw-r--r--script-beta/src/vm/getLinks.lua48
-rw-r--r--script-beta/src/vm/getValue.lua895
-rw-r--r--script-beta/src/vm/init.lua11
-rw-r--r--script-beta/src/vm/special.lua0
-rw-r--r--script-beta/src/vm/vm.lua81
-rw-r--r--script-beta/src/workspace/init.lua3
-rw-r--r--script-beta/src/workspace/workspace.lua194
-rw-r--r--script-beta/test.lua59
-rw-r--r--script-beta/test/completion/init.lua1494
-rw-r--r--script-beta/test/crossfile/completion.lua621
-rw-r--r--script-beta/test/crossfile/definition.lua448
-rw-r--r--script-beta/test/crossfile/hover.lua347
-rw-r--r--script-beta/test/crossfile/init.lua4
-rw-r--r--script-beta/test/crossfile/references.lua249
-rw-r--r--script-beta/test/definition/arg.lua19
-rw-r--r--script-beta/test/definition/bug.lua102
-rw-r--r--script-beta/test/definition/call.lua8
-rw-r--r--script-beta/test/definition/emmy.lua91
-rw-r--r--script-beta/test/definition/function.lua24
-rw-r--r--script-beta/test/definition/init.lua67
-rw-r--r--script-beta/test/definition/label.lua29
-rw-r--r--script-beta/test/definition/local.lua195
-rw-r--r--script-beta/test/definition/method.lua31
-rw-r--r--script-beta/test/definition/set.lua40
-rw-r--r--script-beta/test/definition/special.lua124
-rw-r--r--script-beta/test/definition/table.lua135
-rw-r--r--script-beta/test/diagnostics/init.lua689
-rw-r--r--script-beta/test/document_symbol/init.lua478
-rw-r--r--script-beta/test/example/largeGlobal.txt28101
-rw-r--r--script-beta/test/example/vm.txt1544
-rw-r--r--script-beta/test/full/dirty.lua15
-rw-r--r--script-beta/test/full/example.lua43
-rw-r--r--script-beta/test/full/init.lua13
-rw-r--r--script-beta/test/full/normal.lua157
-rw-r--r--script-beta/test/highlight/init.lua149
-rw-r--r--script-beta/test/hover/init.lua935
-rw-r--r--script-beta/test/other/init.lua11
-rw-r--r--script-beta/test/references/init.lua142
-rw-r--r--script-beta/test/rename/init.lua165
-rw-r--r--script-beta/test/signature/init.lua137
-rw-r--r--script-beta/test/type_inference/init.lua229
130 files changed, 50395 insertions, 0 deletions
diff --git a/script-beta/debugger.lua b/script-beta/debugger.lua
new file mode 100644
index 00000000..113fa687
--- /dev/null
+++ b/script-beta/debugger.lua
@@ -0,0 +1,56 @@
+local wait = ...
+local fs = require 'bee.filesystem'
+local extensionPath = fs.path(os.getenv 'USERPROFILE') / '.vscode' / 'extensions'
+log.debug('Search extensions at:', extensionPath:string())
+if not fs.is_directory(extensionPath) then
+ log.debug('Extension path is not a directory.')
+ return
+end
+
+local luaDebugs = {}
+for path in extensionPath:list_directory() do
+ if fs.is_directory(path) then
+ local name = path:filename():string()
+ if name:find('actboy168.lua-debug-', 1, true) then
+ luaDebugs[#luaDebugs+1] = name
+ end
+ end
+end
+
+if #luaDebugs == 0 then
+ log.debug('Cant find "actboy168.lua-debug"')
+ return
+end
+
+local function getVer(filename)
+ local a, b, c = filename:match('(%d+)%.(%d+)%.(%d+)$')
+ if not a then
+ return 0
+ end
+ return a * 1000000 + b * 1000 + c
+end
+
+table.sort(luaDebugs, function (a, b)
+ return getVer(a) > getVer(b)
+end)
+
+local debugPath = extensionPath / luaDebugs[1]
+local cpath = "/runtime/win64/lua54/?.dll"
+local path = "/script/?.lua"
+
+local function tryDebugger()
+ local entry = assert(package.searchpath('debugger', debugPath:string() .. path))
+ local root = debugPath:string()
+ local port = '11412'
+ local addr = "127.0.0.1:" .. port
+ local dbg = loadfile(entry)('windows', root)
+ dbg:start(addr)
+ log.debug('Debugger startup, listen port:', port)
+ log.debug('Debugger args:', addr, root, path, cpath)
+ if wait == 'wait' then
+ dbg:wait()
+ end
+ return dbg
+end
+
+xpcall(tryDebugger, log.debug)
diff --git a/script-beta/main.lua b/script-beta/main.lua
new file mode 100644
index 00000000..c674cab6
--- /dev/null
+++ b/script-beta/main.lua
@@ -0,0 +1,19 @@
+local currentPath = debug.getinfo(1, 'S').source:sub(2)
+local rootPath = currentPath:gsub('[/\\]*[^/\\]-$', '')
+dofile(rootPath .. '/platform.lua')
+local fs = require 'bee.filesystem'
+ROOT = fs.path(rootPath)
+LANG = LANG or 'en-US'
+
+collectgarbage('generational', 10, 50)
+
+log = require 'log'
+log.init(ROOT, ROOT / 'log' / 'service.log')
+log.info('Lua Lsp startup, root: ', ROOT)
+log.debug('ROOT:', ROOT:string())
+
+--loadfile(rootPath .. '/debugger.lua')'wait'
+dofile(rootPath .. '/debugger.lua')
+
+local service = require 'service'
+service.start()
diff --git a/script-beta/platform.lua b/script-beta/platform.lua
new file mode 100644
index 00000000..ed754afc
--- /dev/null
+++ b/script-beta/platform.lua
@@ -0,0 +1,28 @@
+local currentPath = debug.getinfo(1, 'S').source:sub(2)
+local rootPath = currentPath:gsub('[^/\\]-$', '')
+if package.loadlib(rootPath .. 'Windows/bin/bee.dll', 'luaopen_bee_platform') then
+ if rootPath == '' then
+ rootPath = '.\\'
+ else
+ rootPath = rootPath:gsub('/', '\\')
+ end
+ package.cpath = rootPath .. 'Windows\\bin\\?.dll'
+ package.path = rootPath .. 'src\\?.lua'
+ .. ';' .. rootPath .. 'src\\?\\init.lua'
+elseif package.loadlib(rootPath .. 'macOS/bin/bee.so', 'luaopen_bee_platform') then
+ if rootPath == '' then
+ rootPath = './'
+ end
+ package.cpath = rootPath .. 'macOS/bin/?.so'
+ package.path = rootPath .. 'src/?.lua'
+ .. ';' .. rootPath .. 'src/?/init.lua'
+elseif package.loadlib(rootPath .. 'Linux/bin/bee.so', 'luaopen_bee_platform') then
+ if rootPath == '' then
+ rootPath = './'
+ end
+ package.cpath = rootPath .. 'Linux/bin/?.so'
+ package.path = rootPath .. 'src/?.lua'
+ .. ';' .. rootPath .. 'src/?/init.lua'
+else
+ error([[It doesn't seem to support your OS, please let me know at https://github.com/sumneko/lua-language-server/issues]])
+end
diff --git a/script-beta/src/await.lua b/script-beta/src/await.lua
new file mode 100644
index 00000000..5a960e96
--- /dev/null
+++ b/script-beta/src/await.lua
@@ -0,0 +1,100 @@
+local timer = require 'timer'
+
+---@class await
+local m = {}
+m.type = 'await'
+
+m.coTracker = setmetatable({}, { __mode = 'k' })
+m.delayQueue = {}
+m.delayQueueIndex = 1
+
+--- 设置错误处理器
+---@param errHandle function {comment = '当有错误发生时,会以错误堆栈为参数调用该函数'}
+function m.setErrorHandle(errHandle)
+ m.errorHandle = errHandle
+end
+
+function m.checkResult(co, ...)
+ local suc, err = ...
+ if not suc and m.errorHandle then
+ m.errorHandle(debug.traceback(co, err))
+ end
+ return ...
+end
+
+--- 创建一个任务
+function m.create(callback, ...)
+ local co = coroutine.create(callback)
+ m.coTracker[co] = true
+ return m.checkResult(co, coroutine.resume(co, ...))
+end
+
+--- 休眠一段时间
+---@param time number
+function m.sleep(time, getVersion)
+ if not coroutine.isyieldable() then
+ if m.errorHandle then
+ m.errorHandle(debug.traceback('Cannot yield'))
+ end
+ return
+ end
+ local version = getVersion and getVersion()
+ local co = coroutine.running()
+ timer.wait(time, function ()
+ if version == (getVersion and getVersion()) then
+ return m.checkResult(co, coroutine.resume(co))
+ else
+ coroutine.close(co)
+ end
+ end)
+ return coroutine.yield(getVersion)
+end
+
+--- 等待直到唤醒
+---@param callback function
+function m.wait(callback, ...)
+ if not coroutine.isyieldable() then
+ return
+ end
+ local co = coroutine.running()
+ callback(function (...)
+ return m.checkResult(co, coroutine.resume(co, ...))
+ end)
+ return coroutine.yield(...)
+end
+
+--- 延迟
+function m.delay(getVersion)
+ if not coroutine.isyieldable() then
+ return
+ end
+ local co = coroutine.running()
+ local version = getVersion and getVersion()
+ m.delayQueue[#m.delayQueue+1] = function ()
+ if version == (getVersion and getVersion()) then
+ return m.checkResult(co, coroutine.resume(co))
+ else
+ coroutine.close(co)
+ end
+ end
+ return coroutine.yield()
+end
+
+--- 步进
+function m.step()
+ local waker = m.delayQueue[m.delayQueueIndex]
+ if waker then
+ m.delayQueue[m.delayQueueIndex] = false
+ m.delayQueueIndex = m.delayQueueIndex + 1
+ waker()
+ return true
+ else
+ for i = 1, #m.delayQueue do
+ m.delayQueue[i] = nil
+ end
+ m.delayQueueIndex = 1
+ return false
+ end
+end
+
+return m
diff --git a/script-beta/src/brave/brave.lua b/script-beta/src/brave/brave.lua
new file mode 100644
index 00000000..08909074
--- /dev/null
+++ b/script-beta/src/brave/brave.lua
@@ -0,0 +1,70 @@
+local thread = require 'bee.thread'
+
+---@class pub_brave
+local m = {}
+m.type = 'brave'
+m.ability = {}
+m.queue = {}
+
+--- 注册成为勇者
+function m.register(id)
+ m.taskpad = thread.channel('taskpad' .. id)
+ m.waiter = thread.channel('waiter' .. id)
+ m.id = id
+
+ if #m.queue > 0 then
+ for _, info in ipairs(m.queue) do
+ m.waiter:push(info.name, info.params)
+ end
+ end
+ m.queue = nil
+
+ m.start()
+end
+
+--- 注册能力
+function m.on(name, callback)
+ m.ability[name] = callback
+end
+
+--- 报告
+function m.push(name, params)
+ if m.waiter then
+ m.waiter:push(name, params)
+ else
+ m.queue[#m.queue+1] = {
+ name = name,
+ params = params,
+ }
+ end
+end
+
+--- 开始找工作
+function m.start()
+ m.push('mem', collectgarbage 'count')
+ while true do
+ local suc, name, id, params = m.taskpad:pop()
+ if not suc then
+ -- 找不到工作的勇者,只好睡觉
+ thread.sleep(0.001)
+ goto CONTINUE
+ end
+ local ability = m.ability[name]
+ -- TODO
+ if not ability then
+ m.waiter:push(id)
+ log.error('Brave can not handle this work: ' .. name)
+ goto CONTINUE
+ end
+ local ok, res = xpcall(ability, log.error, params)
+ if ok then
+ m.waiter:push(id, res)
+ else
+ m.waiter:push(id)
+ end
+ m.push('mem', collectgarbage 'count')
+ ::CONTINUE::
+ end
+end
+
+return m
diff --git a/script-beta/src/brave/init.lua b/script-beta/src/brave/init.lua
new file mode 100644
index 00000000..24c2e412
--- /dev/null
+++ b/script-beta/src/brave/init.lua
@@ -0,0 +1,4 @@
+local brave = require 'brave.brave'
+require 'brave.work'
+
+return brave
diff --git a/script-beta/src/brave/log.lua b/script-beta/src/brave/log.lua
new file mode 100644
index 00000000..cd27cd55
--- /dev/null
+++ b/script-beta/src/brave/log.lua
@@ -0,0 +1,52 @@
+local brave = require 'brave'
+
+local tablePack = table.pack
+local tostring = tostring
+local tableConcat = table.concat
+local debugTraceBack = debug.traceback
+local debugGetInfo = debug.getinfo
+
+_ENV = nil
+
+local function pushLog(level, ...)
+ local t = tablePack(...)
+ for i = 1, t.n do
+ t[i] = tostring(t[i])
+ end
+ local str = tableConcat(t, '\t', 1, t.n)
+ if level == 'error' then
+ str = str .. '\n' .. debugTraceBack(nil, 3)
+ end
+ local info = debugGetInfo(3, 'Sl')
+ brave.push('log', {
+ level = level,
+ msg = str,
+ src = info.source,
+ line = info.currentline,
+ })
+ return str
+end
+
+local m = {}
+
+function m.info(...)
+ pushLog('info', ...)
+end
+
+function m.debug(...)
+ pushLog('debug', ...)
+end
+
+function m.trace(...)
+ pushLog('trace', ...)
+end
+
+function m.warn(...)
+ pushLog('warn', ...)
+end
+
+function m.error(...)
+ pushLog('error', ...)
+end
+
+return m
diff --git a/script-beta/src/brave/work.lua b/script-beta/src/brave/work.lua
new file mode 100644
index 00000000..dba27808
--- /dev/null
+++ b/script-beta/src/brave/work.lua
@@ -0,0 +1,55 @@
+local brave = require 'brave.brave'
+local jsonrpc = require 'jsonrpc'
+local parser = require 'parser'
+local fs = require 'bee.filesystem'
+local furi = require 'file-uri'
+local util = require 'utility'
+
+brave.on('loadProto', function ()
+ while true do
+ local proto = jsonrpc.decode(io.read, log.error)
+ if proto then
+ brave.push('proto', proto)
+ end
+ end
+end)
+
+brave.on('compile', function (text)
+ local state, err = parser:compile(text, 'lua', 'Lua 5.4')
+ if not state then
+ log.error(err)
+ return
+ end
+ local lines = parser:lines(text)
+ return {
+ root = state.root,
+ value = state.value,
+ errs = state.errs,
+ lines = lines,
+ }
+end)
+
+brave.on('listDirectory', function (uri)
+ local path = fs.path(furi.decode(uri))
+ local uris = {}
+ for child in path:list_directory() do
+ local childUri = furi.encode(child:string())
+ uris[#uris+1] = childUri
+ end
+ return uris
+end)
+
+brave.on('isDirectory', function (uri)
+ local path = fs.path(furi.decode(uri))
+ return fs.is_directory(path)
+end)
+
+brave.on('loadFile', function (uri)
+ local filename = furi.decode(uri)
+ return util.loadFile(filename)
+end)
+
+brave.on('saveFile', function (params)
+ local filename = furi.decode(params.uri)
+ return util.saveFile(filename, params.text)
+end)
diff --git a/script-beta/src/config.lua b/script-beta/src/config.lua
new file mode 100644
index 00000000..758402b0
--- /dev/null
+++ b/script-beta/src/config.lua
@@ -0,0 +1,193 @@
+local util = require 'utility'
+local DiagnosticDefaultSeverity = require 'define.DiagnosticDefaultSeverity'
+
+local m = {}
+m.version = 0
+
+local function Boolean(v)
+ if type(v) == 'boolean' then
+ return true, v
+ end
+ return false
+end
+
+local function Integer(v)
+ if type(v) == 'number' then
+ return true, math.floor(v)
+ end
+ return false
+end
+
+local function String(v)
+ return true, tostring(v)
+end
+
+local function Str2Hash(sep)
+ return function (v)
+ if type(v) == 'string' then
+ local t = {}
+ for s in v:gmatch('[^'..sep..']+') do
+ t[s] = true
+ end
+ return true, t
+ end
+ if type(v) == 'table' then
+ local t = {}
+ for _, s in ipairs(v) do
+ if type(s) == 'string' then
+ t[s] = true
+ end
+ end
+ return true, t
+ end
+ return false
+ end
+end
+
+local function Array(checker)
+ return function (tbl)
+ if type(tbl) ~= 'table' then
+ return false
+ end
+ local t = {}
+ for _, v in ipairs(tbl) do
+ local ok, result = checker(v)
+ if ok then
+ t[#t+1] = result
+ end
+ end
+ return true, t
+ end
+end
+
+local function Hash(keyChecker, valueChecker)
+ return function (tbl)
+ if type(tbl) ~= 'table' then
+ return false
+ end
+ local t = {}
+ for k, v in pairs(tbl) do
+ local ok1, key = keyChecker(k)
+ local ok2, value = valueChecker(v)
+ if ok1 and ok2 then
+ t[key] = value
+ end
+ end
+ if not next(t) then
+ return false
+ end
+ return true, t
+ end
+end
+
+local function Or(...)
+ local checkers = {...}
+ return function (obj)
+ for _, checker in ipairs(checkers) do
+ local suc, res = checker(obj)
+ if suc then
+ return true, res
+ end
+ end
+ return false
+ end
+end
+
+local ConfigTemplate = {
+ runtime = {
+ version = {'Lua 5.3', String},
+ library = {{}, Str2Hash ';'},
+ path = {{
+ "?.lua",
+ "?/init.lua",
+ "?/?.lua"
+ }, Array(String)},
+ },
+ diagnostics = {
+ enable = {true, Boolean},
+ globals = {{}, Str2Hash ';'},
+ disable = {{}, Str2Hash ';'},
+ severity = {
+ util.deepCopy(DiagnosticDefaultSeverity),
+ Hash(String, String),
+ },
+ },
+ workspace = {
+ ignoreDir = {{}, Str2Hash ';'},
+ ignoreSubmodules= {true, Boolean},
+ useGitIgnore = {true, Boolean},
+ maxPreload = {300, Integer},
+ preloadFileSize = {100, Integer},
+ library = {{}, Hash(
+ String,
+ Or(Boolean, Array(String))
+ )}
+ },
+ completion = {
+ enable = {true, Boolean},
+ callSnippet = {'Both', String},
+ keywordSnippet = {'Both', String},
+ },
+ plugin = {
+ enable = {false, Boolean},
+ path = {'.vscode/lua-plugin/*.lua', String},
+ },
+}
+
+local OtherTemplate = {
+ associations = {{}, Hash(String, String)},
+ exclude = {{}, Hash(String, Boolean)},
+}
+
+local function init()
+ if m.config then
+ return
+ end
+
+ m.config = {}
+ for c, t in pairs(ConfigTemplate) do
+ m.config[c] = {}
+ for k, info in pairs(t) do
+ m.config[c][k] = info[1]
+ end
+ end
+
+ m.other = {}
+ for k, info in pairs(OtherTemplate) do
+ m.other[k] = info[1]
+ end
+end
+
+function m.setConfig(config, other)
+ m.version = m.version + 1
+ xpcall(function ()
+ for c, t in pairs(config) do
+ for k, v in pairs(t) do
+ local region = ConfigTemplate[c]
+ if region then
+ local info = region[k]
+ local suc, v = info[2](v)
+ if suc then
+ m.config[c][k] = v
+ else
+ m.config[c][k] = info[1]
+ end
+ end
+ end
+ end
+ for k, v in pairs(other) do
+ local info = OtherTemplate[k]
+ local suc, v = info[2](v)
+ if suc then
+ m.other[k] = v
+ else
+ m.other[k] = info[1]
+ end
+ end
+ log.debug('Config update: ', util.dump(m.config), util.dump(m.other))
+ end, log.error)
+end
+
+init()
+
+return m
diff --git a/script-beta/src/core/definition.lua b/script-beta/src/core/definition.lua
new file mode 100644
index 00000000..865fc7cb
--- /dev/null
+++ b/script-beta/src/core/definition.lua
@@ -0,0 +1,105 @@
+local guide = require 'parser.guide'
+local workspace = require 'workspace'
+local files = require 'files'
+local vm = require 'vm'
+
+local function findDef(source, callback)
+ if source.type ~= 'local'
+ and source.type ~= 'getlocal'
+ and source.type ~= 'setlocal'
+ and source.type ~= 'setglobal'
+ and source.type ~= 'getglobal'
+ and source.type ~= 'field'
+ and source.type ~= 'method'
+ and source.type ~= 'string'
+ and source.type ~= 'number'
+ and source.type ~= 'boolean'
+ and source.type ~= 'goto' then
+ return
+ end
+ vm.eachDef(source, function (info)
+ if info.mode == 'declare'
+ or info.mode == 'set'
+ or info.mode == 'return' then
+ local src = info.source
+ local root = guide.getRoot(src)
+ local uri = root.uri
+ if src.type == 'setfield'
+ or src.type == 'getfield'
+ or src.type == 'tablefield' then
+ callback(src.field, uri)
+ elseif src.type == 'setindex'
+ or src.type == 'getindex'
+ or src.type == 'tableindex' then
+ callback(src.index, uri)
+ elseif src.type == 'getmethod'
+ or src.type == 'setmethod' then
+ callback(src.method, uri)
+ else
+ callback(src, uri)
+ end
+ end
+ end)
+end
+
+local function checkRequire(source, offset, callback)
+ if source.type ~= 'call' then
+ return
+ end
+ local func = source.node
+ local pathSource = source.args and source.args[1]
+ if not pathSource then
+ return
+ end
+ if not guide.isContain(pathSource, offset) then
+ return
+ end
+ local literal = guide.getLiteral(pathSource)
+ if type(literal) ~= 'string' then
+ return
+ end
+ local name = func.special
+ if name == 'require' then
+ local result = workspace.findUrisByRequirePath(literal, true)
+ for _, uri in ipairs(result) do
+ callback(uri)
+ end
+ elseif name == 'dofile'
+ or name == 'loadfile' then
+ local result = workspace.findUrisByFilePath(literal, true)
+ for _, uri in ipairs(result) do
+ callback(uri)
+ end
+ end
+end
+
+return function (uri, offset)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local results = {}
+ guide.eachSourceContain(ast.ast, offset, function (source)
+ checkRequire(source, offset, function (uri)
+ results[#results+1] = {
+ uri = files.getOriginUri(uri),
+ source = source,
+ target = {
+ start = 0,
+ finish = 0,
+ }
+ }
+ end)
+ findDef(source, function (target, uri)
+ results[#results+1] = {
+ target = target,
+ uri = files.getOriginUri(uri),
+ source = source,
+ }
+ end)
+ end)
+ if #results == 0 then
+ return nil
+ end
+ return results
+end
diff --git a/script-beta/src/core/diagnostics/ambiguity-1.lua b/script-beta/src/core/diagnostics/ambiguity-1.lua
new file mode 100644
index 00000000..37815fb5
--- /dev/null
+++ b/script-beta/src/core/diagnostics/ambiguity-1.lua
@@ -0,0 +1,69 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+
+local opMap = {
+ ['+'] = true,
+ ['-'] = true,
+ ['*'] = true,
+ ['/'] = true,
+ ['//'] = true,
+ ['^'] = true,
+ ['<<'] = true,
+ ['>>'] = true,
+ ['&'] = true,
+ ['|'] = true,
+ ['~'] = true,
+ ['..'] = true,
+}
+
+local literalMap = {
+ ['number'] = true,
+ ['boolean'] = true,
+ ['string'] = true,
+ ['table'] = true,
+}
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ local text = files.getText(uri)
+ guide.eachSourceType(ast.ast, 'binary', function (source)
+ if source.op.type ~= 'or' then
+ return
+ end
+ local first = source[1]
+ local second = source[2]
+ -- a + (b or 0) --> (a + b) or 0
+ do
+ if opMap[first.op and first.op.type]
+ and first.type ~= 'unary'
+ and not second.op
+ and literalMap[second.type]
+ and not literalMap[first[2].type]
+ then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ message = lang.script('DIAG_AMBIGUITY_1', text:sub(first.start, first.finish))
+ }
+ end
+ end
+ -- (a or 0) + c --> a or (0 + c)
+ do
+ if opMap[second.op and second.op.type]
+ and second.type ~= 'unary'
+ and not first.op
+ and literalMap[second[1].type]
+ then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ message = lang.script('DIAG_AMBIGUITY_1', text:sub(second.start, second.finish))
+ }
+ end
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/duplicate-index.lua b/script-beta/src/core/diagnostics/duplicate-index.lua
new file mode 100644
index 00000000..76b1c958
--- /dev/null
+++ b/script-beta/src/core/diagnostics/duplicate-index.lua
@@ -0,0 +1,62 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+local define = require 'proto.define'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'table', function (source)
+ local mark = {}
+ for _, obj in ipairs(source) do
+ if obj.type == 'tablefield'
+ or obj.type == 'tableindex' then
+ local name = guide.getKeyName(obj)
+ if name then
+ if not mark[name] then
+ mark[name] = {}
+ end
+ mark[name][#mark[name]+1] = obj.field or obj.index
+ end
+ end
+ end
+
+ for name, defs in pairs(mark) do
+ local sname = name:match '^.|(.+)$'
+ if #defs > 1 and sname then
+ local related = {}
+ for i = 1, #defs do
+ local def = defs[i]
+ related[i] = {
+ start = def.start,
+ finish = def.finish,
+ uri = uri,
+ }
+ end
+ for i = 1, #defs - 1 do
+ local def = defs[i]
+ callback {
+ start = def.start,
+ finish = def.finish,
+ related = related,
+ message = lang.script('DIAG_DUPLICATE_INDEX', sname),
+ level = define.DiagnosticSeverity.Hint,
+ tags = { define.DiagnosticTag.Unnecessary },
+ }
+ end
+ for i = #defs, #defs do
+ local def = defs[i]
+ callback {
+ start = def.start,
+ finish = def.finish,
+ related = related,
+ message = lang.script('DIAG_DUPLICATE_INDEX', sname),
+ }
+ end
+ end
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/emmy-lua.lua b/script-beta/src/core/diagnostics/emmy-lua.lua
new file mode 100644
index 00000000..b3d19c21
--- /dev/null
+++ b/script-beta/src/core/diagnostics/emmy-lua.lua
@@ -0,0 +1,3 @@
+return function ()
+
+end
diff --git a/script-beta/src/core/diagnostics/empty-block.lua b/script-beta/src/core/diagnostics/empty-block.lua
new file mode 100644
index 00000000..2024f4e3
--- /dev/null
+++ b/script-beta/src/core/diagnostics/empty-block.lua
@@ -0,0 +1,49 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+local define = require 'proto.define'
+
+-- 检查空代码块
+-- 但是排除忙等待(repeat/while)
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'if', function (source)
+ for _, block in ipairs(source) do
+ if #block > 0 then
+ return
+ end
+ end
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_EMPTY_BLOCK,
+ }
+ end)
+ guide.eachSourceType(ast.ast, 'loop', function (source)
+ if #source > 0 then
+ return
+ end
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_EMPTY_BLOCK,
+ }
+ end)
+ guide.eachSourceType(ast.ast, 'in', function (source)
+ if #source > 0 then
+ return
+ end
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_EMPTY_BLOCK,
+ }
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/global-in-nil-env.lua b/script-beta/src/core/diagnostics/global-in-nil-env.lua
new file mode 100644
index 00000000..9a0d4f35
--- /dev/null
+++ b/script-beta/src/core/diagnostics/global-in-nil-env.lua
@@ -0,0 +1,66 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+
+-- TODO: 检查路径是否可达
+local function mayRun(path)
+ return true
+end
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ local root = guide.getRoot(ast.ast)
+ local env = guide.getENV(root)
+
+ local nilDefs = {}
+ if not env.ref then
+ return
+ end
+ for _, ref in ipairs(env.ref) do
+ if ref.type == 'setlocal' then
+ if ref.value and ref.value.type == 'nil' then
+ nilDefs[#nilDefs+1] = ref
+ end
+ end
+ end
+
+ if #nilDefs == 0 then
+ return
+ end
+
+ local function check(source)
+ local node = source.node
+ if node.tag == '_ENV' then
+ local ok
+ for _, nilDef in ipairs(nilDefs) do
+ local mode, pathA = guide.getPath(nilDef, source)
+ if mode == 'before'
+ and mayRun(pathA) then
+ ok = nilDef
+ break
+ end
+ end
+ if ok then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ uri = uri,
+ message = lang.script.DIAG_GLOBAL_IN_NIL_ENV,
+ related = {
+ {
+ start = ok.start,
+ finish = ok.finish,
+ uri = uri,
+ }
+ }
+ }
+ end
+ end
+ end
+
+ guide.eachSourceType(ast.ast, 'getglobal', check)
+ guide.eachSourceType(ast.ast, 'setglobal', check)
+end
diff --git a/script-beta/src/core/diagnostics/init.lua b/script-beta/src/core/diagnostics/init.lua
new file mode 100644
index 00000000..0d523f26
--- /dev/null
+++ b/script-beta/src/core/diagnostics/init.lua
@@ -0,0 +1,41 @@
+local files = require 'files'
+local define = require 'proto.define'
+local config = require 'config'
+local await = require 'await'
+
+local function check(uri, name, level, results)
+ if config.config.diagnostics.disable[name] then
+ return
+ end
+ level = config.config.diagnostics.severity[name] or level
+ local severity = define.DiagnosticSeverity[level]
+ local clock = os.clock()
+ require('core.diagnostics.' .. name)(uri, function (result)
+ result.level = severity or result.level
+ result.code = name
+ results[#results+1] = result
+ end, name)
+ local passed = os.clock() - clock
+ if passed >= 0.5 then
+ log.warn(('Diagnostics [%s] @ [%s] takes [%.3f] sec!'):format(name, uri, passed))
+ await.delay()
+ end
+end
+
+return function (uri)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local results = {}
+
+ for name, level in pairs(define.DiagnosticDefaultSeverity) do
+ check(uri, name, level, results)
+ end
+
+ if #results == 0 then
+ return nil
+ end
+
+ return results
+end
diff --git a/script-beta/src/core/diagnostics/lowercase-global.lua b/script-beta/src/core/diagnostics/lowercase-global.lua
new file mode 100644
index 00000000..bc48e1e6
--- /dev/null
+++ b/script-beta/src/core/diagnostics/lowercase-global.lua
@@ -0,0 +1,39 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+local config = require 'config'
+local library = require 'library'
+
+-- 不允许定义首字母小写的全局变量(很可能是拼错或者漏删)
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ local definedGlobal = {}
+ for name in pairs(config.config.diagnostics.globals) do
+ definedGlobal[name] = true
+ end
+ for name in pairs(library.global) do
+ definedGlobal[name] = true
+ end
+
+ guide.eachSourceType(ast.ast, 'setglobal', function (source)
+ local name = guide.getName(source)
+ if definedGlobal[name] then
+ return
+ end
+ local first = name:match '%w'
+ if not first then
+ return
+ end
+ if first:match '%l' then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ message = lang.script.DIAG_LOWERCASE_GLOBAL,
+ }
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/newfield-call.lua b/script-beta/src/core/diagnostics/newfield-call.lua
new file mode 100644
index 00000000..75681cbc
--- /dev/null
+++ b/script-beta/src/core/diagnostics/newfield-call.lua
@@ -0,0 +1,37 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+
+ guide.eachSourceType(ast.ast, 'table', function (source)
+ for i = 1, #source do
+ local field = source[i]
+ if field.type == 'call' then
+ local func = field.node
+ local args = field.args
+ if args then
+ local funcLine = guide.positionOf(lines, func.finish)
+ local argsLine = guide.positionOf(lines, args.start)
+ if argsLine > funcLine then
+ callback {
+ start = field.start,
+ finish = field.finish,
+ message = lang.script('DIAG_PREFIELD_CALL'
+ , text:sub(func.start, func.finish)
+ , text:sub(args.start, args.finish)
+ )
+ }
+ end
+ end
+ end
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/newline-call.lua b/script-beta/src/core/diagnostics/newline-call.lua
new file mode 100644
index 00000000..cb318380
--- /dev/null
+++ b/script-beta/src/core/diagnostics/newline-call.lua
@@ -0,0 +1,38 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ local lines = files.getLines(uri)
+
+ guide.eachSourceType(ast.ast, 'call', function (source)
+ local node = source.node
+ local args = source.args
+ if not args then
+ return
+ end
+
+ -- 必须有其他人在继续使用当前对象
+ if not source.next then
+ return
+ end
+
+ local nodeRow = guide.positionOf(lines, node.finish)
+ local argRow = guide.positionOf(lines, args.start)
+ if nodeRow == argRow then
+ return
+ end
+
+ if #args == 1 then
+ callback {
+ start = args.start,
+ finish = args.finish,
+ message = lang.script.DIAG_PREVIOUS_CALL,
+ }
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/redefined-local.lua b/script-beta/src/core/diagnostics/redefined-local.lua
new file mode 100644
index 00000000..f6176794
--- /dev/null
+++ b/script-beta/src/core/diagnostics/redefined-local.lua
@@ -0,0 +1,32 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ guide.eachSourceType(ast.ast, 'local', function (source)
+ local name = source[1]
+ if name == '_'
+ or name == '_ENV' then
+ return
+ end
+ local exist = guide.getLocal(source, name, source.start-1)
+ if exist then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ message = lang.script('DIAG_REDEFINED_LOCAL', name),
+ related = {
+ {
+ start = exist.start,
+ finish = exist.finish,
+ uri = uri,
+ }
+ },
+ }
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/redundant-parameter.lua b/script-beta/src/core/diagnostics/redundant-parameter.lua
new file mode 100644
index 00000000..ec14188e
--- /dev/null
+++ b/script-beta/src/core/diagnostics/redundant-parameter.lua
@@ -0,0 +1,102 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local vm = require 'vm'
+local lang = require 'language'
+local define = require 'proto.define'
+local await = require 'await'
+
+local function countLibraryArgs(source)
+ local func = vm.getLibrary(source)
+ if not func then
+ return nil
+ end
+ local result = 0
+ if not func.args then
+ return result
+ end
+ if func.args[#func.args].type == '...' then
+ return math.maxinteger
+ end
+ result = result + #func.args
+ return result
+end
+
+local function countCallArgs(source)
+ local result = 0
+ if not source.args then
+ return 0
+ end
+ if source.node and source.node.type == 'getmethod' then
+ result = result + 1
+ end
+ result = result + #source.args
+ return result
+end
+
+local function countFuncArgs(source)
+ local result = 0
+ if not source.args then
+ return result
+ end
+ if source.args[#source.args].type == '...' then
+ return math.maxinteger
+ end
+ if source.parent and source.parent.type == 'setmethod' then
+ result = result + 1
+ end
+ result = result + #source.args
+ return result
+end
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'call', function (source)
+ local callArgs = countCallArgs(source)
+ if callArgs == 0 then
+ return
+ end
+
+ await.delay(function ()
+ return files.globalVersion
+ end)
+
+ local func = source.node
+ local funcArgs
+ vm.eachDef(func, function (info)
+ if info.mode == 'value' then
+ local src = info.source
+ if src.type == 'function' then
+ local args = countFuncArgs(src)
+ if not funcArgs or args > funcArgs then
+ funcArgs = args
+ end
+ end
+ end
+ end)
+
+ funcArgs = funcArgs or countLibraryArgs(func)
+ if not funcArgs then
+ return
+ end
+
+ local delta = callArgs - funcArgs
+ if delta <= 0 then
+ return
+ end
+ for i = #source.args - delta + 1, #source.args do
+ local arg = source.args[i]
+ if arg then
+ callback {
+ start = arg.start,
+ finish = arg.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script('DIAG_OVER_MAX_ARGS', funcArgs, callArgs)
+ }
+ end
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/redundant-value.lua b/script-beta/src/core/diagnostics/redundant-value.lua
new file mode 100644
index 00000000..be483448
--- /dev/null
+++ b/script-beta/src/core/diagnostics/redundant-value.lua
@@ -0,0 +1,24 @@
+local files = require 'files'
+local define = require 'proto.define'
+local lang = require 'language'
+
+return function (uri, callback, code)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ local diags = ast.diags[code]
+ if not diags then
+ return
+ end
+
+ for _, info in ipairs(diags) do
+ callback {
+ start = info.start,
+ finish = info.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script('DIAG_OVER_MAX_VALUES', info.max, info.passed)
+ }
+ end
+end
diff --git a/script-beta/src/core/diagnostics/trailing-space.lua b/script-beta/src/core/diagnostics/trailing-space.lua
new file mode 100644
index 00000000..e54a6e60
--- /dev/null
+++ b/script-beta/src/core/diagnostics/trailing-space.lua
@@ -0,0 +1,55 @@
+local files = require 'files'
+local lang = require 'language'
+local guide = require 'parser.guide'
+
+local function isInString(ast, offset)
+ local result = false
+ guide.eachSourceType(ast, 'string', function (source)
+ if offset >= source.start and offset <= source.finish then
+ result = true
+ end
+ end)
+ return result
+end
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ local text = files.getText(uri)
+ local lines = files.getLines(uri)
+ for i = 1, #lines do
+ local start = lines[i].start
+ local range = lines[i].range
+ local lastChar = text:sub(range, range)
+ if lastChar ~= ' ' and lastChar ~= '\t' then
+ goto NEXT_LINE
+ end
+ if isInString(ast.ast, range) then
+ goto NEXT_LINE
+ end
+ local first = start
+ for n = range - 1, start, -1 do
+ local char = text:sub(n, n)
+ if char ~= ' ' and char ~= '\t' then
+ first = n + 1
+ break
+ end
+ end
+ if first == start then
+ callback {
+ start = first,
+ finish = range,
+ message = lang.script.DIAG_LINE_ONLY_SPACE,
+ }
+ else
+ callback {
+ start = first,
+ finish = range,
+ message = lang.script.DIAG_LINE_POST_SPACE,
+ }
+ end
+ ::NEXT_LINE::
+ end
+end
diff --git a/script-beta/src/core/diagnostics/undefined-env-child.lua b/script-beta/src/core/diagnostics/undefined-env-child.lua
new file mode 100644
index 00000000..df096cb8
--- /dev/null
+++ b/script-beta/src/core/diagnostics/undefined-env-child.lua
@@ -0,0 +1,32 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local vm = require 'vm'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ -- 再遍历一次 getglobal ,找出 _ENV 被重载的情况
+ guide.eachSourceType(ast.ast, 'getglobal', function (source)
+ -- 单独验证自己是否在重载过的 _ENV 中有定义
+ if source.node.tag == '_ENV' then
+ return
+ end
+ local setInENV = vm.eachRef(source, function (info)
+ if info.mode == 'set' then
+ return true
+ end
+ end)
+ if setInENV then
+ return
+ end
+ local key = source[1]
+ callback {
+ start = source.start,
+ finish = source.finish,
+ message = lang.script('DIAG_UNDEF_ENV_CHILD', key),
+ }
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/undefined-global.lua b/script-beta/src/core/diagnostics/undefined-global.lua
new file mode 100644
index 00000000..ed81ced3
--- /dev/null
+++ b/script-beta/src/core/diagnostics/undefined-global.lua
@@ -0,0 +1,63 @@
+local files = require 'files'
+local vm = require 'vm'
+local lang = require 'language'
+local library = require 'library'
+local config = require 'config'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ local globalCache = {}
+
+ -- 遍历全局变量,检查所有没有 mode['set'] 的全局变量
+ local globals = vm.getGlobals(ast.ast)
+ for key, infos in pairs(globals) do
+ if infos.mode['set'] == true then
+ goto CONTINUE
+ end
+ if globalCache[key] then
+ goto CONTINUE
+ end
+ local skey = key and key:match '^s|(.+)$'
+ if not skey then
+ goto CONTINUE
+ end
+ if library.global[skey] then
+ goto CONTINUE
+ end
+ if config.config.diagnostics.globals[skey] then
+ goto CONTINUE
+ end
+ if globalCache[key] == nil then
+ local uris = files.findGlobals(key)
+ for i = 1, #uris do
+ local destAst = files.getAst(uris[i])
+ local destGlobals = vm.getGlobals(destAst.ast)
+ if destGlobals[key] and destGlobals[key].mode['set'] then
+ globalCache[key] = true
+ goto CONTINUE
+ end
+ end
+ end
+ globalCache[key] = false
+ local message = lang.script('DIAG_UNDEF_GLOBAL', skey)
+ local otherVersion = library.other[skey]
+ local customVersion = library.custom[skey]
+ if otherVersion then
+ message = ('%s(%s)'):format(message, lang.script('DIAG_DEFINED_VERSION', table.concat(otherVersion, '/'), config.config.runtime.version))
+ elseif customVersion then
+ message = ('%s(%s)'):format(message, lang.script('DIAG_DEFINED_CUSTOM', table.concat(customVersion, '/')))
+ end
+ for _, info in ipairs(infos) do
+ callback {
+ start = info.source.start,
+ finish = info.source.finish,
+ message = message,
+ }
+ end
+ ::CONTINUE::
+ end
+end
diff --git a/script-beta/src/core/diagnostics/unused-function.lua b/script-beta/src/core/diagnostics/unused-function.lua
new file mode 100644
index 00000000..6c53cdf7
--- /dev/null
+++ b/script-beta/src/core/diagnostics/unused-function.lua
@@ -0,0 +1,45 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local vm = require 'vm'
+local define = require 'proto.define'
+local lang = require 'language'
+local await = require 'await'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ -- 只检查局部函数与全局函数
+ guide.eachSourceType(ast.ast, 'function', function (source)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ if parent.type ~= 'local'
+ and parent.type ~= 'setlocal'
+ and parent.type ~= 'setglobal' then
+ return
+ end
+ local hasSet
+ local hasGet = vm.eachRef(source, function (info)
+ if info.mode == 'get' then
+ return true
+ elseif info.mode == 'set'
+ or info.mode == 'declare' then
+ hasSet = true
+ end
+ end)
+ if not hasGet and hasSet then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_UNUSED_FUNCTION,
+ }
+ end
+ await.delay(function ()
+ return files.globalVersion
+ end)
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/unused-label.lua b/script-beta/src/core/diagnostics/unused-label.lua
new file mode 100644
index 00000000..e6d998ba
--- /dev/null
+++ b/script-beta/src/core/diagnostics/unused-label.lua
@@ -0,0 +1,22 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local define = require 'proto.define'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'label', function (source)
+ if not source.ref then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script('DIAG_UNUSED_LABEL', source[1]),
+ }
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/unused-local.lua b/script-beta/src/core/diagnostics/unused-local.lua
new file mode 100644
index 00000000..22b2e16b
--- /dev/null
+++ b/script-beta/src/core/diagnostics/unused-local.lua
@@ -0,0 +1,46 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local define = require 'proto.define'
+local lang = require 'language'
+
+local function hasGet(loc)
+ if not loc.ref then
+ return false
+ end
+ for _, ref in ipairs(loc.ref) do
+ if ref.type == 'getlocal' then
+ if not ref.next then
+ return true
+ end
+ local nextType = ref.next.type
+ if nextType ~= 'setmethod'
+ and nextType ~= 'setfield'
+ and nextType ~= 'setindex' then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+ guide.eachSourceType(ast.ast, 'local', function (source)
+ local name = source[1]
+ if name == '_'
+ or name == '_ENV' then
+ return
+ end
+ if not hasGet(source) then
+ callback {
+ start = source.start,
+ finish = source.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script('DIAG_UNUSED_LOCAL', name),
+ }
+ end
+ end)
+end
diff --git a/script-beta/src/core/diagnostics/unused-vararg.lua b/script-beta/src/core/diagnostics/unused-vararg.lua
new file mode 100644
index 00000000..74cc08e7
--- /dev/null
+++ b/script-beta/src/core/diagnostics/unused-vararg.lua
@@ -0,0 +1,31 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local define = require 'proto.define'
+local lang = require 'language'
+
+return function (uri, callback)
+ local ast = files.getAst(uri)
+ if not ast then
+ return
+ end
+
+ guide.eachSourceType(ast.ast, 'function', function (source)
+ local args = source.args
+ if not args then
+ return
+ end
+
+ for _, arg in ipairs(args) do
+ if arg.type == '...' then
+ if not arg.ref then
+ callback {
+ start = arg.start,
+ finish = arg.finish,
+ tags = { define.DiagnosticTag.Unnecessary },
+ message = lang.script.DIAG_UNUSED_VARARG,
+ }
+ end
+ end
+ end
+ end)
+end
diff --git a/script-beta/src/core/highlight.lua b/script-beta/src/core/highlight.lua
new file mode 100644
index 00000000..61e3f91a
--- /dev/null
+++ b/script-beta/src/core/highlight.lua
@@ -0,0 +1,230 @@
+local guide = require 'parser.guide'
+local files = require 'files'
+local vm = require 'vm'
+local define = require 'proto.define'
+
+local function ofLocal(source, callback)
+ callback(source)
+ if source.ref then
+ for _, ref in ipairs(source.ref) do
+ callback(ref)
+ end
+ end
+end
+
+local function ofField(source, uri, callback)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ local myKey = guide.getKeyName(source)
+ if parent.type == 'tableindex'
+ or parent.type == 'tablefield' then
+ local tbl = parent.parent
+ vm.eachField(tbl, function (info)
+ if info.key ~= myKey then
+ return
+ end
+ local destUri = guide.getRoot(info.source).uri
+ if destUri ~= uri then
+ return
+ end
+ callback(info.source)
+ end)
+ else
+ vm.eachField(parent.node, function (info)
+ if info.key ~= myKey then
+ return
+ end
+ local destUri = guide.getRoot(info.source).uri
+ if destUri ~= uri then
+ return
+ end
+ callback(info.source)
+ end)
+ end
+end
+
+local function ofIndex(source, uri, callback)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ if parent.type == 'setindex'
+ or parent.type == 'getindex'
+ or parent.type == 'tableindex' then
+ ofField(source, uri, callback)
+ end
+end
+
+local function ofLabel(source, callback)
+ vm.eachRef(source, function (info)
+ callback(info.source)
+ end)
+end
+
+local function find(source, uri, callback)
+ if source.type == 'local' then
+ ofLocal(source, callback)
+ elseif source.type == 'getlocal'
+ or source.type == 'setlocal' then
+ ofLocal(source.node, callback)
+ elseif source.type == 'field'
+ or source.type == 'method' then
+ ofField(source, uri, callback)
+ elseif source.type == 'string'
+ or source.type == 'boolean'
+ or source.type == 'number' then
+ ofIndex(source, uri, callback)
+ callback(source)
+ elseif source.type == 'nil' then
+ callback(source)
+ elseif source.type == 'goto'
+ or source.type == 'label' then
+ ofLabel(source, callback)
+ end
+end
+
+local function checkInIf(source, text, offset)
+ -- 检查 end
+ local endA = source.finish - #'end' + 1
+ local endB = source.finish
+ if offset >= endA
+ and offset <= endB
+ and text:sub(endA, endB) == 'end' then
+ return true
+ end
+ -- 检查每个子模块
+ for _, block in ipairs(source) do
+ for i = 1, #block.keyword, 2 do
+ local start = block.keyword[i]
+ local finish = block.keyword[i+1]
+ if offset >= start and offset <= finish then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+local function makeIf(source, text, callback)
+ -- end
+ local endA = source.finish - #'end' + 1
+ local endB = source.finish
+ if text:sub(endA, endB) == 'end' then
+ callback(endA, endB)
+ end
+ -- 每个子模块
+ for _, block in ipairs(source) do
+ for i = 1, #block.keyword, 2 do
+ local start = block.keyword[i]
+ local finish = block.keyword[i+1]
+ callback(start, finish)
+ end
+ end
+ return false
+end
+
+local function findKeyword(source, text, offset, callback)
+ if source.type == 'do'
+ or source.type == 'function'
+ or source.type == 'loop'
+ or source.type == 'in'
+ or source.type == 'while'
+ or source.type == 'repeat' then
+ local ok
+ for i = 1, #source.keyword, 2 do
+ local start = source.keyword[i]
+ local finish = source.keyword[i+1]
+ if offset >= start and offset <= finish then
+ ok = true
+ break
+ end
+ end
+ if ok then
+ for i = 1, #source.keyword, 2 do
+ local start = source.keyword[i]
+ local finish = source.keyword[i+1]
+ callback(start, finish)
+ end
+ end
+ elseif source.type == 'if' then
+ local ok = checkInIf(source, text, offset)
+ if ok then
+ makeIf(source, text, callback)
+ end
+ end
+end
+
+return function (uri, offset)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local text = files.getText(uri)
+ local results = {}
+ local mark = {}
+ guide.eachSourceContain(ast.ast, offset, function (source)
+ find(source, uri, function (target)
+ local kind
+ if target.type == 'getfield' then
+ target = target.field
+ kind = define.DocumentHighlightKind.Read
+ elseif target.type == 'setfield'
+ or target.type == 'tablefield' then
+ target = target.field
+ kind = define.DocumentHighlightKind.Write
+ elseif target.type == 'getmethod' then
+ target = target.method
+ kind = define.DocumentHighlightKind.Read
+ elseif target.type == 'setmethod' then
+ target = target.method
+ kind = define.DocumentHighlightKind.Write
+ elseif target.type == 'getindex' then
+ target = target.index
+ kind = define.DocumentHighlightKind.Read
+ elseif target.type == 'setindex'
+ or target.type == 'tableindex' then
+ target = target.index
+ kind = define.DocumentHighlightKind.Write
+ elseif target.type == 'getlocal'
+ or target.type == 'getglobal'
+ or target.type == 'goto' then
+ kind = define.DocumentHighlightKind.Read
+ elseif target.type == 'setlocal'
+ or target.type == 'local'
+ or target.type == 'setglobal'
+ or target.type == 'label' then
+ kind = define.DocumentHighlightKind.Write
+ elseif target.type == 'string'
+ or target.type == 'boolean'
+ or target.type == 'number'
+ or target.type == 'nil' then
+ kind = define.DocumentHighlightKind.Text
+ else
+ log.warn('Unknow target.type:', target.type)
+ return
+ end
+ if mark[target] then
+ return
+ end
+ mark[target] = true
+ results[#results+1] = {
+ start = target.start,
+ finish = target.finish,
+ kind = kind,
+ }
+ end)
+ findKeyword(source, text, offset, function (start, finish)
+ results[#results+1] = {
+ start = start,
+ finish = finish,
+ kind = define.DocumentHighlightKind.Write
+ }
+ end)
+ end)
+ if #results == 0 then
+ return nil
+ end
+ return results
+end
diff --git a/script-beta/src/core/hover/arg.lua b/script-beta/src/core/hover/arg.lua
new file mode 100644
index 00000000..be344488
--- /dev/null
+++ b/script-beta/src/core/hover/arg.lua
@@ -0,0 +1,20 @@
+local guide = require 'parser.guide'
+local vm = require 'vm'
+
+local function asFunction(source)
+ if not source.args then
+ return ''
+ end
+ local args = {}
+ for i = 1, #source.args do
+ local arg = source.args[i]
+ args[i] = ('%s: %s'):format(guide.getName(arg), vm.getType(arg))
+ end
+ return table.concat(args, ', ')
+end
+
+return function (source)
+ if source.type == 'function' then
+ return asFunction(source)
+ end
+end
diff --git a/script-beta/src/core/hover/init.lua b/script-beta/src/core/hover/init.lua
new file mode 100644
index 00000000..b99c14b2
--- /dev/null
+++ b/script-beta/src/core/hover/init.lua
@@ -0,0 +1,56 @@
+local files = require 'files'
+local guide = require 'parser.guide'
+local vm = require 'vm'
+local getLabel = require 'core.hover.label'
+
+local function getHoverAsFunction(source)
+ local values = vm.getValue(source)
+ local labels = {}
+ for _, value in ipairs(values) do
+ if value.type == 'function' then
+ labels[#labels+1] = getLabel(value.source)
+ end
+ end
+
+ local label = table.concat(labels, '\n')
+ return {
+ label = label,
+ source = source,
+ }
+end
+
+local function getHoverAsValue(source)
+ local label = getLabel(source)
+ return {
+ label = label,
+ source = source,
+ }
+end
+
+local function getHover(source)
+ local isFunction = vm.hasType(source, 'function')
+ if isFunction then
+ return getHoverAsFunction(source)
+ else
+ return getHoverAsValue(source)
+ end
+end
+
+return function (uri, offset)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local hover = guide.eachSourceContain(ast.ast, offset, function (source)
+ if source.type == 'local'
+ or source.type == 'setlocal'
+ or source.type == 'getlocal'
+ or source.type == 'setglobal'
+ or source.type == 'getglobal'
+ or source.type == 'field'
+ or source.type == 'method' then
+ return getHover(source)
+ end
+ end)
+ return hover
+end
diff --git a/script-beta/src/core/hover/label.lua b/script-beta/src/core/hover/label.lua
new file mode 100644
index 00000000..72ce60f4
--- /dev/null
+++ b/script-beta/src/core/hover/label.lua
@@ -0,0 +1,103 @@
+local buildName = require 'core.hover.name'
+local buildArg = require 'core.hover.arg'
+local buildReturn = require 'core.hover.return'
+local buildTable = require 'core.hover.table'
+local vm = require 'vm'
+local util = require 'utility'
+
+local function asFunction(source)
+ local name = buildName(source)
+ local arg = buildArg(source)
+ local rtn = buildReturn(source)
+ local lines = {}
+ lines[1] = ('function %s(%s)'):format(name, arg)
+ lines[2] = rtn
+ return table.concat(lines, '\n')
+end
+
+local function asLocal(source)
+ local name = buildName(source)
+ local type = vm.getType(source)
+ local literal = vm.getLiteral(source)
+ if type == 'table' then
+ type = buildTable(source)
+ end
+ if literal == nil then
+ return ('local %s: %s'):format(name, type)
+ else
+ return ('local %s: %s = %s'):format(name, type, util.viewLiteral(literal))
+ end
+end
+
+local function asGlobal(source)
+ local name = buildName(source)
+ local type = vm.getType(source)
+ local literal = vm.getLiteral(source)
+ if type == 'table' then
+ type = buildTable(source)
+ end
+ if literal == nil then
+ return ('global %s: %s'):format(name, type)
+ else
+ return ('global %s: %s = %s'):format(name, type, util.viewLiteral(literal))
+ end
+end
+
+local function isGlobalField(source)
+ if source.type == 'field'
+ or source.type == 'method' then
+ source = source.parent
+ end
+ if source.type == 'setfield'
+ or source.type == 'getfield'
+ or source.type == 'setmethod'
+ or source.type == 'getmethod'
+ or source.type == 'tablefield' then
+ local node = source.node
+ if node.type == 'setglobal'
+ or node.type == 'getglobal' then
+ return true
+ end
+ return isGlobalField(node)
+ else
+ return false
+ end
+end
+
+local function asField(source)
+ if isGlobalField(source) then
+ return asGlobal(source)
+ end
+ local name = buildName(source)
+ local type = vm.getType(source)
+ local literal = vm.getLiteral(source)
+ if type == 'table' then
+ type = buildTable(source)
+ end
+ if literal == nil then
+ return ('field %s: %s'):format(name, type)
+ else
+ return ('field %s: %s = %s'):format(name, type, util.viewLiteral(literal))
+ end
+end
+
+return function (source)
+ if source.type == 'function' then
+ return asFunction(source)
+ elseif source.type == 'local'
+ or source.type == 'getlocal'
+ or source.type == 'setlocal' then
+ return asLocal(source)
+ elseif source.type == 'setglobal'
+ or source.type == 'getglobal' then
+ return asGlobal(source)
+ elseif source.type == 'getfield'
+ or source.type == 'setfield'
+ or source.type == 'getmethod'
+ or source.type == 'setmethod'
+ or source.type == 'tablefield'
+ or source.type == 'field'
+ or source.type == 'method' then
+ return asField(source)
+ end
+end
diff --git a/script-beta/src/core/hover/name.lua b/script-beta/src/core/hover/name.lua
new file mode 100644
index 00000000..a22a8b5a
--- /dev/null
+++ b/script-beta/src/core/hover/name.lua
@@ -0,0 +1,64 @@
+local guide = require 'parser.guide'
+local vm = require 'vm'
+
+local function asLocal(source)
+ return guide.getName(source)
+end
+
+local function asMethod(source)
+ local class = vm.eachField(source.node, function (info)
+ if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
+ if info.value and info.value.type == 'string' then
+ return info.value[1]
+ end
+ end
+ end)
+ local node = class or guide.getName(source.node) or '?'
+ local method = guide.getName(source)
+ return ('%s:%s'):format(node, method)
+end
+
+local function asField(source)
+ local class = vm.eachField(source.node, function (info)
+ if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
+ if info.value and info.value.type == 'string' then
+ return info.value[1]
+ end
+ end
+ end)
+ local node = class or guide.getName(source.node) or '?'
+ local method = guide.getName(source)
+ return ('%s.%s'):format(node, method)
+end
+
+local function asGlobal(source)
+ return guide.getName(source)
+end
+
+local function buildName(source)
+ if source.type == 'local'
+ or source.type == 'getlocal'
+ or source.type == 'setlocal' then
+ return asLocal(source) or ''
+ end
+ if source.type == 'setglobal'
+ or source.type == 'getglobal' then
+ return asGlobal(source) or ''
+ end
+ if source.type == 'setmethod'
+ or source.type == 'getmethod' then
+ return asMethod(source) or ''
+ end
+ if source.type == 'setfield'
+ or source.tyoe == 'getfield'
+ or source.type == 'tablefield' then
+ return asField(source) or ''
+ end
+ local parent = source.parent
+ if parent then
+ return buildName(parent)
+ end
+ return ''
+end
+
+return buildName
diff --git a/script-beta/src/core/hover/return.lua b/script-beta/src/core/hover/return.lua
new file mode 100644
index 00000000..c22626a6
--- /dev/null
+++ b/script-beta/src/core/hover/return.lua
@@ -0,0 +1,34 @@
+local guide = require 'parser.guide'
+local vm = require 'vm'
+
+local function asFunction(source)
+ if not source.returns then
+ return nil
+ end
+ local returns = {}
+ for _, rtn in ipairs(source.returns) do
+ for i = 1, #rtn do
+ local values = vm.getValue(rtn[i])
+ returns[#returns+1] = values
+ end
+ break
+ end
+ if #returns == 0 then
+ return nil
+ end
+ local lines = {}
+ for i = 1, #returns do
+ if i == 1 then
+ lines[i] = (' -> %s'):format(vm.viewType(returns[i]))
+ else
+ lines[i] = ('% 3d. %s'):format(i, returns[i])
+ end
+ end
+ return table.concat(lines, '\n')
+end
+
+return function (source)
+ if source.type == 'function' then
+ return asFunction(source)
+ end
+end
diff --git a/script-beta/src/core/hover/table.lua b/script-beta/src/core/hover/table.lua
new file mode 100644
index 00000000..9ed86692
--- /dev/null
+++ b/script-beta/src/core/hover/table.lua
@@ -0,0 +1,35 @@
+local vm = require 'vm'
+
+local function checkClass(source)
+end
+
+return function (source)
+ local fields = {}
+ local class
+ vm.eachField(source, function (info)
+ if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
+ if info.value and info.value.type == 'string' then
+ class = info.value[1]
+ end
+ end
+ local type = vm.getType(info.source)
+ fields[#fields+1] = ('%s'):format(type)
+ end)
+ local fieldsBuf
+ if #fields == 0 then
+ fieldsBuf = '{}'
+ else
+ local lines = {}
+ lines[#lines+1] = '{'
+ for _, field in ipairs(fields) do
+ lines[#lines+1] = ' ' .. field
+ end
+ lines[#lines+1] = '}'
+ fieldsBuf = table.concat(lines, '\n')
+ end
+ if class then
+ return ('%s %s'):format(class, fieldsBuf)
+ else
+ return fieldsBuf
+ end
+end
diff --git a/script-beta/src/core/reference.lua b/script-beta/src/core/reference.lua
new file mode 100644
index 00000000..7e265e97
--- /dev/null
+++ b/script-beta/src/core/reference.lua
@@ -0,0 +1,84 @@
+local guide = require 'parser.guide'
+local files = require 'files'
+local vm = require 'vm'
+
+local function isFunction(source, offset)
+ if source.type ~= 'function' then
+ return false
+ end
+ -- 必须点在 `function` 这个单词上才能查找函数引用
+ return offset >= source.start and offset < source.start + #'function'
+end
+
+local function findRef(source, offset, callback)
+ if source.type ~= 'local'
+ and source.type ~= 'getlocal'
+ and source.type ~= 'setlocal'
+ and source.type ~= 'setglobal'
+ and source.type ~= 'getglobal'
+ and source.type ~= 'field'
+ and source.type ~= 'tablefield'
+ and source.type ~= 'method'
+ and source.type ~= 'string'
+ and source.type ~= 'number'
+ and source.type ~= 'boolean'
+ and source.type ~= 'goto'
+ and source.type ~= 'label'
+ and not isFunction(source, offset) then
+ return
+ end
+ vm.eachRef(source, function (info)
+ if info.mode == 'declare'
+ or info.mode == 'set'
+ or info.mode == 'get'
+ or info.mode == 'return' then
+ local src = info.source
+ local root = guide.getRoot(src)
+ local uri = root.uri
+ if src.type == 'setfield'
+ or src.type == 'getfield'
+ or src.type == 'tablefield' then
+ callback(src.field, uri)
+ elseif src.type == 'setindex'
+ or src.type == 'getindex'
+ or src.type == 'tableindex' then
+ callback(src.index, uri)
+ elseif src.type == 'getmethod'
+ or src.type == 'setmethod' then
+ callback(src.method, uri)
+ else
+ callback(src, uri)
+ end
+ end
+ if info.mode == 'value' then
+ local src = info.source
+ local root = guide.getRoot(src)
+ local uri = root.uri
+ if src.type == 'function' then
+ if src.parent.type == 'return' then
+ callback(src, uri)
+ end
+ end
+ end
+ end)
+end
+
+return function (uri, offset)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local results = {}
+ guide.eachSourceContain(ast.ast, offset, function (source)
+ findRef(source, offset, function (target, uri)
+ results[#results+1] = {
+ target = target,
+ uri = files.getOriginUri(uri),
+ }
+ end)
+ end)
+ if #results == 0 then
+ return nil
+ end
+ return results
+end
diff --git a/script-beta/src/core/rename.lua b/script-beta/src/core/rename.lua
new file mode 100644
index 00000000..3e4512da
--- /dev/null
+++ b/script-beta/src/core/rename.lua
@@ -0,0 +1,374 @@
+local files = require 'files'
+local vm = require 'vm'
+local guide = require 'parser.guide'
+local proto = require 'proto'
+local define = require 'proto.define'
+local util = require 'utility'
+
+local Forcing
+
+local function askForcing(str)
+ if TEST then
+ return true
+ end
+ if Forcing == false then
+ return false
+ end
+ local version = files.globalVersion
+ -- TODO
+ local item = proto.awaitRequest('window/showMessageRequest', {
+ type = define.MessageType.Warning,
+ message = ('[%s]不是有效的标识符,是否强制替换?'):format(str),
+ actions = {
+ {
+ title = '强制替换',
+ },
+ {
+ title = '取消',
+ },
+ }
+ })
+ if version ~= files.globalVersion then
+ Forcing = false
+ proto.notify('window/showMessage', {
+ type = define.MessageType.Warning,
+ message = '文件发生了变化,替换取消。'
+ })
+ return false
+ end
+ if not item then
+ Forcing = false
+ return false
+ end
+ if item.title == '强制替换' then
+ Forcing = true
+ return true
+ else
+ Forcing = false
+ return false
+ end
+end
+
+local function askForMultiChange(results, newname)
+ if TEST then
+ return true
+ end
+ local uris = {}
+ for _, result in ipairs(results) do
+ local uri = result.uri
+ if not uris[uri] then
+ uris[uri] = 0
+ uris[#uris+1] = uri
+ end
+ uris[uri] = uris[uri] + 1
+ end
+ if #uris <= 1 then
+ return true
+ end
+
+ local version = files.globalVersion
+ -- TODO
+ local item = proto.awaitRequest('window/showMessageRequest', {
+ type = define.MessageType.Warning,
+ message = ('将修改 %d 个文件,共 %d 处。'):format(
+ #uris,
+ #results
+ ),
+ actions = {
+ {
+ title = '继续',
+ },
+ {
+ title = '放弃',
+ },
+ }
+ })
+ if version ~= files.globalVersion then
+ proto.notify('window/showMessage', {
+ type = define.MessageType.Warning,
+ message = '文件发生了变化,替换取消。'
+ })
+ return false
+ end
+ if item and item.title == '继续' then
+ local fileList = {}
+ for _, uri in ipairs(uris) do
+ fileList[#fileList+1] = ('%s (%d)'):format(uri, uris[uri])
+ end
+
+ log.debug(('Renamed [%s]\r\n%s'):format(newname, table.concat(fileList, '\r\n')))
+ return true
+ end
+ return false
+end
+
+local function trim(str)
+ return str:match '^%s*(%S+)%s*$'
+end
+
+local function isValidName(str)
+ return str:match '^[%a_][%w_]*$'
+end
+
+local function isValidGlobal(str)
+ for s in str:gmatch '[^%.]*' do
+ if not isValidName(trim(s)) then
+ return false
+ end
+ end
+ return true
+end
+
+local function isValidFunctionName(str)
+ if isValidGlobal(str) then
+ return true
+ end
+ local pos = str:find(':', 1, true)
+ if not pos then
+ return false
+ end
+ return isValidGlobal(trim(str:sub(1, pos-1)))
+ and isValidName(trim(str:sub(pos+1)))
+end
+
+local function isFunctionGlobalName(source)
+ local parent = source.parent
+ if parent.type ~= 'setglobal' then
+ return false
+ end
+ local value = parent.value
+ if not value.type ~= 'function' then
+ return false
+ end
+ return value.start <= parent.start
+end
+
+local function renameLocal(source, newname, callback)
+ if isValidName(newname) then
+ callback(source, source.start, source.finish, newname)
+ return
+ end
+ if askForcing(newname) then
+ callback(source, source.start, source.finish, newname)
+ end
+end
+
+local function renameField(source, newname, callback)
+ if isValidName(newname) then
+ callback(source, source.start, source.finish, newname)
+ return true
+ end
+ local parent = source.parent
+ if parent.type == 'setfield'
+ or parent.type == 'getfield' then
+ local dot = parent.dot
+ local newstr = '[' .. util.viewString(newname) .. ']'
+ callback(source, dot.start, source.finish, newstr)
+ elseif parent.type == 'tablefield' then
+ local newstr = '[' .. util.viewString(newname) .. ']'
+ callback(source, source.start, source.finish, newstr)
+ elseif parent.type == 'getmethod' then
+ if not askForcing(newname) then
+ return false
+ end
+ callback(source, source.start, source.finish, newname)
+ elseif parent.type == 'setmethod' then
+ local uri = guide.getRoot(source).uri
+ local text = files.getText(uri)
+ local func = parent.value
+ -- function mt:name () end --> mt['newname'] = function (self) end
+ local newstr = string.format('%s[%s] = function '
+ , text:sub(parent.start, parent.node.finish)
+ , util.viewString(newname)
+ )
+ callback(source, func.start, parent.finish, newstr)
+ local pl = text:find('(', parent.finish, true)
+ if pl then
+ if func.args then
+ callback(source, pl + 1, pl, 'self, ')
+ else
+ callback(source, pl + 1, pl, 'self')
+ end
+ end
+ end
+ return true
+end
+
+local function renameGlobal(source, newname, callback)
+ if isValidGlobal(newname) then
+ callback(source, source.start, source.finish, newname)
+ return true
+ end
+ if isValidFunctionName(newname) then
+ if not isFunctionGlobalName(source) then
+ askForcing(newname)
+ end
+ callback(source, source.start, source.finish, newname)
+ return true
+ end
+ local newstr = '_ENV[' .. util.viewString(newname) .. ']'
+ -- function name () end --> _ENV['newname'] = function () end
+ if source.value and source.value.type == 'function'
+ and source.value.start < source.start then
+ callback(source, source.value.start, source.finish, newstr .. ' = function ')
+ return true
+ end
+ callback(source, source.start, source.finish, newstr)
+ return true
+end
+
+local function ofLocal(source, newname, callback)
+ renameLocal(source, newname, callback)
+ if source.ref then
+ for _, ref in ipairs(source.ref) do
+ renameLocal(ref, newname, callback)
+ end
+ end
+end
+
+local function ofField(source, newname, callback)
+ return vm.eachRef(source, function (info)
+ local src = info.source
+ if src.type == 'tablefield'
+ or src.type == 'getfield'
+ or src.type == 'setfield' then
+ src = src.field
+ elseif src.type == 'tableindex'
+ or src.type == 'getindex'
+ or src.type == 'setindex' then
+ src = src.index
+ elseif src.type == 'getmethod'
+ or src.type == 'setmethod' then
+ src = src.method
+ end
+ if src.type == 'string' then
+ local quo = src[2]
+ local text = util.viewString(newname, quo)
+ callback(src, src.start, src.finish, text)
+ return
+ elseif src.type == 'field'
+ or src.type == 'method' then
+ local suc = renameField(src, newname, callback)
+ if not suc then
+ return false
+ end
+ elseif src.type == 'setglobal'
+ or src.type == 'getglobal' then
+ local suc = renameGlobal(src, newname, callback)
+ if not suc then
+ return false
+ end
+ end
+ end)
+end
+
+local function rename(source, newname, callback)
+ if source.type == 'label'
+ or source.type == 'goto' then
+ if not isValidName(newname) and not askForcing(newname)then
+ return false
+ end
+ vm.eachRef(source, function (info)
+ callback(info.source, info.source.start, info.source.finish, newname)
+ end)
+ elseif source.type == 'local' then
+ return ofLocal(source, newname, callback)
+ elseif source.type == 'setlocal'
+ or source.type == 'getlocal' then
+ return ofLocal(source.node, newname, callback)
+ elseif source.type == 'field'
+ or source.type == 'method'
+ or source.type == 'tablefield'
+ or source.type == 'string'
+ or source.type == 'setglobal'
+ or source.type == 'getglobal' then
+ return ofField(source, newname, callback)
+ end
+ return true
+end
+
+local function prepareRename(source)
+ if source.type == 'label'
+ or source.type == 'goto'
+ or source.type == 'local'
+ or source.type == 'setlocal'
+ or source.type == 'getlocal'
+ or source.type == 'field'
+ or source.type == 'method'
+ or source.type == 'tablefield'
+ or source.type == 'setglobal'
+ or source.type == 'getglobal' then
+ return source, source[1]
+ elseif source.type == 'string' then
+ local parent = source.parent
+ if not parent then
+ return nil
+ end
+ if parent.type == 'setindex'
+ or parent.type == 'getindex'
+ or parent.type == 'tableindex' then
+ return source, source[1]
+ end
+ return nil
+ end
+ return nil
+end
+
+local m = {}
+
+function m.rename(uri, pos, newname)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+ local results = {}
+
+ guide.eachSourceContain(ast.ast, pos, function(source)
+ rename(source, newname, function (target, start, finish, text)
+ results[#results+1] = {
+ start = start,
+ finish = finish,
+ text = text,
+ uri = guide.getRoot(target).uri,
+ }
+ end)
+ end)
+
+ if Forcing == false then
+ Forcing = nil
+ return nil
+ end
+
+ if #results == 0 then
+ return nil
+ end
+
+ if not askForMultiChange(results, newname) then
+ return nil
+ end
+
+ return results
+end
+
+function m.prepareRename(uri, pos)
+ local ast = files.getAst(uri)
+ if not ast then
+ return nil
+ end
+
+ local result
+ guide.eachSourceContain(ast.ast, pos, function(source)
+ local res, text = prepareRename(source)
+ if res then
+ result = {
+ start = source.start,
+ finish = source.finish,
+ text = text,
+ }
+ end
+ end)
+
+ return result
+end
+
+return m
diff --git a/script-beta/src/define/DiagnosticDefaultSeverity.lua b/script-beta/src/define/DiagnosticDefaultSeverity.lua
new file mode 100644
index 00000000..cc26cab2
--- /dev/null
+++ b/script-beta/src/define/DiagnosticDefaultSeverity.lua
@@ -0,0 +1,21 @@
+return {
+ ['unused-local'] = 'Hint',
+ ['unused-function'] = 'Hint',
+ ['undefined-global'] = 'Warning',
+ ['global-in-nil-env'] = 'Warning',
+ ['unused-label'] = 'Hint',
+ ['unused-vararg'] = 'Hint',
+ ['trailing-space'] = 'Hint',
+ ['redefined-local'] = 'Hint',
+ ['newline-call'] = 'Information',
+ ['redundant-parameter'] = 'Hint',
+ ['ambiguity-1'] = 'Warning',
+ ['lowercase-global'] = 'Information',
+ ['undefined-env-child'] = 'Information',
+ ['duplicate-index'] = 'Warning',
+ ['duplicate-method'] = 'Warning',
+ ['empty-block'] = 'Hint',
+ ['redundant-value'] = 'Hint',
+ ['emmy-lua'] = 'Warning',
+ ['set-const'] = 'Error',
+}
diff --git a/script-beta/src/define/DiagnosticSeverity.lua b/script-beta/src/define/DiagnosticSeverity.lua
new file mode 100644
index 00000000..05bd3659
--- /dev/null
+++ b/script-beta/src/define/DiagnosticSeverity.lua
@@ -0,0 +1,6 @@
+return {
+ Error = 1,
+ Warning = 2,
+ Information = 3,
+ Hint = 4,
+}
diff --git a/script-beta/src/define/ErrorCodes.lua b/script-beta/src/define/ErrorCodes.lua
new file mode 100644
index 00000000..befb5630
--- /dev/null
+++ b/script-beta/src/define/ErrorCodes.lua
@@ -0,0 +1,16 @@
+
+return {
+ -- Defined by JSON RPC
+ ParseError = -32700,
+ InvalidRequest = -32600,
+ MethodNotFound = -32601,
+ InvalidParams = -32602,
+ InternalError = -32603,
+ serverErrorStart = -32099,
+ serverErrorEnd = -32000,
+ ServerNotInitialized = -32002,
+ UnknownErrorCode = -32001,
+
+ -- Defined by the protocol.
+ RequestCancelled = -32800,
+}
diff --git a/script-beta/src/doctor.lua b/script-beta/src/doctor.lua
new file mode 100644
index 00000000..08ec69cf
--- /dev/null
+++ b/script-beta/src/doctor.lua
@@ -0,0 +1,380 @@
+local type = type
+local next = next
+local ipairs = ipairs
+local rawget = rawget
+local pcall = pcall
+local getregistry = debug.getregistry
+local getmetatable = debug.getmetatable
+local getupvalue = debug.getupvalue
+local getuservalue = debug.getuservalue
+local getlocal = debug.getlocal
+local getinfo = debug.getinfo
+local maxinterger = math.maxinteger
+local mathType = math.type
+local tableConcat = table.concat
+local _G = _G
+local registry = getregistry()
+local tableSort = table.sort
+
+_ENV = nil
+
+local m = {}
+
+local function getTostring(obj)
+ local mt = getmetatable(obj)
+ if not mt then
+ return nil
+ end
+ local toString = rawget(mt, '__tostring')
+ if not toString then
+ return nil
+ end
+ local suc, str = pcall(toString, obj)
+ if not suc then
+ return nil
+ end
+ if type(str) ~= 'string' then
+ return nil
+ end
+ return str
+end
+
+local function formatName(obj)
+ local tp = type(obj)
+ if tp == 'nil' then
+ return 'nil:nil'
+ elseif tp == 'boolean' then
+ if obj == true then
+ return 'boolean:true'
+ else
+ return 'boolean:false'
+ end
+ elseif tp == 'number' then
+ if mathType(obj) == 'integer' then
+ return ('number:%d'):format(obj)
+ else
+ -- 如果浮点数可以完全表示为整数,那么就转换为整数
+ local str = ('%.10f'):format(obj):gsub('%.?[0]+$', '')
+ if str:find('.', 1, true) then
+ -- 如果浮点数不能表示为整数,那么再加上它的精确表示法
+ str = ('%s(%q)'):format(str, obj)
+ end
+ return 'number:' .. str
+ end
+ elseif tp == 'string' then
+ local str = ('%q'):format(obj)
+ if #str > 100 then
+ local new = ('%s...(len=%d)'):format(str:sub(1, 100), #str)
+ if #new < #str then
+ str = new
+ end
+ end
+ return 'string:' .. str
+ elseif tp == 'function' then
+ local info = getinfo(obj, 'S')
+ if info.what == 'c' then
+ return ('function:%p(C)'):format(obj)
+ elseif info.what == 'main' then
+ return ('function:%p(main)'):format(obj)
+ else
+ return ('function:%p(%s:%d-%d)'):format(obj, info.source, info.linedefined, info.lastlinedefined)
+ end
+ elseif tp == 'table' then
+ local id = getTostring(obj)
+ if not id then
+ if obj == _G then
+ id = '_G'
+ elseif obj == registry then
+ id = 'registry'
+ end
+ end
+ if id then
+ return ('table:%p(%s)'):format(obj, id)
+ else
+ return ('table:%p'):format(obj)
+ end
+ elseif tp == 'userdata' then
+ local id = getTostring(obj)
+ if id then
+ return ('userdata:%p(%s)'):format(obj, id)
+ else
+ return ('userdata:%p'):format(obj)
+ end
+ else
+ return ('%s:%p'):format(tp, obj)
+ end
+end
+
+--- 内存快照
+---@return table
+function m.snapshot()
+ local mark = {}
+ local find
+
+ local function findTable(t, result)
+ result = result or {}
+ local mt = getmetatable(t)
+ local wk, wv
+ if mt then
+ local mode = rawget(mt, '__mode')
+ if type(mode) == 'string' then
+ if mode:find('k', 1, true) then
+ wk = true
+ end
+ if mode:find('v', 1, true) then
+ wv = true
+ end
+ end
+ end
+ for k, v in next, t do
+ if not wk then
+ local keyInfo = find(k)
+ if keyInfo then
+ result[#result+1] = {
+ type = 'key',
+ name = formatName(k),
+ info = keyInfo,
+ }
+ end
+ end
+ if not wv then
+ local valueInfo = find(v)
+ if valueInfo then
+ result[#result+1] = {
+ type = 'field',
+ name = formatName(k) .. '|' .. formatName(v),
+ info = valueInfo,
+ }
+ end
+ end
+ end
+ local MTInfo = find(getmetatable(t))
+ if MTInfo then
+ result[#result+1] = {
+ type = 'metatable',
+ name = '',
+ info = MTInfo,
+ }
+ end
+ if #result == 0 then
+ return nil
+ end
+ return result
+ end
+
+ local function findFunction(f, result, trd, stack)
+ result = result or {}
+ for i = 1, maxinterger do
+ local n, v = getupvalue(f, i)
+ if not n then
+ break
+ end
+ local valueInfo = find(v)
+ if valueInfo then
+ result[#result+1] = {
+ type = 'upvalue',
+ name = n,
+ info = valueInfo,
+ }
+ end
+ end
+ if trd then
+ for i = 1, maxinterger do
+ local n, l = getlocal(trd, stack, i)
+ if not n then
+ break
+ end
+ local valueInfo = find(l)
+ if valueInfo then
+ result[#result+1] = {
+ type = 'local',
+ name = n,
+ info = valueInfo,
+ }
+ end
+ end
+ end
+ if #result == 0 then
+ return nil
+ end
+ return result
+ end
+
+ local function findUserData(u, result)
+ result = result or {}
+ for i = 1, maxinterger do
+ local v, b = getuservalue(u, i)
+ if not b then
+ break
+ end
+ local valueInfo = find(v)
+ if valueInfo then
+ result[#result+1] = {
+ type = 'uservalue',
+ name = formatName(i),
+ info = valueInfo,
+ }
+ end
+ end
+ local MTInfo = find(getmetatable(u))
+ if MTInfo then
+ result[#result+1] = {
+ type = 'metatable',
+ name = '',
+ info = MTInfo,
+ }
+ end
+ if #result == 0 then
+ return nil
+ end
+ return result
+ end
+
+ local function findThread(trd, result)
+ -- 不查找主线程,主线程一定是临时的(视为弱引用)
+ if trd == registry[1] then
+ return nil
+ end
+ result = result or {}
+
+ for i = 1, maxinterger do
+ local info = getinfo(trd, i, 'Sf')
+ if not info then
+ break
+ end
+ local funcInfo = find(info.func, trd, i)
+ if funcInfo then
+ result[#result+1] = {
+ type = 'stack',
+ name = i .. '@' .. formatName(info.func),
+ info = funcInfo,
+ }
+ end
+ end
+
+ if #result == 0 then
+ return nil
+ end
+ return result
+ end
+
+ function find(obj, trd, stack)
+ if mark[obj] then
+ return mark[obj]
+ end
+ local tp = type(obj)
+ if tp == 'table' then
+ mark[obj] = {}
+ mark[obj] = findTable(obj, mark[obj])
+ elseif tp == 'function' then
+ mark[obj] = {}
+ mark[obj] = findFunction(obj, mark[obj], trd, stack)
+ elseif tp == 'userdata' then
+ mark[obj] = {}
+ mark[obj] = findUserData(obj, mark[obj])
+ elseif tp == 'thread' then
+ mark[obj] = {}
+ mark[obj] = findThread(obj, mark[obj])
+ else
+ return nil
+ end
+ if mark[obj] then
+ mark[obj].object = obj
+ end
+ return mark[obj]
+ end
+
+ return {
+ name = formatName(registry),
+ type = 'root',
+ info = find(registry),
+ }
+end
+
+--- 寻找对象的引用
+---@return string
+function m.catch(...)
+ local targets = {}
+ for _, target in ipairs {...} do
+ targets[target] = true
+ end
+ local report = m.snapshot()
+ local path = {}
+ local result = {}
+ local mark = {}
+
+ local function push()
+ result[#result+1] = tableConcat(path, ' => ')
+ end
+
+ local function search(t)
+ path[#path+1] = ('(%s)%s'):format(t.type, t.name)
+ local addTarget
+ if targets[t.info.object] then
+ targets[t.info.object] = nil
+ addTarget = t.info.object
+ push(t)
+ end
+ if not mark[t.info] then
+ mark[t.info] = true
+ for _, obj in ipairs(t.info) do
+ search(obj)
+ end
+ end
+ path[#path] = nil
+ if addTarget then
+ targets[addTarget] = true
+ end
+ end
+
+ search(report)
+
+ return result
+end
+
+--- 生成一个报告
+---@return string
+function m.report()
+ local snapshot = m.snapshot()
+ local cache = {}
+ local mark = {}
+
+ local function scan(t)
+ local obj = t.info.object
+ local tp = type(obj)
+ if tp == 'table'
+ or tp == 'userdata'
+ or tp == 'function'
+ or tp == 'string'
+ or tp == 'thread' then
+ local point = ('%p'):format(obj)
+ if not cache[point] then
+ cache[point] = {
+ point = point,
+ count = 0,
+ name = formatName(obj),
+ }
+ end
+ cache[point].count = cache[point].count + 1
+ end
+ if not mark[t.info] then
+ mark[t.info] = true
+ for _, child in ipairs(t.info) do
+ scan(child)
+ end
+ end
+ end
+
+ scan(snapshot)
+
+ local list = {}
+ for _, info in next, cache do
+ list[#list+1] = info
+ end
+ tableSort(list, function (a, b)
+ return a.name < b.name
+ end)
+ return list
+end
+
+return m
diff --git a/script-beta/src/file-uri.lua b/script-beta/src/file-uri.lua
new file mode 100644
index 00000000..8acd4f64
--- /dev/null
+++ b/script-beta/src/file-uri.lua
@@ -0,0 +1,108 @@
+local platform = require 'bee.platform'
+
+local esc = {
+ [':'] = '%3A',
+ ['/'] = '%2F',
+ ['?'] = '%3F',
+ ['#'] = '%23',
+ ['['] = '%5B',
+ [']'] = '%5D',
+ ['@'] = '%40',
+
+ ['!'] = '%21', -- sub-delims
+ ['$'] = '%24',
+ ['&'] = '%26',
+ ["'"] = '%27',
+ ['('] = '%28',
+ [')'] = '%29',
+ ['*'] = '%2A',
+ ['+'] = '%2B',
+ [','] = '%2C',
+ [';'] = '%3B',
+ ['='] = '%3D',
+
+ [' '] = '%20',
+}
+
+local escPatt = '[^%w%-%.%_%~%/]'
+
+local function normalize(str)
+ return str:gsub('%%(%x%x)', function (n)
+ return string.char(tonumber(n, 16))
+ end)
+end
+
+local m = {}
+
+-- c:\my\files --> file:///c%3A/my/files
+-- /usr/home --> file:///usr/home
+-- \\server\share\some\path --> file://server/share/some/path
+
+--- path -> uri
+---@param path string
+---@return string uri
+function m.encode(path)
+ local authority = ''
+ if platform.OS == 'Windows' then
+ path = path:gsub('\\', '/')
+ end
+
+ if path:sub(1, 2) == '//' then
+ local idx = path:find('/', 3)
+ if idx then
+ authority = path:sub(3, idx)
+ path = path:sub(idx + 1)
+ if path == '' then
+ path = '/'
+ end
+ else
+ authority = path:sub(3)
+ path = '/'
+ end
+ end
+
+ if path:sub(1, 1) ~= '/' then
+ path = '/' .. path
+ end
+
+ -- lower-case windows drive letters in /C:/fff or C:/fff
+ if path:match '/%u:' then
+ path = path:lower()
+ end
+
+ local uri = 'file://'
+ .. authority:gsub(escPatt, esc)
+ .. path:gsub(escPatt, esc)
+ return uri
+end
+
+-- file:///c%3A/my/files --> c:\my\files
+-- file:///usr/home --> /usr/home
+-- file://server/share/some/path --> \\server\share\some\path
+
+--- uri -> path
+---@param uri string
+---@return string path
+function m.decode(uri)
+ local scheme, authority, path = uri:match('([^:]*):?/?/?([^/]*)(.*)')
+ if not scheme then
+ return ''
+ end
+ scheme = normalize(scheme)
+ authority = normalize(authority)
+ path = normalize(path)
+ local value
+ if scheme == 'file' and #authority > 0 and #path > 1 then
+ value = '//' .. authority .. path
+ elseif path:match '/%a:' then
+ value = path:sub(2, 2):lower() .. path:sub(3)
+ else
+ value = path
+ end
+ if platform.OS == 'Windows' then
+ value = value:gsub('/', '\\')
+ end
+ return value
+end
+
+return m
diff --git a/script-beta/src/files.lua b/script-beta/src/files.lua
new file mode 100644
index 00000000..ac27117c
--- /dev/null
+++ b/script-beta/src/files.lua
@@ -0,0 +1,290 @@
+local platform = require 'bee.platform'
+local config = require 'config'
+local glob = require 'glob'
+local furi = require 'file-uri'
+local parser = require 'parser'
+local vm = require 'vm.vm'
+local guide = require 'parser.guide'
+
+local m = {}
+
+m.openMap = {}
+m.fileMap = {}
+m.assocVersion = -1
+m.assocMatcher = nil
+m.globalVersion = 0
+
+--- 打开文件
+---@param uri string
+function m.open(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ m.openMap[uri] = true
+end
+
+--- 关闭文件
+---@param uri string
+function m.close(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ m.openMap[uri] = nil
+end
+
+--- 是否打开
+---@param uri string
+---@return boolean
+function m.isOpen(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ return m.openMap[uri] == true
+end
+
+--- 是否存在
+---@return boolean
+function m.exists(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ return m.fileMap[uri] ~= nil
+end
+
+--- 设置文件文本
+---@param uri string
+---@param text string
+function m.setText(uri, text)
+ local originUri = uri
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ if not m.fileMap[uri] then
+ m.fileMap[uri] = {
+ uri = originUri,
+ }
+ end
+ local file = m.fileMap[uri]
+ if file.text == text then
+ return
+ end
+ file.text = text
+ file.vm = nil
+ file.lines = nil
+ file.ast = nil
+ file.globals = nil
+ file.links = nil
+ m.globalVersion = m.globalVersion + 1
+ vm.refreshCache()
+
+ local diagnostic = require 'provider.diagnostic'
+ diagnostic.refresh(originUri)
+end
+
+--- 监听编译完成
+function m.onCompiled(uri, callback)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if not file then
+ return
+ end
+ if not file.onCompiledList then
+ file.onCompiledList = {}
+ end
+ file.onCompiledList[#file.onCompiledList+1] = callback
+end
+
+--- 获取文件文本
+---@param uri string
+---@return string text
+function m.getText(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if not file then
+ return nil
+ end
+ return file.text
+end
+
+--- 移除文件
+---@param uri string
+function m.remove(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if not file then
+ return
+ end
+ m.fileMap[uri] = nil
+
+ m.globalVersion = m.globalVersion + 1
+ vm.refreshCache()
+
+ local diagnostic = require 'service.diagnostic'
+ diagnostic.refresh(file.uri)
+ diagnostic.clear(file.uri)
+end
+
+--- 移除所有文件
+function m.removeAll()
+ for uri in pairs(m.fileMap) do
+ m.fileMap[uri] = nil
+ end
+ m.globalVersion = m.globalVersion + 1
+ vm.refreshCache()
+end
+
+--- 遍历文件
+function m.eachFile()
+ return pairs(m.fileMap)
+end
+
+--- 获取文件语法树
+---@param uri string
+---@return table ast
+function m.getAst(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if file.ast == nil then
+ local state, err = parser:compile(file.text, 'lua', config.config.runtime.version)
+ if state then
+ state.uri = file.uri
+ state.ast.uri = file.uri
+ file.ast = state
+ else
+ log.error(err)
+ file.ast = false
+ return nil
+ end
+ end
+ return file.ast
+end
+
+--- 获取文件行信息
+---@param uri string
+---@return table lines
+function m.getLines(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if not file then
+ return nil
+ end
+ if not file.lines then
+ file.lines = parser:lines(file.text)
+ end
+ return file.lines
+end
+
+--- 获取原始uri
+function m.getOriginUri(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local file = m.fileMap[uri]
+ if not file then
+ return nil
+ end
+ return file.uri
+end
+
+--- 寻找全局变量
+function m.findGlobals(name)
+ local uris = {}
+ for uri, file in pairs(m.fileMap) do
+ if not file.globals then
+ file.globals = {}
+ local ast = m.getAst(uri)
+ if ast then
+ local globals = vm.getGlobals(ast.ast)
+ for name in pairs(globals) do
+ file.globals[name] = true
+ end
+ end
+ end
+ if file.globals[name] then
+ uris[#uris+1] = file.uri
+ end
+ end
+ return uris
+end
+
+--- 寻找link自己的其他文件
+function m.findLinkTo(uri)
+ if platform.OS == 'Windows' then
+ uri = uri:lower()
+ end
+ local result = {}
+ for _, file in pairs(m.fileMap) do
+ if file.links == nil then
+ local ast = m.getAst(file.uri)
+ if ast then
+ file.links = vm.getLinks(ast.ast)
+ else
+ file.links = false
+ end
+ end
+ if file.links then
+ for linkUri in pairs(file.links) do
+ if m.eq(uri, linkUri) then
+ result[#result+1] = file.uri
+ end
+ end
+ end
+ end
+ return result
+end
+
+--- 判断文件名相等
+function m.eq(a, b)
+ if platform.OS == 'Windows' then
+ return a:lower() == b:lower()
+ else
+ return a == b
+ end
+end
+
+--- 获取文件关联
+function m.getAssoc()
+ if m.assocVersion == config.version then
+ return m.assocMatcher
+ end
+ m.assocVersion = config.version
+ local patt = {}
+ for k, v in pairs(config.other.associations) do
+ if m.eq(v, 'lua') then
+ patt[#patt+1] = k
+ end
+ end
+ m.assocMatcher = glob.glob(patt)
+ if platform.OS == 'Windows' then
+ m.assocMatcher:setOption 'ignoreCase'
+ end
+ return m.assocMatcher
+end
+
+--- 判断是否是Lua文件
+---@param uri string
+---@return boolean
+function m.isLua(uri)
+ local ext = uri:match '%.([^%.%/%\\]-)$'
+ if not ext then
+ return false
+ end
+ if m.eq(ext, 'lua') then
+ return true
+ end
+ local matcher = m.getAssoc()
+ local path = furi.decode(uri)
+ return matcher(path)
+end
+
+return m
diff --git a/script-beta/src/fs-utility.lua b/script-beta/src/fs-utility.lua
new file mode 100644
index 00000000..14dcb08f
--- /dev/null
+++ b/script-beta/src/fs-utility.lua
@@ -0,0 +1,314 @@
+local fs = require 'bee.filesystem'
+local platform = require 'bee.platform'
+
+local type = type
+local ioOpen = io.open
+local pcall = pcall
+local pairs = pairs
+local setmetatable = setmetatable
+local next = next
+
+_ENV = nil
+
+local m = {}
+--- 读取文件
+---@param path string
+function m.loadFile(path)
+ if type(path) ~= 'string' then
+ path = path:string()
+ end
+ local f, e = ioOpen(path, 'rb')
+ if not f then
+ return nil, e
+ end
+ if f:read(3) ~= '\xEF\xBB\xBF' then
+ f:seek("set")
+ end
+ local buf = f:read 'a'
+ f:close()
+ return buf
+end
+
+--- 写入文件
+---@param path string
+---@param content string
+function m.saveFile(path, content)
+ if type(path) ~= 'string' then
+ path = path:string()
+ end
+ local f, e = ioOpen(path, "wb")
+
+ if f then
+ f:write(content)
+ f:close()
+ return true
+ else
+ return false, e
+ end
+end
+
+local function buildOptional(optional)
+ optional = optional or {}
+ optional.add = optional.add or {}
+ optional.del = optional.del or {}
+ optional.mod = optional.mod or {}
+ optional.err = optional.err or {}
+ return optional
+end
+
+local function fsAbsolute(path, optional)
+ if type(path) == 'string' then
+ local suc, res = pcall(fs.path, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return nil
+ end
+ path = res
+ end
+ local suc, res = pcall(fs.absolute, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return nil
+ end
+ return res
+end
+
+local function fsIsDirectory(path, optional)
+ local suc, res = pcall(fs.is_directory, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return false
+ end
+ return res
+end
+
+local function fsRemove(path, optional)
+ local suc, res = pcall(fs.remove, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ end
+ optional.del[#optional.del+1] = path:string()
+end
+
+local function fsExists(path, optional)
+ local suc, res = pcall(fs.exists, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return false
+ end
+ return res
+end
+
+local function fsCopy(source, target, optional)
+ local suc, res = pcall(fs.copy_file, source, target, true)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return false
+ end
+ return true
+end
+
+local function fsCreateDirectories(path, optional)
+ local suc, res = pcall(fs.create_directories, path)
+ if not suc then
+ optional.err[#optional.err+1] = res
+ return false
+ end
+ return true
+end
+
+local function fileRemove(path, optional)
+ if optional.onRemove and optional.onRemove(path) == false then
+ return
+ end
+ if fsIsDirectory(path, optional) then
+ for child in path:list_directory() do
+ fileRemove(child, optional)
+ end
+ end
+ if fsRemove(path, optional) then
+ optional.del[#optional.del+1] = path:string()
+ end
+end
+
+local function fileCopy(source, target, optional)
+ local isDir1 = fsIsDirectory(source, optional)
+ local isDir2 = fsIsDirectory(target, optional)
+ local isExists = fsExists(target, optional)
+ if isDir1 then
+ if isDir2 or fsCreateDirectories(target) then
+ for filePath in source:list_directory() do
+ local name = filePath:filename()
+ fileCopy(filePath, target / name, optional)
+ end
+ end
+ else
+ if isExists and not isDir2 then
+ local buf1, err1 = m.loadFile(source)
+ local buf2, err2 = m.loadFile(target)
+ if buf1 and buf2 then
+ if buf1 ~= buf2 then
+ if fsCopy(source, target, optional) then
+ optional.mod[#optional.mod+1] = target:string()
+ end
+ end
+ else
+ if not buf1 then
+ optional.err[#optional.err+1] = err1
+ end
+ if not buf2 then
+ optional.err[#optional.err+1] = err2
+ end
+ end
+ else
+ if fsCopy(source, target, optional) then
+ optional.add[#optional.add+1] = target:string()
+ end
+ end
+ end
+end
+
+local function fileSync(source, target, optional)
+ local isDir1 = fsIsDirectory(source, optional)
+ local isDir2 = fsIsDirectory(target, optional)
+ local isExists = fsExists(target, optional)
+ if isDir1 then
+ if isDir2 then
+ local fileList = m.fileList()
+ for filePath in target:list_directory() do
+ fileList[filePath] = true
+ end
+ for filePath in source:list_directory() do
+ local name = filePath:filename()
+ local targetPath = target / name
+ fileSync(filePath, targetPath, optional)
+ fileList[targetPath] = nil
+ end
+ for path in pairs(fileList) do
+ fileRemove(path, optional)
+ end
+ else
+ if isExists then
+ fileRemove(target, optional)
+ end
+ if fsCreateDirectories(target) then
+ for filePath in source:list_directory() do
+ local name = filePath:filename()
+ fileCopy(filePath, target / name, optional)
+ end
+ end
+ end
+ else
+ if isDir2 then
+ fileRemove(target, optional)
+ end
+ if isExists then
+ local buf1, err1 = m.loadFile(source)
+ local buf2, err2 = m.loadFile(target)
+ if buf1 and buf2 then
+ if buf1 ~= buf2 then
+ if fsCopy(source, target, optional) then
+ optional.mod[#optional.mod+1] = target:string()
+ end
+ end
+ else
+ if not buf1 then
+ optional.err[#optional.err+1] = err1
+ end
+ if not buf2 then
+ optional.err[#optional.err+1] = err2
+ end
+ end
+ else
+ if fsCopy(source, target, optional) then
+ optional.add[#optional.add+1] = target:string()
+ end
+ end
+ end
+end
+
+--- 文件列表
+function m.fileList(optional)
+ optional = optional or buildOptional(optional)
+ local os = platform.OS
+ local keyMap = {}
+ local fileList = {}
+ local function computeKey(path)
+ path = fsAbsolute(path, optional)
+ if not path then
+ return nil
+ end
+ local key
+ if os == 'Windows' then
+ key = path:string():lower()
+ else
+ key = path:string()
+ end
+ return key
+ end
+ return setmetatable({}, {
+ __index = function (_, path)
+ local key = computeKey(path)
+ return fileList[key]
+ end,
+ __newindex = function (_, path, value)
+ local key = computeKey(path)
+ if not key then
+ return
+ end
+ if value == nil then
+ keyMap[key] = nil
+ else
+ keyMap[key] = path
+ fileList[key] = value
+ end
+ end,
+ __pairs = function ()
+ local key, path
+ return function ()
+ key, path = next(keyMap, key)
+ return path, fileList[key]
+ end
+ end,
+ })
+end
+
+--- 删除文件(夹)
+function m.fileRemove(path, optional)
+ optional = buildOptional(optional)
+ path = fsAbsolute(path, optional)
+
+ fileRemove(path, optional)
+
+ return optional
+end
+
+--- 复制文件(夹)
+---@param source string
+---@param target string
+---@return table
+function m.fileCopy(source, target, optional)
+ optional = buildOptional(optional)
+ source = fsAbsolute(source, optional)
+ target = fsAbsolute(target, optional)
+
+ fileCopy(source, target, optional)
+
+ return optional
+end
+
+--- 同步文件(夹)
+---@param source string
+---@param target string
+---@return table
+function m.fileSync(source, target, optional)
+ optional = buildOptional(optional)
+ source = fsAbsolute(source, optional)
+ target = fsAbsolute(target, optional)
+
+ fileSync(source, target, optional)
+
+ return optional
+end
+
+return m
diff --git a/script-beta/src/glob/gitignore.lua b/script-beta/src/glob/gitignore.lua
new file mode 100644
index 00000000..f98a2f31
--- /dev/null
+++ b/script-beta/src/glob/gitignore.lua
@@ -0,0 +1,221 @@
+local m = require 'lpeglabel'
+local matcher = require 'glob.matcher'
+
+local function prop(name, pat)
+ return m.Cg(m.Cc(true), name) * pat
+end
+
+local function object(type, pat)
+ return m.Ct(
+ m.Cg(m.Cc(type), 'type') *
+ m.Cg(pat, 'value')
+ )
+end
+
+local function expect(p, err)
+ return p + m.T(err)
+end
+
+local parser = m.P {
+ 'Main',
+ ['Sp'] = m.S(' \t')^0,
+ ['Slash'] = m.S('/\\')^1,
+ ['Main'] = m.Ct(m.V'Sp' * m.P'{' * m.V'Pattern' * (',' * expect(m.V'Pattern', 'Miss exp after ","'))^0 * m.P'}')
+ + m.Ct(m.V'Pattern')
+ + m.T'Main Failed'
+ ,
+ ['Pattern'] = m.Ct(m.V'Sp' * prop('neg', m.P'!') * expect(m.V'Unit', 'Miss exp after "!"'))
+ + m.Ct(m.V'Unit')
+ ,
+ ['NeedRoot'] = prop('root', (m.P'.' * m.V'Slash' + m.V'Slash')),
+ ['Unit'] = m.V'Sp' * m.V'NeedRoot'^-1 * expect(m.V'Exp', 'Miss exp') * m.V'Sp',
+ ['Exp'] = m.V'Sp' * (m.V'FSymbol' + object('/', m.V'Slash') + m.V'Word')^0 * m.V'Sp',
+ ['Word'] = object('word', m.Ct((m.V'CSymbol' + m.V'Char' - m.V'FSymbol')^1)),
+ ['CSymbol'] = object('*', m.P'*')
+ + object('?', m.P'?')
+ + object('[]', m.V'Range')
+ ,
+ ['Char'] = object('char', (1 - m.S',{}[]*?/\\')^1),
+ ['FSymbol'] = object('**', m.P'**'),
+ ['Range'] = m.P'[' * m.Ct(m.V'RangeUnit'^0) * m.P']'^-1,
+ ['RangeUnit'] = m.Ct(- m.P']' * m.C(m.P(1)) * (m.P'-' * - m.P']' * m.C(m.P(1)))^-1),
+}
+
+local mt = {}
+mt.__index = mt
+mt.__name = 'gitignore'
+
+function mt:addPattern(pat)
+ if type(pat) ~= 'string' then
+ return
+ end
+ self.pattern[#self.pattern+1] = pat
+ if self.options.ignoreCase then
+ pat = pat:lower()
+ end
+ local states, err = parser:match(pat)
+ if not states then
+ self.errors[#self.errors+1] = {
+ pattern = pat,
+ message = err
+ }
+ return
+ end
+ for _, state in ipairs(states) do
+ self.matcher[#self.matcher+1] = matcher(state)
+ end
+end
+
+function mt:setOption(op, val)
+ if val == nil then
+ val = true
+ end
+ self.options[op] = val
+end
+
+---@param key string | "'type'" | "'list'"
+---@param func function | "function (path) end"
+function mt:setInterface(key, func)
+ if type(func) ~= 'function' then
+ return
+ end
+ self.interface[key] = func
+end
+
+function mt:callInterface(name, ...)
+ local func = self.interface[name]
+ return func(...)
+end
+
+function mt:hasInterface(name)
+ return self.interface[name] ~= nil
+end
+
+function mt:checkDirectory(catch, path, matcher)
+ if not self:hasInterface 'type' then
+ return true
+ end
+ if not matcher:isNeedDirectory() then
+ return true
+ end
+ if #catch < #path then
+ -- if path is 'a/b/c' and catch is 'a/b'
+ -- then the catch must be a directory
+ return true
+ else
+ return self:callInterface('type', path) == 'directory'
+ end
+end
+
+function mt:simpleMatch(path)
+ for i = #self.matcher, 1, -1 do
+ local matcher = self.matcher[i]
+ local catch = matcher(path)
+ if catch and self:checkDirectory(catch, path, matcher) then
+ if matcher:isNegative() then
+ return false
+ else
+ return true
+ end
+ end
+ end
+ return nil
+end
+
+function mt:finishMatch(path)
+ local paths = {}
+ for filename in path:gmatch '[^/\\]+' do
+ paths[#paths+1] = filename
+ end
+ for i = 1, #paths do
+ local newPath = table.concat(paths, '/', 1, i)
+ local passed = self:simpleMatch(newPath)
+ if passed == true then
+ return true
+ elseif passed == false then
+ return false
+ end
+ end
+ return false
+end
+
+function mt:scan(callback)
+ local files = {}
+ if type(callback) ~= 'function' then
+ callback = nil
+ end
+ local list = {}
+ local result = self:callInterface('list', '')
+ if type(result) ~= 'table' then
+ return files
+ end
+ for _, path in ipairs(result) do
+ list[#list+1] = path:match '([^/\\]+)[/\\]*$'
+ end
+ while #list > 0 do
+ local current = list[#list]
+ if not current then
+ break
+ end
+ list[#list] = nil
+ if not self:simpleMatch(current) then
+ local fileType = self:callInterface('type', current)
+ if fileType == 'file' then
+ if callback then
+ callback(current)
+ end
+ files[#files+1] = current
+ elseif fileType == 'directory' then
+ local result = self:callInterface('list', current)
+ if type(result) == 'table' then
+ for _, path in ipairs(result) do
+ local filename = path:match '([^/\\]+)[/\\]*$'
+ if filename then
+ list[#list+1] = current .. '/' .. filename
+ end
+ end
+ end
+ end
+ end
+ end
+ return files
+end
+
+function mt:__call(path)
+ if self.options.ignoreCase then
+ path = path:lower()
+ end
+ return self:finishMatch(path)
+end
+
+return function (pattern, options, interface)
+ local self = setmetatable({
+ pattern = {},
+ options = {},
+ matcher = {},
+ errors = {},
+ interface = {},
+ }, mt)
+
+ if type(pattern) == 'table' then
+ for _, pat in ipairs(pattern) do
+ self:addPattern(pat)
+ end
+ else
+ self:addPattern(pattern)
+ end
+
+ if type(options) == 'table' then
+ for op, val in pairs(options) do
+ self:setOption(op, val)
+ end
+ end
+
+ if type(interface) == 'table' then
+ for key, func in pairs(interface) do
+ self:setInterface(key, func)
+ end
+ end
+
+ return self
+end
diff --git a/script-beta/src/glob/glob.lua b/script-beta/src/glob/glob.lua
new file mode 100644
index 00000000..aa8923f3
--- /dev/null
+++ b/script-beta/src/glob/glob.lua
@@ -0,0 +1,122 @@
+local m = require 'lpeglabel'
+local matcher = require 'glob.matcher'
+
+local function prop(name, pat)
+ return m.Cg(m.Cc(true), name) * pat
+end
+
+local function object(type, pat)
+ return m.Ct(
+ m.Cg(m.Cc(type), 'type') *
+ m.Cg(pat, 'value')
+ )
+end
+
+local function expect(p, err)
+ return p + m.T(err)
+end
+
+local parser = m.P {
+ 'Main',
+ ['Sp'] = m.S(' \t')^0,
+ ['Slash'] = m.S('/\\')^1,
+ ['Main'] = m.Ct(m.V'Sp' * m.P'{' * m.V'Pattern' * (',' * expect(m.V'Pattern', 'Miss exp after ","'))^0 * m.P'}')
+ + m.Ct(m.V'Pattern')
+ + m.T'Main Failed'
+ ,
+ ['Pattern'] = m.Ct(m.V'Sp' * prop('neg', m.P'!') * expect(m.V'Unit', 'Miss exp after "!"'))
+ + m.Ct(m.V'Unit')
+ ,
+ ['NeedRoot'] = prop('root', (m.P'.' * m.V'Slash' + m.V'Slash')),
+ ['Unit'] = m.V'Sp' * m.V'NeedRoot'^-1 * expect(m.V'Exp', 'Miss exp') * m.V'Sp',
+ ['Exp'] = m.V'Sp' * (m.V'FSymbol' + object('/', m.V'Slash') + m.V'Word')^0 * m.V'Sp',
+ ['Word'] = object('word', m.Ct((m.V'CSymbol' + m.V'Char' - m.V'FSymbol')^1)),
+ ['CSymbol'] = object('*', m.P'*')
+ + object('?', m.P'?')
+ + object('[]', m.V'Range')
+ ,
+ ['Char'] = object('char', (1 - m.S',{}[]*?/\\')^1),
+ ['FSymbol'] = object('**', m.P'**'),
+ ['RangeWord'] = 1 - m.P']',
+ ['Range'] = m.P'[' * m.Ct(m.V'RangeUnit'^0) * m.P']'^-1,
+ ['RangeUnit'] = m.Ct(m.C(m.V'RangeWord') * m.P'-' * m.C(m.V'RangeWord'))
+ + m.V'RangeWord',
+}
+
+local mt = {}
+mt.__index = mt
+mt.__name = 'glob'
+
+function mt:addPattern(pat)
+ if type(pat) ~= 'string' then
+ return
+ end
+ self.pattern[#self.pattern+1] = pat
+ if self.options.ignoreCase then
+ pat = pat:lower()
+ end
+ local states, err = parser:match(pat)
+ if not states then
+ self.errors[#self.errors+1] = {
+ pattern = pat,
+ message = err
+ }
+ return
+ end
+ for _, state in ipairs(states) do
+ if state.neg then
+ self.refused[#self.refused+1] = matcher(state)
+ else
+ self.passed[#self.passed+1] = matcher(state)
+ end
+ end
+end
+
+function mt:setOption(op, val)
+ if val == nil then
+ val = true
+ end
+ self.options[op] = val
+end
+
+function mt:__call(path)
+ if self.options.ignoreCase then
+ path = path:lower()
+ end
+ for _, refused in ipairs(self.refused) do
+ if refused(path) then
+ return false
+ end
+ end
+ for _, passed in ipairs(self.passed) do
+ if passed(path) then
+ return true
+ end
+ end
+ return false
+end
+
+return function (pattern, options)
+ local self = setmetatable({
+ pattern = {},
+ options = {},
+ passed = {},
+ refused = {},
+ errors = {},
+ }, mt)
+
+ if type(pattern) == 'table' then
+ for _, pat in ipairs(pattern) do
+ self:addPattern(pat)
+ end
+ else
+ self:addPattern(pattern)
+ end
+
+ if type(options) == 'table' then
+ for op, val in pairs(options) do
+ self:setOption(op, val)
+ end
+ end
+ return self
+end
diff --git a/script-beta/src/glob/init.lua b/script-beta/src/glob/init.lua
new file mode 100644
index 00000000..6578a0d4
--- /dev/null
+++ b/script-beta/src/glob/init.lua
@@ -0,0 +1,4 @@
+return {
+ glob = require 'glob.glob',
+ gitignore = require 'glob.gitignore',
+}
diff --git a/script-beta/src/glob/matcher.lua b/script-beta/src/glob/matcher.lua
new file mode 100644
index 00000000..f4c2b12c
--- /dev/null
+++ b/script-beta/src/glob/matcher.lua
@@ -0,0 +1,151 @@
+local m = require 'lpeglabel'
+
+local Slash = m.S('/\\')^1
+local Symbol = m.S',{}[]*?/\\'
+local Char = 1 - Symbol
+local Path = Char^1 * Slash
+local NoWord = #(m.P(-1) + Symbol)
+local function whatHappened()
+ return m.Cmt(m.P(1)^1, function (...)
+ print(...)
+ end)
+end
+
+local mt = {}
+mt.__index = mt
+mt.__name = 'matcher'
+
+function mt:exp(state, index)
+ local exp = state[index]
+ if not exp then
+ return
+ end
+ if exp.type == 'word' then
+ return self:word(exp, state, index + 1)
+ elseif exp.type == 'char' then
+ return self:char(exp, state, index + 1)
+ elseif exp.type == '**' then
+ return self:anyPath(exp, state, index + 1)
+ elseif exp.type == '*' then
+ return self:anyChar(exp, state, index + 1)
+ elseif exp.type == '?' then
+ return self:oneChar(exp, state, index + 1)
+ elseif exp.type == '[]' then
+ return self:range(exp, state, index + 1)
+ elseif exp.type == '/' then
+ return self:slash(exp, state, index + 1)
+ end
+end
+
+function mt:word(exp, state, index)
+ local current = self:exp(exp.value, 1)
+ local after = self:exp(state, index)
+ if after then
+ return current * Slash * after
+ else
+ return current
+ end
+end
+
+function mt:char(exp, state, index)
+ local current = m.P(exp.value)
+ local after = self:exp(state, index)
+ if after then
+ return current * after * NoWord
+ else
+ return current * NoWord
+ end
+end
+
+function mt:anyPath(_, state, index)
+ local after = self:exp(state, index)
+ if after then
+ return m.P {
+ 'Main',
+ Main = after
+ + Path * m.V'Main'
+ }
+ else
+ return Path^0
+ end
+end
+
+function mt:anyChar(_, state, index)
+ local after = self:exp(state, index)
+ if after then
+ return m.P {
+ 'Main',
+ Main = after
+ + Char * m.V'Main'
+ }
+ else
+ return Char^0
+ end
+end
+
+function mt:oneChar(_, state, index)
+ local after = self:exp(state, index)
+ if after then
+ return Char * after
+ else
+ return Char
+ end
+end
+
+function mt:range(exp, state, index)
+ local after = self:exp(state, index)
+ local ranges = {}
+ local selects = {}
+ for _, range in ipairs(exp.value) do
+ if #range == 1 then
+ selects[#selects+1] = range[1]
+ elseif #range == 2 then
+ ranges[#ranges+1] = range[1] .. range[2]
+ end
+ end
+ local current = m.S(table.concat(selects)) + m.R(table.unpack(ranges))
+ if after then
+ return current * after
+ else
+ return current
+ end
+end
+
+function mt:slash(_, state, index)
+ local after = self:exp(state, index)
+ if after then
+ return after
+ else
+ self.needDirectory = true
+ return nil
+ end
+end
+
+function mt:pattern(state)
+ if state.root then
+ return m.C(self:exp(state, 1))
+ else
+ return m.C(self:anyPath(nil, state, 1))
+ end
+end
+
+function mt:isNeedDirectory()
+ return self.needDirectory == true
+end
+
+function mt:isNegative()
+ return self.state.neg == true
+end
+
+function mt:__call(path)
+ return self.matcher:match(path)
+end
+
+return function (state, options)
+ local self = setmetatable({
+ options = options,
+ state = state,
+ }, mt)
+ self.matcher = self:pattern(state)
+ return self
+end
diff --git a/script-beta/src/json/decode.lua b/script-beta/src/json/decode.lua
new file mode 100644
index 00000000..36f8aa54
--- /dev/null
+++ b/script-beta/src/json/decode.lua
@@ -0,0 +1,153 @@
+local lpeg = require 'lpeglabel'
+local tablePack = table.pack
+local rawset = rawset
+local tointeger = math.tointeger
+local tonumber = tonumber
+local setmetatable = setmetatable
+local stringChar = string.char
+local error = error
+
+_ENV = nil
+
+local SaveSort
+local P = lpeg.P
+local S = lpeg.S
+local R = lpeg.R
+local V = lpeg.V
+local C = lpeg.C
+local Ct = lpeg.Ct
+local Cc = lpeg.Cc
+local Cp = lpeg.Cp
+local Cs = lpeg.Cs
+
+local EscMap = {
+ ['t'] = '\t',
+ ['r'] = '\r',
+ ['n'] = '\n',
+ ['"'] = '"',
+ ['\\'] = '\\',
+}
+local BoolMap = {
+ ['true'] = true,
+ ['false'] = false,
+}
+
+local hashmt = {
+ __pairs = function (self)
+ local i = 1
+ local function next()
+ i = i + 1
+ local k = self[i]
+ if k == nil then
+ return
+ end
+ local v = self[k]
+ if v == nil then
+ return next()
+ end
+ return k, v
+ end
+ return next
+ end,
+ __newindex = function (self, k, v)
+ local i = 2
+ while self[i] do
+ i = i + 1
+ end
+ rawset(self, i, k)
+ rawset(self, k, v)
+ end,
+}
+
+-----------------------------------------------------------------------------
+-- JSON4Lua: JSON encoding / decoding support for the Lua language.
+-- json Module.
+-- Author: Craig Mason-Jones
+-- Homepage: http://github.com/craigmj/json4lua/
+-- Version: 1.0.0
+-- This module is released under the MIT License (MIT).
+-- Please see LICENCE.txt for details.
+--
+local function Utf8(str)
+ local n = tonumber(str, 16)
+ -- math.floor(x/2^y) == lazy right shift
+ -- a % 2^b == bitwise_and(a, (2^b)-1)
+ -- 64 = 2^6
+ -- 4096 = 2^12 (or 2^6 * 2^6)
+ local x
+ if n < 0x80 then
+ x = stringChar(n % 0x80)
+ elseif n < 0x800 then
+ -- [110x xxxx] [10xx xxxx]
+ x = stringChar(0xC0 + ((n // 64) % 0x20), 0x80 + (n % 0x40))
+ else
+ -- [1110 xxxx] [10xx xxxx] [10xx xxxx]
+ x = stringChar(0xE0 + ((n // 4096) % 0x10), 0x80 + ((n // 64) % 0x40), 0x80 + (n % 0x40))
+ end
+ return x
+end
+
+local function HashTable(patt)
+ return C(patt) / function (_, ...)
+ local hash = tablePack(...)
+ local n = hash.n
+ hash.n = nil
+ if SaveSort then
+ local max = n // 2
+ for i = 1, max do
+ local key, value = hash[2*i-1], hash[2*i]
+ hash[key] = value
+ hash[i+1] = key
+ end
+ hash[1] = nil
+ for i = max+2, max*2 do
+ hash[i] = nil
+ end
+ return setmetatable(hash, hashmt)
+ else
+ local max = n // 2
+ for i = 1, max do
+ local a = 2*i-1
+ local b = 2*i
+ local key, value = hash[a], hash[b]
+ hash[key] = value
+ hash[a] = nil
+ hash[b] = nil
+ end
+ return hash
+ end
+ end
+end
+
+local Token = P
+{
+ V'Value' * Cp(),
+ Nl = P'\r\n' + S'\r\n',
+ Sp = S' \t' + '//' * (1-V'Nl')^0,
+ Spnl = (V'Sp' + V'Nl')^0,
+ Bool = C(P'true' + P'false') / BoolMap,
+ Int = C('0' + (P'-'^-1 * R'19' * R'09'^0)) / tointeger,
+ Float = C(P'-'^-1 * ('0' + R'19' * R'09'^0) * '.' * R'09'^0) / tonumber,
+ Null = P'null' * Cc(nil),
+ String = '"' * Cs(V'Char'^0) * '"',
+ Char = V'Esc' + V'Utf8' + (1 - P'"' - P'\t' - V'Nl'),
+ Esc = P'\\' * C(S'tnr"\\') / EscMap,
+ Utf8 = P'\\u' * C(P(4)) / Utf8,
+ Hash = V'Spnl' * '{' * V'Spnl' * HashTable((V'Object' + P',' * V'Spnl')^0) * V'Spnl' * P'}' * V'Spnl',
+ Array = V'Spnl' * '[' * V'Spnl' * Ct((V'Value' * V'Spnl' + P',' * V'Spnl')^0) * V'Spnl' * P']' * V'Spnl',
+ Object = V'Spnl' * V'Key' * V'Spnl' * V'Value' * V'Spnl',
+ Key = V'String' * V'Spnl' * ':',
+ Value = V'Hash' + V'Array' + V'Bool' + V'Null' + V'String' + V'Float' + V'Int',
+}
+
+return function (str, save_sort_)
+ SaveSort = save_sort_
+ local table, res, pos = Token:match(str)
+ if not table then
+ if not pos or pos <= #str then
+ pos = pos or 1
+ error(('没匹配完[%s][%s]\n%s'):format(pos, res, str:sub(pos, pos+100)))
+ end
+ end
+ return table
+end
diff --git a/script-beta/src/json/encode.lua b/script-beta/src/json/encode.lua
new file mode 100644
index 00000000..492c5a58
--- /dev/null
+++ b/script-beta/src/json/encode.lua
@@ -0,0 +1,135 @@
+local rep = string.rep
+local gsub = string.gsub
+local sort = table.sort
+local find = string.find
+local tostring = tostring
+local getmetatable = debug.getmetatable
+local type = type
+local next = next
+local pairs = pairs
+local tableConcat = table.concat
+
+_ENV = nil
+
+local index
+local lines
+local n = -1
+local tabs = {}
+
+local esc_map = {
+ ['\\'] = '\\\\',
+ ['\r'] = '\\r',
+ ['\n'] = '\\n',
+ ['\t'] = '\\t',
+ ['"'] = '\\"',
+}
+
+local function encode(data, key)
+ n = n + 1
+ if not tabs[n] then
+ tabs[n] = rep(' ', n)
+ end
+ local tp = type(data)
+ if tp == 'table' then
+ if not data[1] and next(data) then
+ -- 认为这个是哈希表
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": {\r\n'
+ else
+ index=index+1;lines[index] = tabs[n] .. '{\r\n'
+ end
+ local meta = getmetatable(data)
+ local sep
+ if meta and meta.__pairs then
+ for k, v in meta.__pairs(data), data do
+ if encode(v, k) then
+ index=index+1;lines[index] = ',\r\n'
+ sep = true
+ end
+ end
+ else
+ local list = {}
+ local i = 0
+ for k in next, data do
+ i=i+1;list[i] = k
+ end
+ sort(list)
+ for j = 1, i do
+ local k = list[j]
+ if encode(data[k], k) then
+ index=index+1;lines[index] = ',\r\n'
+ sep = true
+ end
+ end
+ end
+ if sep then
+ lines[index] = '\r\n'
+ end
+ index=index+1;lines[index] = tabs[n] .. '}'
+ else
+ -- 认为这个是数组
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": [\r\n'
+ else
+ index=index+1;lines[index] = tabs[n] .. '[\r\n'
+ end
+ local sep
+ for k, v in pairs(data) do
+ if encode(v) then
+ index=index+1;lines[index] = ',\r\n'
+ sep = true
+ end
+ end
+ if sep then
+ lines[index] = '\r\n'
+ end
+ index=index+1;lines[index] = tabs[n] .. ']'
+ end
+ elseif tp == 'number' then
+ data = tostring(data)
+ -- 判断 inf -inf -nan(ind) 1.#INF -1.#INF -1.#IND
+ if find(data, '%a') then
+ data = '0'
+ end
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": ' .. data
+ else
+ index=index+1;lines[index] = tabs[n] .. data
+ end
+ elseif tp == 'boolean' then
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": ' .. tostring(data)
+ else
+ index=index+1;lines[index] = tabs[n] .. tostring(data)
+ end
+ elseif tp == 'nil' then
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": null'
+ else
+ index=index+1;lines[index] = tabs[n] .. 'null'
+ end
+ elseif tp == 'string' then
+ local str = gsub(data, '[\\\r\n\t"]', esc_map)
+ if key then
+ index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": "' .. str .. '"'
+ else
+ index=index+1;lines[index] = tabs[n] .. '"' .. str .. '"'
+ end
+ else
+ n = n - 1
+ return false
+ end
+ n = n - 1
+ return true
+end
+
+local function json(t)
+ lines = {}
+ index = 0
+
+ encode(t)
+
+ return tableConcat(lines)
+end
+
+return json
diff --git a/script-beta/src/json/init.lua b/script-beta/src/json/init.lua
new file mode 100644
index 00000000..c28e7aed
--- /dev/null
+++ b/script-beta/src/json/init.lua
@@ -0,0 +1,6 @@
+local api = {
+ decode = require 'json.decode',
+ encode = require 'json.encode',
+}
+
+return api
diff --git a/script-beta/src/jsonrpc.lua b/script-beta/src/jsonrpc.lua
new file mode 100644
index 00000000..5c73f54d
--- /dev/null
+++ b/script-beta/src/jsonrpc.lua
@@ -0,0 +1,41 @@
+local json = require 'json'
+local pcall = pcall
+
+_ENV = nil
+
+---@class jsonrpc
+local m = {}
+m.type = 'jsonrpc'
+
+function m.encode(pack)
+ pack.jsonrpc = '2.0'
+ local content = json.encode(pack)
+ local buf = ('Content-Length: %d\r\n\r\n%s'):format(#content, content)
+ return buf
+end
+
+function m.decode(reader, errHandle)
+ -- 读取协议头
+ local line = reader 'l'
+ -- 不支持修改文本编码
+ if line:find('Content-Type', 1, true) then
+ return nil
+ end
+ local len = line:match('Content%-Length%: (%d+)')
+ if not len then
+ errHandle('Error header: ' .. line)
+ return nil
+ end
+ local content = reader(len + 2)
+ if not content then
+ return nil
+ end
+ local suc, res = pcall(json.decode, content)
+ if not suc then
+ errHandle('Proto parse error: ' .. res)
+ return nil
+ end
+ return res
+end
+
+return m
diff --git a/script-beta/src/language.lua b/script-beta/src/language.lua
new file mode 100644
index 00000000..d1a4b4cf
--- /dev/null
+++ b/script-beta/src/language.lua
@@ -0,0 +1,137 @@
+local fs = require 'bee.filesystem'
+local lni = require 'lni'
+local util = require 'utility'
+
+local function supportLanguage()
+ local list = {}
+ for path in (ROOT / 'locale'):list_directory() do
+ if fs.is_directory(path) then
+ list[#list+1] = path:filename():string():lower()
+ end
+ end
+ return list
+end
+
+local function osLanguage()
+ return LANG:lower()
+end
+
+local function getLanguage(id)
+ local support = supportLanguage()
+ -- 检查是否支持语言
+ if support[id] then
+ return id
+ end
+ -- 根据语言的前2个字母来找近似语言
+ for _, lang in ipairs(support) do
+ if lang:sub(1, 2) == id:sub(1, 2) then
+ return lang
+ end
+ end
+ -- 使用英文
+ return 'enUS'
+end
+
+local function loadFileByLanguage(name, language)
+ local path = ROOT / 'locale' / language / (name .. '.lni')
+ local buf = util.loadFile(path:string())
+ if not buf then
+ return {}
+ end
+ local suc, tbl = xpcall(lni, log.error, buf, path:string())
+ if not suc then
+ return {}
+ end
+ return tbl
+end
+
+local function formatAsArray(str, ...)
+ local index = 0
+ local args = {...}
+ return str:gsub('%{(.-)%}', function (pat)
+ local id, fmt
+ local pos = pat:find(':', 1, true)
+ if pos then
+ id = pat:sub(1, pos-1)
+ fmt = pat:sub(pos+1)
+ else
+ id = pat
+ fmt = 's'
+ end
+ id = tonumber(id)
+ if not id then
+ index = index + 1
+ id = index
+ end
+ return ('%'..fmt):format(args[id])
+ end)
+end
+
+local function formatAsTable(str, ...)
+ local args = ...
+ return str:gsub('%{(.-)%}', function (pat)
+ local id, fmt
+ local pos = pat:find(':', 1, true)
+ if pos then
+ id = pat:sub(1, pos-1)
+ fmt = pat:sub(pos+1)
+ else
+ id = pat
+ fmt = 's'
+ end
+ if not id then
+ return
+ end
+ return ('%'..fmt):format(args[id])
+ end)
+end
+
+local function loadLang(name, language)
+ local tbl = loadFileByLanguage(name, 'en-US')
+ if language ~= 'en-US' then
+ local other = loadFileByLanguage(name, language)
+ for k, v in pairs(other) do
+ tbl[k] = v
+ end
+ end
+ return setmetatable(tbl, {
+ __index = function (self, key)
+ self[key] = key
+ return key
+ end,
+ __call = function (self, key, ...)
+ local str = self[key]
+ local suc, res
+ if type(...) == 'table' then
+ suc, res = pcall(formatAsTable, str, ...)
+ else
+ suc, res = pcall(formatAsArray, str, ...)
+ end
+ if suc then
+ return res
+ else
+ -- 这里不能使用翻译,以免死循环
+ log.warn(('[%s][%s-%s] formated error: %s'):format(
+ language, name, key, str
+ ))
+ return str
+ end
+ end,
+ })
+end
+
+local function init()
+ local id = osLanguage()
+ local language = getLanguage(id)
+ log.info(('VSC language: %s'):format(id))
+ log.info(('LS language: %s'):format(language))
+ return setmetatable({ id = language }, {
+ __index = function (self, name)
+ local tbl = loadLang(name, language)
+ self[name] = tbl
+ return tbl
+ end,
+ })
+end
+
+return init()
diff --git a/script-beta/src/library.lua b/script-beta/src/library.lua
new file mode 100644
index 00000000..d4dba7c9
--- /dev/null
+++ b/script-beta/src/library.lua
@@ -0,0 +1,296 @@
+local lni = require 'lni'
+local fs = require 'bee.filesystem'
+local config = require 'config'
+local util = require 'utility'
+
+local m = {}
+
+local function mergeEnum(lib, locale)
+ if not lib or not locale then
+ return
+ end
+ local pack = {}
+ for _, enum in ipairs(lib) do
+ if enum.enum then
+ pack[enum.enum] = enum
+ end
+ if enum.code then
+ pack[enum.code] = enum
+ end
+ end
+ for _, enum in ipairs(locale) do
+ if pack[enum.enum] then
+ if enum.description then
+ pack[enum.enum].description = enum.description
+ end
+ end
+ if pack[enum.code] then
+ if enum.description then
+ pack[enum.code].description = enum.description
+ end
+ end
+ end
+end
+
+local function mergeField(lib, locale)
+ if not lib or not locale then
+ return
+ end
+ local pack = {}
+ for _, field in ipairs(lib) do
+ if field.field then
+ pack[field.field] = field
+ end
+ end
+ for _, field in ipairs(locale) do
+ if pack[field.field] then
+ if field.description then
+ pack[field.field].description = field.description
+ end
+ end
+ end
+end
+
+local function mergeLocale(libs, locale)
+ if not libs or not locale then
+ return
+ end
+ for name in pairs(locale) do
+ if libs[name] then
+ if locale[name].description then
+ libs[name].description = locale[name].description
+ end
+ mergeEnum(libs[name].enums, locale[name].enums)
+ mergeField(libs[name].fields, locale[name].fields)
+ end
+ end
+end
+
+local function isMatchVersion(version)
+ if not version then
+ return true
+ end
+ local runtimeVersion = config.config.runtime.version
+ if type(version) == 'table' then
+ for i = 1, #version do
+ if version[i] == runtimeVersion then
+ return true
+ end
+ end
+ else
+ if version == runtimeVersion then
+ return true
+ end
+ end
+ return false
+end
+
+local function insertGlobal(tbl, key, value)
+ if not isMatchVersion(value.version) then
+ return false
+ end
+ if not value.doc then
+ value.doc = key
+ end
+ tbl[key] = value
+ return true
+end
+
+local function insertOther(tbl, key, value)
+ if not value.version then
+ return
+ end
+ if not tbl[key] then
+ tbl[key] = {}
+ end
+ if type(value.version) == 'string' then
+ tbl[key][#tbl[key]+1] = value.version
+ elseif type(value.version) == 'table' then
+ for _, version in ipairs(value.version) do
+ if type(version) == 'string' then
+ tbl[key][#tbl[key]+1] = version
+ end
+ end
+ end
+ table.sort(tbl[key])
+end
+
+local function insertCustom(tbl, key, value, libName)
+ if not tbl[key] then
+ tbl[key] = {}
+ end
+ tbl[key][#tbl[key]+1] = libName
+ table.sort(tbl[key])
+end
+
+local function isEnableGlobal(libName)
+ if config.config.runtime.library[libName] then
+ return true
+ end
+ if libName:sub(1, 1) == '@' then
+ return true
+ end
+ return false
+end
+
+local function mergeSource(alllibs, name, lib, libName)
+ if not lib.source then
+ if isEnableGlobal(libName) then
+ local suc = insertGlobal(alllibs.global, name, lib)
+ if not suc then
+ insertOther(alllibs.other, name, lib)
+ end
+ else
+ insertCustom(alllibs.custom, name, lib, libName)
+ end
+ return
+ end
+ for _, source in ipairs(lib.source) do
+ local sourceName = source.name or name
+ if source.type == 'global' then
+ if isEnableGlobal(libName) then
+ local suc = insertGlobal(alllibs.global, sourceName, lib)
+ if not suc then
+ insertOther(alllibs.other, sourceName, lib)
+ end
+ else
+ insertCustom(alllibs.custom, sourceName, lib, libName)
+ end
+ elseif source.type == 'library' then
+ insertGlobal(alllibs.library, sourceName, lib)
+ elseif source.type == 'object' then
+ insertGlobal(alllibs.object, sourceName, lib)
+ end
+ end
+end
+
+local function copy(t)
+ local new = {}
+ for k, v in pairs(t) do
+ new[k] = v
+ end
+ return new
+end
+
+local function insertChild(tbl, name, key, value)
+ if not name or not key then
+ return
+ end
+ if not isMatchVersion(value.version) then
+ return
+ end
+ if not value.doc then
+ value.doc = ('%s.%s'):format(name, key)
+ end
+ if not tbl[name] then
+ tbl[name] = {
+ type = name,
+ name = name,
+ child = {},
+ }
+ end
+ tbl[name].child[key] = copy(value)
+end
+
+local function mergeParent(alllibs, name, lib, libName)
+ for _, parent in ipairs(lib.parent) do
+ if parent.type == 'global' then
+ if isEnableGlobal(libName) then
+ insertChild(alllibs.global, parent.name, name, lib)
+ end
+ elseif parent.type == 'library' then
+ insertChild(alllibs.library, parent.name, name, lib)
+ elseif parent.type == 'object' then
+ insertChild(alllibs.object, parent.name, name, lib)
+ end
+ end
+end
+
+local function mergeLibs(alllibs, libs, libName)
+ if not libs then
+ return
+ end
+ for _, lib in pairs(libs) do
+ if lib.parent then
+ mergeParent(alllibs, lib.name, lib, libName)
+ else
+ mergeSource(alllibs, lib.name, lib, libName)
+ end
+ end
+end
+
+local function loadLocale(language, relative)
+ local localePath = ROOT / 'locale' / language / relative
+ local localeBuf = util.loadFile(localePath:string())
+ if localeBuf then
+ local locale = util.container()
+ xpcall(lni, log.error, localeBuf, localePath:string(), {locale})
+ return locale
+ end
+ return nil
+end
+
+local function fix(libs)
+ for name, lib in pairs(libs) do
+ lib.name = lib.name or name
+ lib.child = {}
+ end
+end
+
+local function scan(path)
+ local result = {path}
+ local i = 0
+ return function ()
+ i = i + 1
+ local current = result[i]
+ if not current then
+ return nil
+ end
+ if fs.is_directory(current) then
+ for path in current:list_directory() do
+ result[#result+1] = path
+ end
+ end
+ return current
+ end
+end
+
+local function init()
+ local lang = require 'language'
+ local id = lang.id
+ m.global = util.container()
+ m.library = util.container()
+ m.object = util.container()
+ m.other = util.container()
+ m.custom = util.container()
+
+ for libPath in (ROOT / 'libs'):list_directory() do
+ local libName = libPath:filename():string()
+ for path in scan(libPath) do
+ local libs
+ local buf = util.loadFile(path:string())
+ if buf then
+ libs = util.container()
+ xpcall(lni, log.error, buf, path:string(), {libs})
+ fix(libs)
+ end
+ local relative = fs.relative(path, ROOT)
+
+ local locale = loadLocale('en-US', relative)
+ mergeLocale(libs, locale)
+ if id ~= 'en-US' then
+ locale = loadLocale(id, relative)
+ mergeLocale(libs, locale)
+ end
+ mergeLibs(m, libs, libName)
+ end
+ end
+end
+
+function m.reload()
+ init()
+end
+
+init()
+
+return m
diff --git a/script-beta/src/log.lua b/script-beta/src/log.lua
new file mode 100644
index 00000000..1a66685a
--- /dev/null
+++ b/script-beta/src/log.lua
@@ -0,0 +1,140 @@
+local fs = require 'bee.filesystem'
+
+local osTime = os.time
+local osClock = os.clock
+local osDate = os.date
+local ioOpen = io.open
+local tablePack = table.pack
+local tableConcat = table.concat
+local tostring = tostring
+local debugTraceBack = debug.traceback
+local mathModf = math.modf
+local debugGetInfo = debug.getinfo
+local ioStdErr = io.stderr
+
+_ENV = nil
+
+local m = {}
+
+m.file = nil
+m.startTime = osTime() - osClock()
+m.size = 0
+m.maxSize = 100 * 1024 * 1024
+
+local function trimSrc(src)
+ src = src:sub(m.prefixLen + 3, -5)
+ src = src:gsub('^[/\\]+', '')
+ src = src:gsub('[\\/]+', '.')
+ return src
+end
+
+local function init_log_file()
+ if not m.file then
+ m.file = ioOpen(m.path, 'w')
+ if not m.file then
+ return
+ end
+ m.file:write('')
+ m.file:close()
+ m.file = ioOpen(m.path, 'ab')
+ if not m.file then
+ return
+ end
+ m.file:setvbuf 'no'
+ end
+end
+
+local function pushLog(level, ...)
+ if not m.path then
+ return
+ end
+ if m.size > m.maxSize then
+ return
+ end
+ local t = tablePack(...)
+ for i = 1, t.n do
+ t[i] = tostring(t[i])
+ end
+ local str = tableConcat(t, '\t', 1, t.n)
+ if level == 'error' then
+ str = str .. '\n' .. debugTraceBack(nil, 3)
+ end
+ local info = debugGetInfo(3, 'Sl')
+ return m.raw(0, level, str, info.source, info.currentline)
+end
+
+function m.info(...)
+ pushLog('info', ...)
+end
+
+function m.debug(...)
+ pushLog('debug', ...)
+end
+
+function m.trace(...)
+ pushLog('trace', ...)
+end
+
+function m.warn(...)
+ pushLog('warn', ...)
+end
+
+function m.error(...)
+ pushLog('error', ...)
+end
+
+function m.raw(thd, level, msg, source, currentline)
+ if level == 'error' then
+ ioStdErr:write(msg .. '\n')
+ end
+ init_log_file()
+ if not m.file then
+ return
+ end
+ local sec, ms = mathModf(m.startTime + osClock())
+ local timestr = osDate('%H:%M:%S', sec)
+ local agl = ''
+ if #level < 5 then
+ agl = (' '):rep(5 - #level)
+ end
+ local buf
+ if currentline == -1 then
+ buf = ('[%s.%03.f][%s]: %s[#%d]%s\n'):format(timestr, ms * 1000, level, agl, thd, msg)
+ else
+ buf = ('[%s.%03.f][%s]: %s[#%d:%s:%s]%s\n'):format(timestr, ms * 1000, level, agl, thd, trimSrc(source), currentline, msg)
+ end
+ m.file:write(buf)
+ m.size = m.size + #buf
+ if m.size > m.maxSize then
+ m.file:write('[REACH MAX SIZE]')
+ end
+ return
+end
+
+function m.init(root, path)
+ local lastBuf
+ if m.file then
+ m.file:close()
+ m.file = nil
+ local file = ioOpen(m.path, 'rb')
+ if file then
+ lastBuf = file:read 'a'
+ file:close()
+ end
+ end
+ m.path = path:string()
+ m.prefixLen = #root:string()
+ m.size = 0
+ if not fs.exists(path:parent_path()) then
+ fs.create_directories(path:parent_path())
+ end
+ if lastBuf then
+ init_log_file()
+ if m.file then
+ m.file:write(lastBuf)
+ m.size = m.size + #lastBuf
+ end
+ end
+end
+
+return m
diff --git a/script-beta/src/parser/ast.lua b/script-beta/src/parser/ast.lua
new file mode 100644
index 00000000..dfd7656d
--- /dev/null
+++ b/script-beta/src/parser/ast.lua
@@ -0,0 +1,1738 @@
+local emmy = require 'parser.emmy'
+
+local tonumber = tonumber
+local stringChar = string.char
+local utf8Char = utf8.char
+local tableUnpack = table.unpack
+local mathType = math.type
+local tableRemove = table.remove
+local pairs = pairs
+local tableSort = table.sort
+
+_ENV = nil
+
+local State
+local PushError
+local PushDiag
+
+-- goto 单独处理
+local RESERVED = {
+ ['and'] = true,
+ ['break'] = true,
+ ['do'] = true,
+ ['else'] = true,
+ ['elseif'] = true,
+ ['end'] = true,
+ ['false'] = true,
+ ['for'] = true,
+ ['function'] = true,
+ ['if'] = true,
+ ['in'] = true,
+ ['local'] = true,
+ ['nil'] = true,
+ ['not'] = true,
+ ['or'] = true,
+ ['repeat'] = true,
+ ['return'] = true,
+ ['then'] = true,
+ ['true'] = true,
+ ['until'] = true,
+ ['while'] = true,
+}
+
+local VersionOp = {
+ ['&'] = {'Lua 5.3', 'Lua 5.4'},
+ ['~'] = {'Lua 5.3', 'Lua 5.4'},
+ ['|'] = {'Lua 5.3', 'Lua 5.4'},
+ ['<<'] = {'Lua 5.3', 'Lua 5.4'},
+ ['>>'] = {'Lua 5.3', 'Lua 5.4'},
+ ['//'] = {'Lua 5.3', 'Lua 5.4'},
+}
+
+local function checkOpVersion(op)
+ local versions = VersionOp[op.type]
+ if not versions then
+ return
+ end
+ for i = 1, #versions do
+ if versions[i] == State.version then
+ return
+ end
+ end
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = op.start,
+ finish = op.finish,
+ version = versions,
+ info = {
+ version = State.version,
+ }
+ }
+end
+
+local function checkMissEnd(start)
+ if not State.MissEndErr then
+ return
+ end
+ local err = State.MissEndErr
+ State.MissEndErr = nil
+ local _, finish = State.lua:find('[%w_]+', start)
+ if not finish then
+ return
+ end
+ err.info.related = {
+ {
+ start = start,
+ finish = finish,
+ }
+ }
+ PushError {
+ type = 'MISS_END',
+ start = start,
+ finish = finish,
+ }
+end
+
+local function getSelect(vararg, index)
+ return {
+ type = 'select',
+ start = vararg.start,
+ finish = vararg.finish,
+ vararg = vararg,
+ index = index,
+ }
+end
+
+local function getValue(values, i)
+ if not values then
+ return nil, nil
+ end
+ local value = values[i]
+ if not value then
+ local last = values[#values]
+ if not last then
+ return nil, nil
+ end
+ if last.type == 'call' or last.type == 'varargs' then
+ return getSelect(last, i - #values + 1)
+ end
+ return nil, nil
+ end
+ if value.type == 'call' or value.type == 'varargs' then
+ value = getSelect(value, 1)
+ end
+ return value
+end
+
+local function createLocal(key, effect, value, attrs)
+ if not key then
+ return nil
+ end
+ key.type = 'local'
+ key.effect = effect
+ key.value = value
+ key.attrs = attrs
+ if value then
+ key.range = value.finish
+ end
+ return key
+end
+
+local function createCall(args, start, finish)
+ if args then
+ args.type = 'callargs'
+ args.start = start
+ args.finish = finish
+ end
+ return {
+ type = 'call',
+ start = start,
+ finish = finish,
+ args = args,
+ }
+end
+
+local function packList(start, list, finish)
+ local lastFinish = start
+ local wantName = true
+ local count = 0
+ for i = 1, #list do
+ local ast = list[i]
+ if ast.type == ',' then
+ if wantName or i == #list then
+ PushError {
+ type = 'UNEXPECT_SYMBOL',
+ start = ast.start,
+ finish = ast.finish,
+ info = {
+ symbol = ',',
+ }
+ }
+ end
+ wantName = true
+ else
+ if not wantName then
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = lastFinish,
+ finish = ast.start - 1,
+ info = {
+ symbol = ',',
+ }
+ }
+ end
+ wantName = false
+ count = count + 1
+ list[count] = list[i]
+ end
+ lastFinish = ast.finish + 1
+ end
+ for i = count + 1, #list do
+ list[i] = nil
+ end
+ list.type = 'list'
+ list.start = start
+ list.finish = finish - 1
+ return list
+end
+
+local BinaryLevel = {
+ ['or'] = 1,
+ ['and'] = 2,
+ ['<='] = 3,
+ ['>='] = 3,
+ ['<'] = 3,
+ ['>'] = 3,
+ ['~='] = 3,
+ ['=='] = 3,
+ ['|'] = 4,
+ ['~'] = 5,
+ ['&'] = 6,
+ ['<<'] = 7,
+ ['>>'] = 7,
+ ['..'] = 8,
+ ['+'] = 9,
+ ['-'] = 9,
+ ['*'] = 10,
+ ['//'] = 10,
+ ['/'] = 10,
+ ['%'] = 10,
+ ['^'] = 11,
+}
+
+local BinaryForward = {
+ [01] = true,
+ [02] = true,
+ [03] = true,
+ [04] = true,
+ [05] = true,
+ [06] = true,
+ [07] = true,
+ [08] = false,
+ [09] = true,
+ [10] = true,
+ [11] = false,
+}
+
+local Defs = {
+ Nil = function (pos)
+ return {
+ type = 'nil',
+ start = pos,
+ finish = pos + 2,
+ }
+ end,
+ True = function (pos)
+ return {
+ type = 'boolean',
+ start = pos,
+ finish = pos + 3,
+ [1] = true,
+ }
+ end,
+ False = function (pos)
+ return {
+ type = 'boolean',
+ start = pos,
+ finish = pos + 4,
+ [1] = false,
+ }
+ end,
+ LongComment = function (beforeEq, afterEq, str, missPos)
+ if missPos then
+ local endSymbol = ']' .. ('='):rep(afterEq-beforeEq) .. ']'
+ local s, _, w = str:find('(%][%=]*%])[%c%s]*$')
+ if s then
+ PushError {
+ type = 'ERR_LCOMMENT_END',
+ start = missPos - #str + s - 1,
+ finish = missPos - #str + s + #w - 2,
+ info = {
+ symbol = endSymbol,
+ },
+ fix = {
+ title = 'FIX_LCOMMENT_END',
+ {
+ start = missPos - #str + s - 1,
+ finish = missPos - #str + s + #w - 2,
+ text = endSymbol,
+ }
+ },
+ }
+ end
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = missPos,
+ finish = missPos,
+ info = {
+ symbol = endSymbol,
+ },
+ fix = {
+ title = 'ADD_LCOMMENT_END',
+ {
+ start = missPos,
+ finish = missPos,
+ text = endSymbol,
+ }
+ },
+ }
+ end
+ end,
+ CLongComment = function (start1, finish1, start2, finish2)
+ PushError {
+ type = 'ERR_C_LONG_COMMENT',
+ start = start1,
+ finish = finish2 - 1,
+ fix = {
+ title = 'FIX_C_LONG_COMMENT',
+ {
+ start = start1,
+ finish = finish1 - 1,
+ text = '--[[',
+ },
+ {
+ start = start2,
+ finish = finish2 - 1,
+ text = '--]]'
+ },
+ }
+ }
+ end,
+ CCommentPrefix = function (start, finish)
+ PushError {
+ type = 'ERR_COMMENT_PREFIX',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_COMMENT_PREFIX',
+ {
+ start = start,
+ finish = finish - 1,
+ text = '--',
+ },
+ }
+ }
+ end,
+ String = function (start, quote, str, finish)
+ return {
+ type = 'string',
+ start = start,
+ finish = finish - 1,
+ [1] = str,
+ [2] = quote,
+ }
+ end,
+ LongString = function (beforeEq, afterEq, str, missPos)
+ if missPos then
+ local endSymbol = ']' .. ('='):rep(afterEq-beforeEq) .. ']'
+ local s, _, w = str:find('(%][%=]*%])[%c%s]*$')
+ if s then
+ PushError {
+ type = 'ERR_LSTRING_END',
+ start = missPos - #str + s - 1,
+ finish = missPos - #str + s + #w - 2,
+ info = {
+ symbol = endSymbol,
+ },
+ fix = {
+ title = 'FIX_LSTRING_END',
+ {
+ start = missPos - #str + s - 1,
+ finish = missPos - #str + s + #w - 2,
+ text = endSymbol,
+ }
+ },
+ }
+ end
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = missPos,
+ finish = missPos,
+ info = {
+ symbol = endSymbol,
+ },
+ fix = {
+ title = 'ADD_LSTRING_END',
+ {
+ start = missPos,
+ finish = missPos,
+ text = endSymbol,
+ }
+ },
+ }
+ end
+ return '[' .. ('='):rep(afterEq-beforeEq) .. '[', str
+ end,
+ Char10 = function (char)
+ char = tonumber(char)
+ if not char or char < 0 or char > 255 then
+ return ''
+ end
+ return stringChar(char)
+ end,
+ Char16 = function (pos, char)
+ if State.version == 'Lua 5.1' then
+ PushError {
+ type = 'ERR_ESC',
+ start = pos-1,
+ finish = pos,
+ version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
+ info = {
+ version = State.version,
+ }
+ }
+ return char
+ end
+ return stringChar(tonumber(char, 16))
+ end,
+ CharUtf8 = function (pos, char)
+ if State.version ~= 'Lua 5.3'
+ and State.version ~= 'Lua 5.4'
+ and State.version ~= 'LuaJIT'
+ then
+ PushError {
+ type = 'ERR_ESC',
+ start = pos-3,
+ finish = pos-2,
+ version = {'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
+ info = {
+ version = State.version,
+ }
+ }
+ return char
+ end
+ if #char == 0 then
+ PushError {
+ type = 'UTF8_SMALL',
+ start = pos-3,
+ finish = pos,
+ }
+ return ''
+ end
+ local v = tonumber(char, 16)
+ if not v then
+ for i = 1, #char do
+ if not tonumber(char:sub(i, i), 16) then
+ PushError {
+ type = 'MUST_X16',
+ start = pos + i - 1,
+ finish = pos + i - 1,
+ }
+ end
+ end
+ return ''
+ end
+ if State.version == 'Lua 5.4' then
+ if v < 0 or v > 0x7FFFFFFF then
+ PushError {
+ type = 'UTF8_MAX',
+ start = pos-3,
+ finish = pos+#char,
+ info = {
+ min = '00000000',
+ max = '7FFFFFFF',
+ }
+ }
+ end
+ else
+ if v < 0 or v > 0x10FFFF then
+ PushError {
+ type = 'UTF8_MAX',
+ start = pos-3,
+ finish = pos+#char,
+ version = v <= 0x7FFFFFFF and 'Lua 5.4' or nil,
+ info = {
+ min = '000000',
+ max = '10FFFF',
+ }
+ }
+ end
+ end
+ if v >= 0 and v <= 0x10FFFF then
+ return utf8Char(v)
+ end
+ return ''
+ end,
+ Number = function (start, number, finish)
+ local n = tonumber(number)
+ if n then
+ State.LastNumber = {
+ type = 'number',
+ start = start,
+ finish = finish - 1,
+ [1] = n,
+ }
+ return State.LastNumber
+ else
+ PushError {
+ type = 'MALFORMED_NUMBER',
+ start = start,
+ finish = finish - 1,
+ }
+ State.LastNumber = {
+ type = 'number',
+ start = start,
+ finish = finish - 1,
+ [1] = 0,
+ }
+ return State.LastNumber
+ end
+ end,
+ FFINumber = function (start, symbol)
+ local lastNumber = State.LastNumber
+ if mathType(lastNumber[1]) == 'float' then
+ PushError {
+ type = 'UNKNOWN_SYMBOL',
+ start = start,
+ finish = start + #symbol - 1,
+ info = {
+ symbol = symbol,
+ }
+ }
+ lastNumber[1] = 0
+ return
+ end
+ if State.version ~= 'LuaJIT' then
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = start,
+ finish = start + #symbol - 1,
+ version = 'LuaJIT',
+ info = {
+ version = State.version,
+ }
+ }
+ lastNumber[1] = 0
+ end
+ end,
+ ImaginaryNumber = function (start, symbol)
+ local lastNumber = State.LastNumber
+ if State.version ~= 'LuaJIT' then
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = start,
+ finish = start + #symbol - 1,
+ version = 'LuaJIT',
+ info = {
+ version = State.version,
+ }
+ }
+ end
+ lastNumber[1] = 0
+ end,
+ Name = function (start, str, finish)
+ local isKeyWord
+ if RESERVED[str] then
+ isKeyWord = true
+ elseif str == 'goto' then
+ if State.version ~= 'Lua 5.1' and State.version ~= 'LuaJIT' then
+ isKeyWord = true
+ end
+ end
+ if isKeyWord then
+ PushError {
+ type = 'KEYWORD',
+ start = start,
+ finish = finish - 1,
+ }
+ end
+ return {
+ type = 'name',
+ start = start,
+ finish = finish - 1,
+ [1] = str,
+ }
+ end,
+ GetField = function (dot, field)
+ local obj = {
+ type = 'getfield',
+ field = field,
+ dot = dot,
+ start = dot.start,
+ finish = (field or dot).finish,
+ }
+ if field then
+ field.type = 'field'
+ field.parent = obj
+ end
+ return obj
+ end,
+ GetIndex = function (start, index, finish)
+ local obj = {
+ type = 'getindex',
+ start = start,
+ finish = finish - 1,
+ index = index,
+ }
+ if index then
+ index.parent = obj
+ end
+ return obj
+ end,
+ GetMethod = function (colon, method)
+ local obj = {
+ type = 'getmethod',
+ method = method,
+ colon = colon,
+ start = colon.start,
+ finish = (method or colon).finish,
+ }
+ if method then
+ method.type = 'method'
+ method.parent = obj
+ end
+ return obj
+ end,
+ Single = function (unit)
+ unit.type = 'getname'
+ return unit
+ end,
+ Simple = function (units)
+ local last = units[1]
+ for i = 2, #units do
+ local current = units[i]
+ current.node = last
+ current.start = last.start
+ last.next = current
+ last = units[i]
+ end
+ return last
+ end,
+ SimpleCall = function (call)
+ if call.type ~= 'call' and call.type ~= 'getmethod' then
+ PushError {
+ type = 'EXP_IN_ACTION',
+ start = call.start,
+ finish = call.finish,
+ }
+ end
+ return call
+ end,
+ BinaryOp = function (start, op)
+ return {
+ type = op,
+ start = start,
+ finish = start + #op - 1,
+ }
+ end,
+ UnaryOp = function (start, op)
+ return {
+ type = op,
+ start = start,
+ finish = start + #op - 1,
+ }
+ end,
+ Unary = function (first, ...)
+ if not ... then
+ return nil
+ end
+ local list = {first, ...}
+ local e = list[#list]
+ for i = #list - 1, 1, -1 do
+ local op = list[i]
+ checkOpVersion(op)
+ e = {
+ type = 'unary',
+ op = op,
+ start = op.start,
+ finish = e.finish,
+ [1] = e,
+ }
+ end
+ return e
+ end,
+ SubBinary = function (op, symb)
+ if symb then
+ return op, symb
+ end
+ PushError {
+ type = 'MISS_EXP',
+ start = op.start,
+ finish = op.finish,
+ }
+ end,
+ Binary = function (first, op, second, ...)
+ if not first then
+ return second
+ end
+ if not op then
+ return first
+ end
+ if not ... then
+ checkOpVersion(op)
+ return {
+ type = 'binary',
+ op = op,
+ start = first.start,
+ finish = second.finish,
+ [1] = first,
+ [2] = second,
+ }
+ end
+ local list = {first, op, second, ...}
+ local ops = {}
+ for i = 2, #list, 2 do
+ ops[#ops+1] = i
+ end
+ tableSort(ops, function (a, b)
+ local op1 = list[a]
+ local op2 = list[b]
+ local lv1 = BinaryLevel[op1.type]
+ local lv2 = BinaryLevel[op2.type]
+ if lv1 == lv2 then
+ local forward = BinaryForward[lv1]
+ if forward then
+ return op1.start > op2.start
+ else
+ return op1.start < op2.start
+ end
+ else
+ return lv1 < lv2
+ end
+ end)
+ local final
+ for i = #ops, 1, -1 do
+ local n = ops[i]
+ local op = list[n]
+ local left = list[n-1]
+ local right = list[n+1]
+ local exp = {
+ type = 'binary',
+ op = op,
+ start = left.start,
+ finish = right and right.finish or op.finish,
+ [1] = left,
+ [2] = right,
+ }
+ local leftIndex, rightIndex
+ if list[left] then
+ leftIndex = list[left[1]]
+ else
+ leftIndex = n - 1
+ end
+ if list[right] then
+ rightIndex = list[right[2]]
+ else
+ rightIndex = n + 1
+ end
+
+ list[leftIndex] = exp
+ list[rightIndex] = exp
+ list[left] = leftIndex
+ list[right] = rightIndex
+ list[exp] = n
+ final = exp
+
+ checkOpVersion(op)
+ end
+ return final
+ end,
+ Paren = function (start, exp, finish)
+ if exp and exp.type == 'paren' then
+ exp.start = start
+ exp.finish = finish - 1
+ return exp
+ end
+ return {
+ type = 'paren',
+ start = start,
+ finish = finish - 1,
+ exp = exp
+ }
+ end,
+ VarArgs = function (dots)
+ dots.type = 'varargs'
+ return dots
+ end,
+ PackLoopArgs = function (start, list, finish)
+ local list = packList(start, list, finish)
+ if #list == 0 then
+ PushError {
+ type = 'MISS_LOOP_MIN',
+ start = finish,
+ finish = finish,
+ }
+ elseif #list == 1 then
+ PushError {
+ type = 'MISS_LOOP_MAX',
+ start = finish,
+ finish = finish,
+ }
+ end
+ return list
+ end,
+ PackInNameList = function (start, list, finish)
+ local list = packList(start, list, finish)
+ if #list == 0 then
+ PushError {
+ type = 'MISS_NAME',
+ start = start,
+ finish = finish,
+ }
+ end
+ return list
+ end,
+ PackInExpList = function (start, list, finish)
+ local list = packList(start, list, finish)
+ if #list == 0 then
+ PushError {
+ type = 'MISS_EXP',
+ start = start,
+ finish = finish,
+ }
+ end
+ return list
+ end,
+ PackExpList = function (start, list, finish)
+ local list = packList(start, list, finish)
+ return list
+ end,
+ PackNameList = function (start, list, finish)
+ local list = packList(start, list, finish)
+ return list
+ end,
+ Call = function (start, args, finish)
+ return createCall(args, start, finish-1)
+ end,
+ COMMA = function (start)
+ return {
+ type = ',',
+ start = start,
+ finish = start,
+ }
+ end,
+ SEMICOLON = function (start)
+ return {
+ type = ';',
+ start = start,
+ finish = start,
+ }
+ end,
+ DOTS = function (start)
+ return {
+ type = '...',
+ start = start,
+ finish = start + 2,
+ }
+ end,
+ COLON = function (start)
+ return {
+ type = ':',
+ start = start,
+ finish = start,
+ }
+ end,
+ DOT = function (start)
+ return {
+ type = '.',
+ start = start,
+ finish = start,
+ }
+ end,
+ Function = function (functionStart, functionFinish, args, actions, endStart, endFinish)
+ actions.type = 'function'
+ actions.start = functionStart
+ actions.finish = endFinish - 1
+ actions.args = args
+ actions.keyword= {
+ functionStart, functionFinish - 1,
+ endStart, endFinish - 1,
+ }
+ checkMissEnd(functionStart)
+ return actions
+ end,
+ NamedFunction = function (functionStart, functionFinish, name, args, actions, endStart, endFinish)
+ actions.type = 'function'
+ actions.start = functionStart
+ actions.finish = endFinish - 1
+ actions.args = args
+ actions.keyword= {
+ functionStart, functionFinish - 1,
+ endStart, endFinish - 1,
+ }
+ checkMissEnd(functionStart)
+ if not name then
+ return
+ end
+ if name.type == 'getname' then
+ name.type = 'setname'
+ name.value = actions
+ elseif name.type == 'getfield' then
+ name.type = 'setfield'
+ name.value = actions
+ elseif name.type == 'getmethod' then
+ name.type = 'setmethod'
+ name.value = actions
+ end
+ name.range = actions.finish
+ name.vstart = functionStart
+ return name
+ end,
+ LocalFunction = function (start, functionStart, functionFinish, name, args, actions, endStart, endFinish)
+ actions.type = 'function'
+ actions.start = start
+ actions.finish = endFinish - 1
+ actions.args = args
+ actions.keyword= {
+ functionStart, functionFinish - 1,
+ endStart, endFinish - 1,
+ }
+ checkMissEnd(start)
+
+ if not name then
+ return
+ end
+
+ if name.type ~= 'getname' then
+ PushError {
+ type = 'UNEXPECT_LFUNC_NAME',
+ start = name.start,
+ finish = name.finish,
+ }
+ return
+ end
+
+ local loc = createLocal(name, name.start, actions)
+ loc.localfunction = true
+ loc.vstart = functionStart
+
+ return loc
+ end,
+ Table = function (start, tbl, finish)
+ tbl.type = 'table'
+ tbl.start = start
+ tbl.finish = finish - 1
+ local wantField = true
+ local lastStart = start + 1
+ local fieldCount = 0
+ for i = 1, #tbl do
+ local field = tbl[i]
+ if field.type == ',' or field.type == ';' then
+ if wantField then
+ PushError {
+ type = 'MISS_EXP',
+ start = lastStart,
+ finish = field.start - 1,
+ }
+ end
+ wantField = true
+ lastStart = field.finish + 1
+ else
+ if not wantField then
+ PushError {
+ type = 'MISS_SEP_IN_TABLE',
+ start = lastStart,
+ finish = field.start - 1,
+ }
+ end
+ wantField = false
+ lastStart = field.finish + 1
+ fieldCount = fieldCount + 1
+ tbl[fieldCount] = field
+ end
+ end
+ for i = fieldCount + 1, #tbl do
+ tbl[i] = nil
+ end
+ return tbl
+ end,
+ NewField = function (start, field, value, finish)
+ local obj = {
+ type = 'tablefield',
+ start = start,
+ finish = finish-1,
+ field = field,
+ value = value,
+ }
+ if field then
+ field.type = 'field'
+ field.parent = obj
+ end
+ return obj
+ end,
+ NewIndex = function (start, index, value, finish)
+ local obj = {
+ type = 'tableindex',
+ start = start,
+ finish = finish-1,
+ index = index,
+ value = value,
+ }
+ if index then
+ index.parent = obj
+ end
+ return obj
+ end,
+ FuncArgs = function (start, args, finish)
+ args.type = 'funcargs'
+ args.start = start
+ args.finish = finish - 1
+ local lastStart = start + 1
+ local wantName = true
+ local argCount = 0
+ for i = 1, #args do
+ local arg = args[i]
+ local argAst = arg
+ if argAst.type == ',' then
+ if wantName then
+ PushError {
+ type = 'MISS_NAME',
+ start = lastStart,
+ finish = argAst.start-1,
+ }
+ end
+ wantName = true
+ else
+ if not wantName then
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = lastStart-1,
+ finish = argAst.start-1,
+ info = {
+ symbol = ',',
+ }
+ }
+ end
+ wantName = false
+ argCount = argCount + 1
+
+ if argAst.type == '...' then
+ args[argCount] = arg
+ if i < #args then
+ local a = args[i+1]
+ local b = args[#args]
+ PushError {
+ type = 'ARGS_AFTER_DOTS',
+ start = a.start,
+ finish = b.finish,
+ }
+ end
+ break
+ else
+ args[argCount] = createLocal(arg, arg.start)
+ end
+ end
+ lastStart = argAst.finish + 1
+ end
+ for i = argCount + 1, #args do
+ args[i] = nil
+ end
+ if wantName and argCount > 0 then
+ PushError {
+ type = 'MISS_NAME',
+ start = lastStart,
+ finish = finish - 1,
+ }
+ end
+ return args
+ end,
+ Set = function (start, keys, values, finish)
+ for i = 1, #keys do
+ local key = keys[i]
+ if key.type == 'getname' then
+ key.type = 'setname'
+ key.value = getValue(values, i)
+ elseif key.type == 'getfield' then
+ key.type = 'setfield'
+ key.value = getValue(values, i)
+ elseif key.type == 'getindex' then
+ key.type = 'setindex'
+ key.value = getValue(values, i)
+ end
+ if key.value then
+ key.range = key.value.finish
+ end
+ end
+ if values then
+ for i = #keys+1, #values do
+ local value = values[i]
+ PushDiag('redundant-value', {
+ start = value.start,
+ finish = value.finish,
+ max = #keys,
+ passed = #values,
+ })
+ end
+ end
+ return tableUnpack(keys)
+ end,
+ LocalAttr = function (attrs)
+ for i = 1, #attrs do
+ local attr = attrs[i]
+ local attrAst = attr
+ attrAst.type = 'localattr'
+ if State.version ~= 'Lua 5.4' then
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = attrAst.start,
+ finish = attrAst.finish,
+ version = 'Lua 5.4',
+ info = {
+ version = State.version,
+ }
+ }
+ elseif attrAst[1] ~= 'const' and attrAst[1] ~= 'close' then
+ PushError {
+ type = 'UNKNOWN_TAG',
+ start = attrAst.start,
+ finish = attrAst.finish,
+ info = {
+ tag = attrAst[1],
+ }
+ }
+ elseif i > 1 then
+ PushError {
+ type = 'MULTI_TAG',
+ start = attrAst.start,
+ finish = attrAst.finish,
+ info = {
+ tag = attrAst[1],
+ }
+ }
+ end
+ end
+ return attrs
+ end,
+ LocalName = function (name, attrs)
+ if not name then
+ return name
+ end
+ name.attrs = attrs
+ return name
+ end,
+ Local = function (start, keys, values, finish)
+ for i = 1, #keys do
+ local key = keys[i]
+ local attrs = key.attrs
+ key.attrs = nil
+ local value = getValue(values, i)
+ createLocal(key, finish, value, attrs)
+ end
+ if values then
+ for i = #keys+1, #values do
+ local value = values[i]
+ PushDiag('redundant-value', {
+ start = value.start,
+ finish = value.finish,
+ max = #keys,
+ passed = #values,
+ })
+ end
+ end
+ return tableUnpack(keys)
+ end,
+ Do = function (start, actions, endA, endB)
+ actions.type = 'do'
+ actions.start = start
+ actions.finish = endB - 1
+ actions.keyword= {
+ start, start + #'do' - 1,
+ endA , endB - 1,
+ }
+ checkMissEnd(start)
+ return actions
+ end,
+ Break = function (start, finish)
+ return {
+ type = 'break',
+ start = start,
+ finish = finish - 1,
+ }
+ end,
+ Return = function (start, exps, finish)
+ exps.type = 'return'
+ exps.start = start
+ exps.finish = finish - 1
+ return exps
+ end,
+ Label = function (start, name, finish)
+ if State.version == 'Lua 5.1' then
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = start,
+ finish = finish - 1,
+ version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
+ info = {
+ version = State.version,
+ }
+ }
+ return
+ end
+ if not name then
+ return nil
+ end
+ name.type = 'label'
+ return name
+ end,
+ GoTo = function (start, name, finish)
+ if State.version == 'Lua 5.1' then
+ PushError {
+ type = 'UNSUPPORT_SYMBOL',
+ start = start,
+ finish = finish - 1,
+ version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
+ info = {
+ version = State.version,
+ }
+ }
+ return
+ end
+ if not name then
+ return nil
+ end
+ name.type = 'goto'
+ return name
+ end,
+ IfBlock = function (ifStart, ifFinish, exp, thenStart, thenFinish, actions, finish)
+ actions.type = 'ifblock'
+ actions.start = ifStart
+ actions.finish = finish - 1
+ actions.filter = exp
+ actions.keyword= {
+ ifStart, ifFinish - 1,
+ thenStart, thenFinish - 1,
+ }
+ return actions
+ end,
+ ElseIfBlock = function (elseifStart, elseifFinish, exp, thenStart, thenFinish, actions, finish)
+ actions.type = 'elseifblock'
+ actions.start = elseifStart
+ actions.finish = finish - 1
+ actions.filter = exp
+ actions.keyword= {
+ elseifStart, elseifFinish - 1,
+ thenStart, thenFinish - 1,
+ }
+ return actions
+ end,
+ ElseBlock = function (elseStart, elseFinish, actions, finish)
+ actions.type = 'elseblock'
+ actions.start = elseStart
+ actions.finish = finish - 1
+ actions.keyword= {
+ elseStart, elseFinish - 1,
+ }
+ return actions
+ end,
+ If = function (start, blocks, endStart, endFinish)
+ blocks.type = 'if'
+ blocks.start = start
+ blocks.finish = endFinish - 1
+ local hasElse
+ for i = 1, #blocks do
+ local block = blocks[i]
+ if i == 1 and block.type ~= 'ifblock' then
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = block.start,
+ finish = block.start,
+ info = {
+ symbol = 'if',
+ }
+ }
+ end
+ if hasElse then
+ PushError {
+ type = 'BLOCK_AFTER_ELSE',
+ start = block.start,
+ finish = block.finish,
+ }
+ end
+ if block.type == 'elseblock' then
+ hasElse = true
+ end
+ end
+ checkMissEnd(start)
+ return blocks
+ end,
+ Loop = function (forA, forB, arg, steps, doA, doB, blockStart, block, endA, endB)
+ local loc = createLocal(arg, blockStart, steps[1])
+ block.type = 'loop'
+ block.start = forA
+ block.finish = endB - 1
+ block.loc = loc
+ block.max = steps[2]
+ block.step = steps[3]
+ block.keyword= {
+ forA, forB - 1,
+ doA , doB - 1,
+ endA, endB - 1,
+ }
+ checkMissEnd(forA)
+ return block
+ end,
+ In = function (forA, forB, keys, inA, inB, exp, doA, doB, blockStart, block, endA, endB)
+ local func = tableRemove(exp, 1)
+ block.type = 'in'
+ block.start = forA
+ block.finish = endB - 1
+ block.keys = keys
+ block.keyword= {
+ forA, forB - 1,
+ inA , inB - 1,
+ doA , doB - 1,
+ endA, endB - 1,
+ }
+
+ local values
+ if func then
+ local call = createCall(exp, func.finish + 1, exp.finish)
+ call.node = func
+ call.start = func.start
+ func.next = call
+ values = { call }
+ keys.range = call.finish
+ end
+ for i = 1, #keys do
+ local loc = keys[i]
+ if values then
+ createLocal(loc, blockStart, getValue(values, i))
+ else
+ createLocal(loc, blockStart)
+ end
+ end
+ checkMissEnd(forA)
+ return block
+ end,
+ While = function (whileA, whileB, filter, doA, doB, block, endA, endB)
+ block.type = 'while'
+ block.start = whileA
+ block.finish = endB - 1
+ block.filter = filter
+ block.keyword= {
+ whileA, whileB - 1,
+ doA , doB - 1,
+ endA , endB - 1,
+ }
+ checkMissEnd(whileA)
+ return block
+ end,
+ Repeat = function (repeatA, repeatB, block, untilA, untilB, filter, finish)
+ block.type = 'repeat'
+ block.start = repeatA
+ block.finish = finish
+ block.filter = filter
+ block.keyword= {
+ repeatA, repeatB - 1,
+ untilA , untilB - 1,
+ }
+ return block
+ end,
+ Lua = function (start, actions, finish)
+ actions.type = 'main'
+ actions.start = start
+ actions.finish = finish - 1
+ return actions
+ end,
+
+ -- 捕获错误
+ UnknownSymbol = function (start, symbol)
+ PushError {
+ type = 'UNKNOWN_SYMBOL',
+ start = start,
+ finish = start + #symbol - 1,
+ info = {
+ symbol = symbol,
+ }
+ }
+ return
+ end,
+ UnknownAction = function (start, symbol)
+ PushError {
+ type = 'UNKNOWN_SYMBOL',
+ start = start,
+ finish = start + #symbol - 1,
+ info = {
+ symbol = symbol,
+ }
+ }
+ end,
+ DirtyName = function (pos)
+ PushError {
+ type = 'MISS_NAME',
+ start = pos,
+ finish = pos,
+ }
+ return nil
+ end,
+ DirtyExp = function (pos)
+ PushError {
+ type = 'MISS_EXP',
+ start = pos,
+ finish = pos,
+ }
+ return nil
+ end,
+ MissExp = function (pos)
+ PushError {
+ type = 'MISS_EXP',
+ start = pos,
+ finish = pos,
+ }
+ end,
+ MissExponent = function (start, finish)
+ PushError {
+ type = 'MISS_EXPONENT',
+ start = start,
+ finish = finish - 1,
+ }
+ end,
+ MissQuote1 = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '"'
+ }
+ }
+ end,
+ MissQuote2 = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = "'"
+ }
+ }
+ end,
+ MissEscX = function (pos)
+ PushError {
+ type = 'MISS_ESC_X',
+ start = pos-2,
+ finish = pos+1,
+ }
+ end,
+ MissTL = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '{',
+ }
+ }
+ end,
+ MissTR = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '}',
+ }
+ }
+ end,
+ MissBR = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = ']',
+ }
+ }
+ end,
+ MissPL = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '(',
+ }
+ }
+ end,
+ MissPR = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = ')',
+ }
+ }
+ end,
+ ErrEsc = function (pos)
+ PushError {
+ type = 'ERR_ESC',
+ start = pos-1,
+ finish = pos,
+ }
+ end,
+ MustX16 = function (pos, str)
+ PushError {
+ type = 'MUST_X16',
+ start = pos,
+ finish = pos + #str - 1,
+ }
+ end,
+ MissAssign = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '=',
+ }
+ }
+ end,
+ MissTableSep = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = ','
+ }
+ }
+ end,
+ MissField = function (pos)
+ PushError {
+ type = 'MISS_FIELD',
+ start = pos,
+ finish = pos,
+ }
+ end,
+ MissMethod = function (pos)
+ PushError {
+ type = 'MISS_METHOD',
+ start = pos,
+ finish = pos,
+ }
+ end,
+ MissLabel = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = '::',
+ }
+ }
+ end,
+ MissEnd = function (pos)
+ State.MissEndErr = PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = 'end',
+ }
+ }
+ return pos, pos
+ end,
+ MissDo = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = 'do',
+ }
+ }
+ return pos, pos
+ end,
+ MissComma = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = ',',
+ }
+ }
+ end,
+ MissIn = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = 'in',
+ }
+ }
+ return pos, pos
+ end,
+ MissUntil = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = 'until',
+ }
+ }
+ return pos, pos
+ end,
+ MissThen = function (pos)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = pos,
+ finish = pos,
+ info = {
+ symbol = 'then',
+ }
+ }
+ return pos, pos
+ end,
+ MissName = function (pos)
+ PushError {
+ type = 'MISS_NAME',
+ start = pos,
+ finish = pos,
+ }
+ end,
+ ExpInAction = function (start, exp, finish)
+ PushError {
+ type = 'EXP_IN_ACTION',
+ start = start,
+ finish = finish - 1,
+ }
+ return exp
+ end,
+ MissIf = function (start, block)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = start,
+ finish = start,
+ info = {
+ symbol = 'if',
+ }
+ }
+ return block
+ end,
+ MissGT = function (start)
+ PushError {
+ type = 'MISS_SYMBOL',
+ start = start,
+ finish = start,
+ info = {
+ symbol = '>'
+ }
+ }
+ end,
+ ErrAssign = function (start, finish)
+ PushError {
+ type = 'ERR_ASSIGN_AS_EQ',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_ASSIGN_AS_EQ',
+ {
+ start = start,
+ finish = finish - 1,
+ text = '=',
+ }
+ }
+ }
+ end,
+ ErrEQ = function (start, finish)
+ PushError {
+ type = 'ERR_EQ_AS_ASSIGN',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_EQ_AS_ASSIGN',
+ {
+ start = start,
+ finish = finish - 1,
+ text = '==',
+ }
+ }
+ }
+ return '=='
+ end,
+ ErrUEQ = function (start, finish)
+ PushError {
+ type = 'ERR_UEQ',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_UEQ',
+ {
+ start = start,
+ finish = finish - 1,
+ text = '~=',
+ }
+ }
+ }
+ return '=='
+ end,
+ ErrThen = function (start, finish)
+ PushError {
+ type = 'ERR_THEN_AS_DO',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_THEN_AS_DO',
+ {
+ start = start,
+ finish = finish - 1,
+ text = 'then',
+ }
+ }
+ }
+ return start, finish
+ end,
+ ErrDo = function (start, finish)
+ PushError {
+ type = 'ERR_DO_AS_THEN',
+ start = start,
+ finish = finish - 1,
+ fix = {
+ title = 'FIX_DO_AS_THEN',
+ {
+ start = start,
+ finish = finish - 1,
+ text = 'do',
+ }
+ }
+ }
+ return start, finish
+ end,
+}
+
+--for k, v in pairs(emmy.ast) do
+-- Defs[k] = v
+--end
+
+local function init(state)
+ State = state
+ PushError = state.pushError
+ PushDiag = state.pushDiag
+ emmy.init(State)
+end
+
+local function close()
+ State = nil
+ PushError = nil
+ PushDiag = nil
+end
+
+return {
+ defs = Defs,
+ init = init,
+ close = close,
+}
diff --git a/script-beta/src/parser/calcline.lua b/script-beta/src/parser/calcline.lua
new file mode 100644
index 00000000..26f475d9
--- /dev/null
+++ b/script-beta/src/parser/calcline.lua
@@ -0,0 +1,93 @@
+local m = require 'lpeglabel'
+
+local row
+local fl
+local NL = (m.P'\r\n' + m.S'\r\n') * m.Cp() / function (pos)
+ row = row + 1
+ fl = pos
+end
+local ROWCOL = (NL + m.P(1))^0
+local function rowcol(str, n)
+ row = 1
+ fl = 1
+ ROWCOL:match(str:sub(1, n))
+ local col = n - fl + 1
+ return row, col
+end
+
+local function rowcol_utf8(str, n)
+ row = 1
+ fl = 1
+ ROWCOL:match(str:sub(1, n))
+ return row, utf8.len(str, fl, n)
+end
+
+local function position(str, _row, _col)
+ local cur = 1
+ local row = 1
+ while true do
+ if row == _row then
+ return cur + _col - 1
+ elseif row > _row then
+ return cur - 1
+ end
+ local pos = str:find('[\r\n]', cur)
+ if not pos then
+ return #str
+ end
+ row = row + 1
+ if str:sub(pos, pos+1) == '\r\n' then
+ cur = pos + 2
+ else
+ cur = pos + 1
+ end
+ end
+end
+
+local function position_utf8(str, _row, _col)
+ local cur = 1
+ local row = 1
+ while true do
+ if row == _row then
+ return utf8.offset(str, _col, cur)
+ elseif row > _row then
+ return cur - 1
+ end
+ local pos = str:find('[\r\n]', cur)
+ if not pos then
+ return #str
+ end
+ row = row + 1
+ if str:sub(pos, pos+1) == '\r\n' then
+ cur = pos + 2
+ else
+ cur = pos + 1
+ end
+ end
+end
+
+local NL = m.P'\r\n' + m.S'\r\n'
+
+local function line(str, row)
+ local count = 0
+ local res
+ local LINE = m.Cmt((1 - NL)^0, function (_, _, c)
+ count = count + 1
+ if count == row then
+ res = c
+ return false
+ end
+ return true
+ end)
+ local MATCH = (LINE * NL)^0 * LINE
+ MATCH:match(str)
+ return res
+end
+
+return {
+ rowcol = rowcol,
+ rowcol_utf8 = rowcol_utf8,
+ position = position,
+ position_utf8 = position_utf8,
+ line = line,
+}
diff --git a/script-beta/src/parser/compile.lua b/script-beta/src/parser/compile.lua
new file mode 100644
index 00000000..bcd9ecc8
--- /dev/null
+++ b/script-beta/src/parser/compile.lua
@@ -0,0 +1,549 @@
+local guide = require 'parser.guide'
+local type = type
+
+local specials = {
+ ['_G'] = true,
+ ['rawset'] = true,
+ ['rawget'] = true,
+ ['setmetatable'] = true,
+ ['require'] = true,
+ ['dofile'] = true,
+ ['loadfile'] = true,
+ ['pcall'] = true,
+ ['xpcall'] = true,
+}
+
+_ENV = nil
+
+local LocalLimit = 200
+local pushError, Compile, CompileBlock, Block, GoToTag, ENVMode, Compiled, LocalCount, Version, Root
+
+local function addRef(node, obj)
+ if not node.ref then
+ node.ref = {}
+ end
+ node.ref[#node.ref+1] = obj
+ obj.node = node
+end
+
+local function addSpecial(name, obj)
+ if not Root.specials then
+ Root.specials = {}
+ end
+ if not Root.specials[name] then
+ Root.specials[name] = {}
+ end
+ Root.specials[name][#Root.specials[name]+1] = obj
+ obj.special = name
+end
+
+local vmMap = {
+ ['getname'] = function (obj)
+ local loc = guide.getLocal(obj, obj[1], obj.start)
+ if loc then
+ obj.type = 'getlocal'
+ obj.loc = loc
+ addRef(loc, obj)
+ if loc.special then
+ addSpecial(loc.special, obj)
+ end
+ else
+ obj.type = 'getglobal'
+ if ENVMode == '_ENV' then
+ local node = guide.getLocal(obj, '_ENV', obj.start)
+ if node then
+ addRef(node, obj)
+ end
+ end
+ local name = obj[1]
+ if specials[name] then
+ addSpecial(name, obj)
+ end
+ end
+ return obj
+ end,
+ ['getfield'] = function (obj)
+ Compile(obj.node, obj)
+ end,
+ ['call'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.args, obj)
+ end,
+ ['callargs'] = function (obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ end,
+ ['binary'] = function (obj)
+ Compile(obj[1], obj)
+ Compile(obj[2], obj)
+ end,
+ ['unary'] = function (obj)
+ Compile(obj[1], obj)
+ end,
+ ['varargs'] = function (obj)
+ local func = guide.getParentFunction(obj)
+ if func then
+ local index, vararg = guide.getFunctionVarArgs(func)
+ if not index then
+ pushError {
+ type = 'UNEXPECT_DOTS',
+ start = obj.start,
+ finish = obj.finish,
+ }
+ end
+ if vararg then
+ if not vararg.ref then
+ vararg.ref = {}
+ end
+ vararg.ref[#vararg.ref+1] = obj
+ end
+ end
+ end,
+ ['paren'] = function (obj)
+ Compile(obj.exp, obj)
+ end,
+ ['getindex'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.index, obj)
+ end,
+ ['setindex'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.index, obj)
+ Compile(obj.value, obj)
+ end,
+ ['getmethod'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.method, obj)
+ end,
+ ['setmethod'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.method, obj)
+ local value = obj.value
+ value.localself = {
+ type = 'local',
+ start = 0,
+ finish = 0,
+ method = obj,
+ effect = obj.finish,
+ tag = 'self',
+ [1] = 'self',
+ }
+ Compile(value, obj)
+ end,
+ ['function'] = function (obj)
+ local lastBlock = Block
+ local LastLocalCount = LocalCount
+ Block = obj
+ LocalCount = 0
+ if obj.localself then
+ Compile(obj.localself, obj)
+ obj.localself = nil
+ end
+ Compile(obj.args, obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ Block = lastBlock
+ LocalCount = LastLocalCount
+ end,
+ ['funcargs'] = function (obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ end,
+ ['table'] = function (obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ end,
+ ['tablefield'] = function (obj)
+ Compile(obj.value, obj)
+ end,
+ ['tableindex'] = function (obj)
+ Compile(obj.index, obj)
+ Compile(obj.value, obj)
+ end,
+ ['index'] = function (obj)
+ Compile(obj.index, obj)
+ end,
+ ['select'] = function (obj)
+ local vararg = obj.vararg
+ if vararg.parent then
+ if not vararg.extParent then
+ vararg.extParent = {}
+ end
+ vararg.extParent[#vararg.extParent+1] = obj
+ else
+ Compile(vararg, obj)
+ end
+ end,
+ ['setname'] = function (obj)
+ Compile(obj.value, obj)
+ local loc = guide.getLocal(obj, obj[1], obj.start)
+ if loc then
+ obj.type = 'setlocal'
+ obj.loc = loc
+ addRef(loc, obj)
+ if loc.attrs then
+ local const
+ for i = 1, #loc.attrs do
+ local attr = loc.attrs[i][1]
+ if attr == 'const'
+ or attr == 'close' then
+ const = true
+ break
+ end
+ end
+ if const then
+ pushError {
+ type = 'SET_CONST',
+ start = obj.start,
+ finish = obj.finish,
+ }
+ end
+ end
+ else
+ obj.type = 'setglobal'
+ if ENVMode == '_ENV' then
+ local node = guide.getLocal(obj, '_ENV', obj.start)
+ if node then
+ addRef(node, obj)
+ end
+ end
+ end
+ end,
+ ['local'] = function (obj)
+ local attrs = obj.attrs
+ if attrs then
+ for i = 1, #attrs do
+ Compile(attrs[i], obj)
+ end
+ end
+ if Block then
+ if not Block.locals then
+ Block.locals = {}
+ end
+ Block.locals[#Block.locals+1] = obj
+ LocalCount = LocalCount + 1
+ if LocalCount > LocalLimit then
+ pushError {
+ type = 'LOCAL_LIMIT',
+ start = obj.start,
+ finish = obj.finish,
+ }
+ end
+ end
+ if obj.localfunction then
+ obj.localfunction = nil
+ end
+ Compile(obj.value, obj)
+ if obj.value and obj.value.special then
+ addSpecial(obj.value.special, obj)
+ end
+ end,
+ ['setfield'] = function (obj)
+ Compile(obj.node, obj)
+ Compile(obj.value, obj)
+ end,
+ ['do'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['return'] = function (obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ if Block and Block[#Block] ~= obj then
+ pushError {
+ type = 'ACTION_AFTER_RETURN',
+ start = obj.start,
+ finish = obj.finish,
+ }
+ end
+ local func = guide.getParentFunction(obj)
+ if func then
+ if not func.returns then
+ func.returns = {}
+ end
+ func.returns[#func.returns+1] = obj
+ end
+ end,
+ ['label'] = function (obj)
+ local block = guide.getBlock(obj)
+ if block then
+ if not block.labels then
+ block.labels = {}
+ end
+ local name = obj[1]
+ local label = guide.getLabel(block, name)
+ if label then
+ if Version == 'Lua 5.4'
+ or block == guide.getBlock(label) then
+ pushError {
+ type = 'REDEFINED_LABEL',
+ start = obj.start,
+ finish = obj.finish,
+ relative = {
+ {
+ label.start,
+ label.finish,
+ }
+ }
+ }
+ end
+ end
+ block.labels[name] = obj
+ end
+ end,
+ ['goto'] = function (obj)
+ GoToTag[#GoToTag+1] = obj
+ end,
+ ['if'] = function (obj)
+ for i = 1, #obj do
+ Compile(obj[i], obj)
+ end
+ end,
+ ['ifblock'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ Compile(obj.filter, obj)
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['elseifblock'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ Compile(obj.filter, obj)
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['elseblock'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['loop'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ Compile(obj.loc, obj)
+ Compile(obj.max, obj)
+ Compile(obj.step, obj)
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['in'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ local keys = obj.keys
+ for i = 1, #keys do
+ Compile(keys[i], obj)
+ end
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['while'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ Compile(obj.filter, obj)
+ CompileBlock(obj, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['repeat'] = function (obj)
+ local lastBlock = Block
+ Block = obj
+ CompileBlock(obj, obj)
+ Compile(obj.filter, obj)
+ if Block.locals then
+ LocalCount = LocalCount - #Block.locals
+ end
+ Block = lastBlock
+ end,
+ ['break'] = function (obj)
+ local block = guide.getBreakBlock(obj)
+ if block then
+ if not block.breaks then
+ block.breaks = {}
+ end
+ block.breaks[#block.breaks+1] = obj
+ else
+ pushError {
+ type = 'BREAK_OUTSIDE',
+ start = obj.start,
+ finish = obj.finish,
+ }
+ end
+ end,
+ ['main'] = function (obj)
+ Block = obj
+ if ENVMode == '_ENV' then
+ Compile({
+ type = 'local',
+ start = 0,
+ finish = 0,
+ effect = 0,
+ tag = '_ENV',
+ special= '_G',
+ [1] = '_ENV',
+ }, obj)
+ end
+ --- _ENV 是上值,不计入局部变量计数
+ LocalCount = 0
+ CompileBlock(obj, obj)
+ Block = nil
+ end,
+}
+
+function CompileBlock(obj, parent)
+ for i = 1, #obj do
+ local act = obj[i]
+ local f = vmMap[act.type]
+ if f then
+ act.parent = parent
+ f(act)
+ end
+ end
+end
+
+function Compile(obj, parent)
+ if not obj then
+ return nil
+ end
+ if Compiled[obj] then
+ return
+ end
+ Compiled[obj] = true
+ obj.parent = parent
+ local f = vmMap[obj.type]
+ if not f then
+ return
+ end
+ f(obj)
+end
+
+local function compileGoTo(obj)
+ local name = obj[1]
+ local label = guide.getLabel(obj, name)
+ if not label then
+ pushError {
+ type = 'NO_VISIBLE_LABEL',
+ start = obj.start,
+ finish = obj.finish,
+ info = {
+ label = name,
+ }
+ }
+ return
+ end
+ if not label.ref then
+ label.ref = {}
+ end
+ label.ref[#label.ref+1] = obj
+
+ -- 如果有局部变量在 goto 与 label 之间声明,
+ -- 并在 label 之后使用,则算作语法错误
+
+ -- 如果 label 在 goto 之前声明,那么不会有中间声明的局部变量
+ if obj.start > label.start then
+ return
+ end
+
+ local block = guide.getBlock(obj)
+ local locals = block and block.locals
+ if not locals then
+ return
+ end
+
+ for i = 1, #locals do
+ local loc = locals[i]
+ -- 检查局部变量声明位置为 goto 与 label 之间
+ if loc.start < obj.start or loc.finish > label.finish then
+ goto CONTINUE
+ end
+ -- 检查局部变量的使用位置在 label 之后
+ local refs = loc.ref
+ if not refs then
+ goto CONTINUE
+ end
+ for j = 1, #refs do
+ local ref = refs[j]
+ if ref.finish > label.finish then
+ pushError {
+ type = 'JUMP_LOCAL_SCOPE',
+ start = obj.start,
+ finish = obj.finish,
+ info = {
+ loc = loc[1],
+ },
+ relative = {
+ {
+ start = label.start,
+ finish = label.finish,
+ },
+ {
+ start = loc.start,
+ finish = loc.finish,
+ }
+ },
+ }
+ return
+ end
+ end
+ ::CONTINUE::
+ end
+end
+
+local function PostCompile()
+ for i = 1, #GoToTag do
+ compileGoTo(GoToTag[i])
+ end
+end
+
+return function (self, lua, mode, version)
+ local state, err = self:parse(lua, mode, version)
+ if not state then
+ return nil, err
+ end
+ pushError = state.pushError
+ if version == 'Lua 5.1' or version == 'LuaJIT' then
+ ENVMode = 'fenv'
+ else
+ ENVMode = '_ENV'
+ end
+ Compiled = {}
+ GoToTag = {}
+ LocalCount = 0
+ Version = version
+ Root = state.ast
+ if type(state.ast) == 'table' then
+ Compile(state.ast)
+ end
+ PostCompile()
+ Compiled = nil
+ GoToTag = nil
+ return state
+end
diff --git a/script-beta/src/parser/emmy.lua b/script-beta/src/parser/emmy.lua
new file mode 100644
index 00000000..4c1e087a
--- /dev/null
+++ b/script-beta/src/parser/emmy.lua
@@ -0,0 +1,321 @@
+local State
+local pushError
+
+local grammar = [[
+EmmyLua <- ({} '---' EmmyBody {} ShortComment)
+ -> EmmyLua
+EmmySp <- (!'---@' !'---' Comment / %s / %nl)*
+EmmyComments <- (EmmyComment (%nl EmmyComMulti / %nl EmmyComSingle)*)
+EmmyComment <- EmmySp %s* {(!%nl .)*}
+EmmyComMulti <- EmmySp '---|' {} -> en {(!%nl .)*}
+EmmyComSingle <- EmmySp '---' !'@' %s* {} -> ' ' {(!%nl .)*}
+EmmyBody <- '@class' %s+ EmmyClass -> EmmyClass
+ / '@type' %s+ EmmyType -> EmmyType
+ / '@alias' %s+ EmmyAlias -> EmmyAlias
+ / '@param' %s+ EmmyParam -> EmmyParam
+ / '@return' %s+ EmmyReturn -> EmmyReturn
+ / '@field' %s+ EmmyField -> EmmyField
+ / '@generic' %s+ EmmyGeneric -> EmmyGeneric
+ / '@vararg' %s+ EmmyVararg -> EmmyVararg
+ / '@language' %s+ EmmyLanguage -> EmmyLanguage
+ / '@see' %s+ EmmySee -> EmmySee
+ / '@overload' %s+ EmmyOverLoad -> EmmyOverLoad
+ / %s* EmmyComments -> EmmyComment
+ / EmmyIncomplete
+
+EmmyName <- ({} {[a-zA-Z_] [a-zA-Z0-9_]*})
+ -> EmmyName
+MustEmmyName <- EmmyName / DirtyEmmyName
+DirtyEmmyName <- {} -> DirtyEmmyName
+EmmyLongName <- ({} {(!%nl .)+})
+ -> EmmyName
+EmmyIncomplete <- MustEmmyName
+ -> EmmyIncomplete
+
+EmmyClass <- (MustEmmyName EmmyParentClass?)
+EmmyParentClass <- %s* {} ':' %s* MustEmmyName
+
+EmmyType <- EmmyTypeUnits EmmyTypeEnums
+EmmyTypeUnits <- {|
+ EmmyTypeUnit?
+ (%s* '|' %s* !String EmmyTypeUnit)*
+ |}
+EmmyTypeEnums <- {| EmmyTypeEnum* |}
+EmmyTypeUnit <- EmmyFunctionType
+ / EmmyTableType
+ / EmmyArrayType
+ / EmmyCommonType
+EmmyCommonType <- EmmyName
+ -> EmmyCommonType
+EmmyTypeEnum <- %s* (%nl %s* '---')? '|'? EmmyEnum
+ -> EmmyTypeEnum
+EmmyEnum <- %s* {'>'?} %s* String (EmmyEnumComment / (!%nl !'|' .)*)
+EmmyEnumComment <- %s* '#' %s* {(!%nl .)*}
+
+EmmyAlias <- MustEmmyName %s* EmmyType EmmyTypeEnum*
+
+EmmyParam <- MustEmmyName %s* EmmyType %s* EmmyOption %s* EmmyTypeEnum*
+EmmyOption <- Table?
+ -> EmmyOption
+
+EmmyReturn <- {} %nil {} Table -> EmmyOption
+ / {} EmmyType {} EmmyOption
+
+EmmyField <- (EmmyFieldAccess MustEmmyName %s* EmmyType)
+EmmyFieldAccess <- ({'public'} Cut %s*)
+ / ({'protected'} Cut %s*)
+ / ({'private'} Cut %s*)
+ / {} -> 'public'
+
+EmmyGeneric <- EmmyGenericBlock
+ (%s* ',' %s* EmmyGenericBlock)*
+EmmyGenericBlock<- (MustEmmyName %s* (':' %s* EmmyType)?)
+ -> EmmyGenericBlock
+
+EmmyVararg <- EmmyType
+
+EmmyLanguage <- MustEmmyName
+
+EmmyArrayType <- ({} MustEmmyName -> EmmyCommonType {} '[' DirtyBR)
+ -> EmmyArrayType
+ / ({} PL EmmyCommonType DirtyPR '[' DirtyBR)
+ -> EmmyArrayType
+
+EmmyTableType <- ({} 'table' Cut '<' %s* EmmyType %s* ',' %s* EmmyType %s* '>' {})
+ -> EmmyTableType
+
+EmmyFunctionType<- ({} 'fun' Cut %s* EmmyFunctionArgs %s* EmmyFunctionRtns {})
+ -> EmmyFunctionType
+EmmyFunctionArgs<- ('(' %s* EmmyFunctionArg %s* (',' %s* EmmyFunctionArg %s*)* DirtyPR)
+ -> EmmyFunctionArgs
+ / '(' %nil DirtyPR -> None
+ / %nil
+EmmyFunctionRtns<- (':' %s* EmmyType (%s* ',' %s* EmmyType)*)
+ -> EmmyFunctionRtns
+ / %nil
+EmmyFunctionArg <- MustEmmyName %s* ':' %s* EmmyType
+
+EmmySee <- {} MustEmmyName %s* '#' %s* MustEmmyName {}
+EmmyOverLoad <- EmmyFunctionType
+]]
+
+local ast = {
+ EmmyLua = function (start, emmy, finish)
+ emmy.start = start
+ emmy.finish = finish - 1
+ State.emmy[#State.emmy+1] = emmy
+ end,
+ EmmyName = function (start, str)
+ return {
+ type = 'name',
+ start = start,
+ finish = start + #str - 1,
+ [1] = str,
+ }
+ end,
+ DirtyEmmyName = function (pos)
+ pushError {
+ type = 'MISS_NAME',
+ level = 'warning',
+ start = pos,
+ finish = pos,
+ }
+ return {
+ type = 'emmyName',
+ start = pos-1,
+ finish = pos-1,
+ [1] = ''
+ }
+ end,
+ EmmyClass = function (class, startPos, extends)
+ if extends and extends[1] == '' then
+ extends.start = startPos
+ end
+ return {
+ type = 'class',
+ class = class,
+ extends = extends,
+ }
+ end,
+ EmmyType = function (types, enums)
+ local result = {
+ type = 'type',
+ types = types,
+ enums = enums,
+ }
+ return result
+ end,
+ EmmyCommonType = function (name)
+ return {
+ type = 'common',
+ start = name.start,
+ finish = name.finish,
+ name = name,
+ }
+ end,
+ EmmyArrayType = function (start, emmy, _, finish)
+ emmy.type = 'emmyArrayType'
+ emmy.start = start
+ emmy.finish = finish - 1
+ return emmy
+ end,
+ EmmyTableType = function (start, keyType, valueType, finish)
+ return {
+ type = 'emmyTableType',
+ start = start,
+ finish = finish - 1,
+ [1] = keyType,
+ [2] = valueType,
+ }
+ end,
+ EmmyFunctionType = function (start, args, returns, finish)
+ local result = {
+ start = start,
+ finish = finish - 1,
+ type = 'emmyFunctionType',
+ args = args,
+ returns = returns,
+ }
+ return result
+ end,
+ EmmyFunctionRtns = function (...)
+ return {...}
+ end,
+ EmmyFunctionArgs = function (...)
+ local args = {...}
+ args[#args] = nil
+ return args
+ end,
+ EmmyAlias = function (name, emmyName, ...)
+ return {
+ type = 'emmyAlias',
+ start = name.start,
+ finish = emmyName.finish,
+ name,
+ emmyName,
+ ...
+ }
+ end,
+ EmmyParam = function (argName, emmyName, option, ...)
+ local emmy = {
+ type = 'emmyParam',
+ option = option,
+ argName,
+ emmyName,
+ ...
+ }
+ emmy.start = emmy[1].start
+ emmy.finish = emmy[#emmy].finish
+ return emmy
+ end,
+ EmmyReturn = function (start, type, finish, option)
+ local emmy = {
+ type = 'emmyReturn',
+ option = option,
+ start = start,
+ finish = finish - 1,
+ [1] = type,
+ }
+ return emmy
+ end,
+ EmmyField = function (access, fieldName, ...)
+ local obj = {
+ type = 'emmyField',
+ access, fieldName,
+ ...
+ }
+ obj.start = obj[2].start
+ obj.finish = obj[3].finish
+ return obj
+ end,
+ EmmyGenericBlock = function (genericName, parentName)
+ return {
+ start = genericName.start,
+ finish = parentName and parentName.finish or genericName.finish,
+ genericName,
+ parentName,
+ }
+ end,
+ EmmyGeneric = function (...)
+ local emmy = {
+ type = 'emmyGeneric',
+ ...
+ }
+ emmy.start = emmy[1].start
+ emmy.finish = emmy[#emmy].finish
+ return emmy
+ end,
+ EmmyVararg = function (typeName)
+ return {
+ type = 'emmyVararg',
+ start = typeName.start,
+ finish = typeName.finish,
+ typeName,
+ }
+ end,
+ EmmyLanguage = function (language)
+ return {
+ type = 'emmyLanguage',
+ start = language.start,
+ finish = language.finish,
+ language,
+ }
+ end,
+ EmmySee = function (start, className, methodName, finish)
+ return {
+ type = 'emmySee',
+ start = start,
+ finish = finish - 1,
+ className, methodName
+ }
+ end,
+ EmmyOverLoad = function (EmmyFunctionType)
+ EmmyFunctionType.type = 'emmyOverLoad'
+ return EmmyFunctionType
+ end,
+ EmmyIncomplete = function (emmyName)
+ emmyName.type = 'emmyIncomplete'
+ return emmyName
+ end,
+ EmmyComment = function (...)
+ return {
+ type = 'emmyComment',
+ [1] = table.concat({...}),
+ }
+ end,
+ EmmyOption = function (options)
+ if not options or options == '' then
+ return nil
+ end
+ local option = {}
+ for _, pair in ipairs(options) do
+ if pair.type == 'pair' then
+ local key = pair[1]
+ local value = pair[2]
+ if key.type == 'name' then
+ option[key[1]] = value[1]
+ end
+ end
+ end
+ return option
+ end,
+ EmmyTypeEnum = function (default, enum, comment)
+ enum.type = 'enum'
+ if default ~= '' then
+ enum.default = true
+ end
+ enum.comment = comment
+ return enum
+ end,
+}
+
+local function init(state)
+ State = state
+ pushError = state.pushError
+end
+
+return {
+ grammar = grammar,
+ ast = ast,
+ init = init,
+}
diff --git a/script-beta/src/parser/grammar.lua b/script-beta/src/parser/grammar.lua
new file mode 100644
index 00000000..fd699bd4
--- /dev/null
+++ b/script-beta/src/parser/grammar.lua
@@ -0,0 +1,537 @@
+local re = require 'parser.relabel'
+local m = require 'lpeglabel'
+local emmy = require 'parser.emmy'
+local ast = require 'parser.ast'
+
+local scriptBuf = ''
+local compiled = {}
+local defs = ast.defs
+
+-- goto 可以作为名字,合法性之后处理
+local RESERVED = {
+ ['and'] = true,
+ ['break'] = true,
+ ['do'] = true,
+ ['else'] = true,
+ ['elseif'] = true,
+ ['end'] = true,
+ ['false'] = true,
+ ['for'] = true,
+ ['function'] = true,
+ ['if'] = true,
+ ['in'] = true,
+ ['local'] = true,
+ ['nil'] = true,
+ ['not'] = true,
+ ['or'] = true,
+ ['repeat'] = true,
+ ['return'] = true,
+ ['then'] = true,
+ ['true'] = true,
+ ['until'] = true,
+ ['while'] = true,
+}
+
+defs.nl = (m.P'\r\n' + m.S'\r\n')
+defs.s = m.S' \t'
+defs.S = - defs.s
+defs.ea = '\a'
+defs.eb = '\b'
+defs.ef = '\f'
+defs.en = '\n'
+defs.er = '\r'
+defs.et = '\t'
+defs.ev = '\v'
+defs['nil'] = m.Cp() / function () return nil end
+defs['false'] = m.Cp() / function () return false end
+defs.NotReserved = function (_, _, str)
+ if RESERVED[str] then
+ return false
+ end
+ return true
+end
+defs.Reserved = function (_, _, str)
+ if RESERVED[str] then
+ return true
+ end
+ return false
+end
+defs.None = function () end
+defs.np = m.Cp() / function (n) return n+1 end
+
+m.setmaxstack(1000)
+
+local eof = re.compile '!. / %{SYNTAX_ERROR}'
+
+local function grammar(tag)
+ return function (script)
+ scriptBuf = script .. '\r\n' .. scriptBuf
+ compiled[tag] = re.compile(scriptBuf, defs) * eof
+ end
+end
+
+local function errorpos(pos, err)
+ return {
+ type = 'UNKNOWN',
+ start = pos or 0,
+ finish = pos or 0,
+ err = err,
+ }
+end
+
+grammar 'Comment' [[
+Comment <- LongComment
+ / '--' ShortComment
+LongComment <- ('--[' {} {:eq: '='* :} {} '['
+ {(!CommentClose .)*}
+ (CommentClose / {}))
+ -> LongComment
+ / (
+ {} '/*' {}
+ (!'*/' .)*
+ {} '*/' {}
+ )
+ -> CLongComment
+CommentClose <- ']' =eq ']'
+ShortComment <- (!%nl .)*
+]]
+
+grammar 'Sp' [[
+Sp <- (EmmyLua / Comment / %nl / %s)*
+Sps <- (EmmyLua / Comment / %nl / %s)+
+
+-- 占位
+EmmyLua <- !. .
+]]
+
+grammar 'Common' [[
+Word <- [a-zA-Z0-9_]
+Cut <- !Word
+X16 <- [a-fA-F0-9]
+Rest <- (!%nl .)*
+
+AND <- Sp {'and'} Cut
+BREAK <- Sp 'break' Cut
+FALSE <- Sp 'false' Cut
+GOTO <- Sp 'goto' Cut
+LOCAL <- Sp 'local' Cut
+NIL <- Sp 'nil' Cut
+NOT <- Sp 'not' Cut
+OR <- Sp {'or'} Cut
+RETURN <- Sp 'return' Cut
+TRUE <- Sp 'true' Cut
+
+DO <- Sp {} 'do' {} Cut
+ / Sp({} 'then' {} Cut) -> ErrDo
+IF <- Sp {} 'if' {} Cut
+ELSE <- Sp {} 'else' {} Cut
+ELSEIF <- Sp {} 'elseif' {} Cut
+END <- Sp {} 'end' {} Cut
+FOR <- Sp {} 'for' {} Cut
+FUNCTION <- Sp {} 'function' {} Cut
+IN <- Sp {} 'in' {} Cut
+REPEAT <- Sp {} 'repeat' {} Cut
+THEN <- Sp {} 'then' {} Cut
+ / Sp({} 'do' {} Cut) -> ErrThen
+UNTIL <- Sp {} 'until' {} Cut
+WHILE <- Sp {} 'while' {} Cut
+
+
+Esc <- '\' -> ''
+ EChar
+EChar <- 'a' -> ea
+ / 'b' -> eb
+ / 'f' -> ef
+ / 'n' -> en
+ / 'r' -> er
+ / 't' -> et
+ / 'v' -> ev
+ / '\'
+ / '"'
+ / "'"
+ / %nl
+ / ('z' (%nl / %s)*) -> ''
+ / ({} 'x' {X16 X16}) -> Char16
+ / ([0-9] [0-9]? [0-9]?) -> Char10
+ / ('u{' {} {Word*} '}') -> CharUtf8
+ -- 错误处理
+ / 'x' {} -> MissEscX
+ / 'u' !'{' {} -> MissTL
+ / 'u{' Word* !'}' {} -> MissTR
+ / {} -> ErrEsc
+
+BOR <- Sp {'|'}
+BXOR <- Sp {'~'} !'='
+BAND <- Sp {'&'}
+Bshift <- Sp {BshiftList}
+BshiftList <- '<<'
+ / '>>'
+Concat <- Sp {'..'}
+Adds <- Sp {AddsList}
+AddsList <- '+'
+ / '-'
+Muls <- Sp {MulsList}
+MulsList <- '*'
+ / '//'
+ / '/'
+ / '%'
+Unary <- Sp {} {UnaryList}
+UnaryList <- NOT
+ / '#'
+ / '-'
+ / '~' !'='
+POWER <- Sp {'^'}
+
+BinaryOp <-( Sp {} {'or'} Cut
+ / Sp {} {'and'} Cut
+ / Sp {} {'<=' / '>=' / '<'!'<' / '>'!'>' / '~=' / '=='}
+ / Sp {} ({} '=' {}) -> ErrEQ
+ / Sp {} ({} '!=' {}) -> ErrUEQ
+ / Sp {} {'|'}
+ / Sp {} {'~'}
+ / Sp {} {'&'}
+ / Sp {} {'<<' / '>>'}
+ / Sp {} {'..'} !'.'
+ / Sp {} {'+' / '-'}
+ / Sp {} {'*' / '//' / '/' / '%'}
+ / Sp {} {'^'}
+ )-> BinaryOp
+UnaryOp <-( Sp {} {'not' Cut / '#' / '~' !'=' / '-' !'-'}
+ )-> UnaryOp
+
+PL <- Sp '('
+PR <- Sp ')'
+BL <- Sp '[' !'[' !'='
+BR <- Sp ']'
+TL <- Sp '{'
+TR <- Sp '}'
+COMMA <- Sp ({} ',')
+ -> COMMA
+SEMICOLON <- Sp ({} ';')
+ -> SEMICOLON
+DOTS <- Sp ({} '...')
+ -> DOTS
+DOT <- Sp ({} '.' !'.')
+ -> DOT
+COLON <- Sp ({} ':' !':')
+ -> COLON
+LABEL <- Sp '::'
+ASSIGN <- Sp '=' !'='
+AssignOrEQ <- Sp ({} '==' {})
+ -> ErrAssign
+ / Sp '='
+
+DirtyBR <- BR / {} -> MissBR
+DirtyTR <- TR / {} -> MissTR
+DirtyPR <- PR / {} -> MissPR
+DirtyLabel <- LABEL / {} -> MissLabel
+NeedEnd <- END / {} -> MissEnd
+NeedDo <- DO / {} -> MissDo
+NeedAssign <- ASSIGN / {} -> MissAssign
+NeedComma <- COMMA / {} -> MissComma
+NeedIn <- IN / {} -> MissIn
+NeedUntil <- UNTIL / {} -> MissUntil
+NeedThen <- THEN / {} -> MissThen
+]]
+
+grammar 'Nil' [[
+Nil <- Sp ({} -> Nil) NIL
+]]
+
+grammar 'Boolean' [[
+Boolean <- Sp ({} -> True) TRUE
+ / Sp ({} -> False) FALSE
+]]
+
+grammar 'String' [[
+String <- Sp ({} StringDef {})
+ -> String
+StringDef <- {'"'}
+ {~(Esc / !%nl !'"' .)*~} -> 1
+ ('"' / {} -> MissQuote1)
+ / {"'"}
+ {~(Esc / !%nl !"'" .)*~} -> 1
+ ("'" / {} -> MissQuote2)
+ / ('[' {} {:eq: '='* :} {} '[' %nl?
+ {(!StringClose .)*} -> 1
+ (StringClose / {}))
+ -> LongString
+StringClose <- ']' =eq ']'
+]]
+
+grammar 'Number' [[
+Number <- Sp ({} {NumberDef} {}) -> Number
+ NumberSuffix?
+ ErrNumber?
+NumberDef <- Number16 / Number10
+NumberSuffix<- ({} {[uU]? [lL] [lL]}) -> FFINumber
+ / ({} {[iI]}) -> ImaginaryNumber
+ErrNumber <- ({} {([0-9a-zA-Z] / '.')+}) -> UnknownSymbol
+
+Number10 <- Float10 Float10Exp?
+ / Integer10 Float10? Float10Exp?
+Integer10 <- [0-9]+ ('.' [0-9]*)?
+Float10 <- '.' [0-9]+
+Float10Exp <- [eE] [+-]? [0-9]+
+ / ({} [eE] [+-]? {}) -> MissExponent
+
+Number16 <- '0' [xX] Float16 Float16Exp?
+ / '0' [xX] Integer16 Float16? Float16Exp?
+Integer16 <- X16+ ('.' X16*)?
+ / ({} {Word*}) -> MustX16
+Float16 <- '.' X16+
+ / '.' ({} {Word*}) -> MustX16
+Float16Exp <- [pP] [+-]? [0-9]+
+ / ({} [pP] [+-]? {}) -> MissExponent
+]]
+
+grammar 'Name' [[
+Name <- Sp ({} NameBody {})
+ -> Name
+NameBody <- {[a-zA-Z_] [a-zA-Z0-9_]*}
+FreeName <- Sp ({} {NameBody=>NotReserved} {})
+ -> Name
+KeyWord <- Sp NameBody=>Reserved
+MustName <- Name / DirtyName
+DirtyName <- {} -> DirtyName
+]]
+
+grammar 'Exp' [[
+Exp <- (UnUnit BinUnit*)
+ -> Binary
+BinUnit <- (BinaryOp UnUnit?)
+ -> SubBinary
+UnUnit <- ExpUnit
+ / (UnaryOp+ (ExpUnit / MissExp))
+ -> Unary
+ExpUnit <- Nil
+ / Boolean
+ / String
+ / Number
+ / Dots
+ / Table
+ / Function
+ / Simple
+
+Simple <- {| Prefix (Sp Suffix)* |}
+ -> Simple
+Prefix <- Sp ({} PL DirtyExp DirtyPR {})
+ -> Paren
+ / Single
+Single <- FreeName
+ -> Single
+Suffix <- SuffixWithoutCall
+ / ({} PL SuffixCall DirtyPR {})
+ -> Call
+SuffixCall <- Sp ({} {| (COMMA / Exp)+ |} {})
+ -> PackExpList
+ / %nil
+SuffixWithoutCall
+ <- (DOT (Name / MissField))
+ -> GetField
+ / ({} BL DirtyExp DirtyBR {})
+ -> GetIndex
+ / (COLON (Name / MissMethod) NeedCall)
+ -> GetMethod
+ / ({} {| Table |} {})
+ -> Call
+ / ({} {| String |} {})
+ -> Call
+NeedCall <- (!(Sp CallStart) {} -> MissPL)?
+MissField <- {} -> MissField
+MissMethod <- {} -> MissMethod
+CallStart <- PL
+ / TL
+ / '"'
+ / "'"
+ / '[' '='* '['
+
+DirtyExp <- Exp
+ / {} -> DirtyExp
+MaybeExp <- Exp / MissExp
+MissExp <- {} -> MissExp
+ExpList <- Sp {| MaybeExp (Sp ',' MaybeExp)* |}
+
+Dots <- DOTS
+ -> VarArgs
+
+Table <- Sp ({} TL {| TableField* |} DirtyTR {})
+ -> Table
+TableField <- COMMA
+ / SEMICOLON
+ / NewIndex
+ / NewField
+ / Exp
+Index <- BL DirtyExp DirtyBR
+NewIndex <- Sp ({} Index NeedAssign DirtyExp {})
+ -> NewIndex
+NewField <- Sp ({} MustName ASSIGN DirtyExp {})
+ -> NewField
+
+Function <- FunctionBody
+ -> Function
+FuncArgs <- Sp ({} PL {| FuncArg+ |} DirtyPR {})
+ -> FuncArgs
+ / PL DirtyPR %nil
+ / {} -> MissPL DirtyPR %nil
+FuncArg <- DOTS
+ / Name
+ / COMMA
+FunctionBody<- FUNCTION FuncArgs
+ {| (!END Action)* |}
+ NeedEnd
+
+-- 纯占位,修改了 `relabel.lua` 使重复定义不抛错
+Action <- !END .
+]]
+
+grammar 'Action' [[
+Action <- Sp (CrtAction / UnkAction)
+CrtAction <- Semicolon
+ / Do
+ / Break
+ / Return
+ / Label
+ / GoTo
+ / If
+ / For
+ / While
+ / Repeat
+ / NamedFunction
+ / LocalFunction
+ / Local
+ / Set
+ / Call
+ / ExpInAction
+UnkAction <- ({} {Word+})
+ -> UnknownAction
+ / ({} '//' {} (LongComment / ShortComment))
+ -> CCommentPrefix
+ / ({} {. (!Sps !CrtAction .)*})
+ -> UnknownAction
+ExpInAction <- Sp ({} Exp {})
+ -> ExpInAction
+
+Semicolon <- Sp ';'
+SimpleList <- {| Simple (Sp ',' Simple)* |}
+
+Do <- Sp ({}
+ 'do' Cut
+ {| (!END Action)* |}
+ NeedEnd)
+ -> Do
+
+Break <- Sp ({} BREAK {})
+ -> Break
+
+Return <- Sp ({} RETURN ReturnExpList {})
+ -> Return
+ReturnExpList
+ <- Sp {| Exp (Sp ',' MaybeExp)* |}
+ / Sp {| !Exp !',' |}
+ / ExpList
+
+Label <- Sp ({} LABEL MustName DirtyLabel {})
+ -> Label
+
+GoTo <- Sp ({} GOTO MustName {})
+ -> GoTo
+
+If <- Sp ({} {| IfHead IfBody* |} NeedEnd)
+ -> If
+
+IfHead <- Sp (IfPart {}) -> IfBlock
+ / Sp (ElseIfPart {}) -> ElseIfBlock
+ / Sp (ElsePart {}) -> ElseBlock
+IfBody <- Sp (ElseIfPart {}) -> ElseIfBlock
+ / Sp (ElsePart {}) -> ElseBlock
+IfPart <- IF DirtyExp NeedThen
+ {| (!ELSEIF !ELSE !END Action)* |}
+ElseIfPart <- ELSEIF DirtyExp NeedThen
+ {| (!ELSEIF !ELSE !END Action)* |}
+ElsePart <- ELSE
+ {| (!ELSEIF !ELSE !END Action)* |}
+
+For <- Loop / In
+
+Loop <- LoopBody
+ -> Loop
+LoopBody <- FOR LoopArgs NeedDo
+ {} {| (!END Action)* |}
+ NeedEnd
+LoopArgs <- MustName AssignOrEQ
+ ({} {| (COMMA / !DO !END Exp)* |} {})
+ -> PackLoopArgs
+
+In <- InBody
+ -> In
+InBody <- FOR InNameList NeedIn InExpList NeedDo
+ {} {| (!END Action)* |}
+ NeedEnd
+InNameList <- ({} {| (COMMA / !IN !DO !END Name)* |} {})
+ -> PackInNameList
+InExpList <- ({} {| (COMMA / !DO !DO !END Exp)* |} {})
+ -> PackInExpList
+
+While <- WhileBody
+ -> While
+WhileBody <- WHILE DirtyExp NeedDo
+ {| (!END Action)* |}
+ NeedEnd
+
+Repeat <- (RepeatBody {})
+ -> Repeat
+RepeatBody <- REPEAT
+ {| (!UNTIL Action)* |}
+ NeedUntil DirtyExp
+
+LocalAttr <- {| (Sp '<' Sp MustName Sp LocalAttrEnd)+ |}
+ -> LocalAttr
+LocalAttrEnd<- '>' / {} -> MissGT
+Local <- Sp ({} LOCAL LocalNameList ((AssignOrEQ ExpList) / %nil) {})
+ -> Local
+Set <- Sp ({} SimpleList AssignOrEQ ExpList {})
+ -> Set
+LocalNameList
+ <- {| LocalName (Sp ',' LocalName)* |}
+LocalName <- (MustName LocalAttr?)
+ -> LocalName
+
+Call <- Simple
+ -> SimpleCall
+
+LocalFunction
+ <- Sp ({} LOCAL FunctionNamedBody)
+ -> LocalFunction
+
+NamedFunction
+ <- FunctionNamedBody
+ -> NamedFunction
+FunctionNamedBody
+ <- FUNCTION FuncName FuncArgs
+ {| (!END Action)* |}
+ NeedEnd
+FuncName <- {| Single (Sp SuffixWithoutCall)* |}
+ -> Simple
+ / {} -> MissName %nil
+]]
+
+--grammar 'EmmyLua' (emmy.grammar)
+
+grammar 'Lua' [[
+Lua <- Head?
+ ({} {| Action* |} {}) -> Lua
+ Sp
+Head <- '#' (!%nl .)*
+]]
+
+return function (self, lua, mode)
+ local gram = compiled[mode] or compiled['Lua']
+ local r, _, pos = gram:match(lua)
+ if not r then
+ local err = errorpos(pos)
+ return nil, err
+ end
+
+ return r
+end
diff --git a/script-beta/src/parser/guide.lua b/script-beta/src/parser/guide.lua
new file mode 100644
index 00000000..af511555
--- /dev/null
+++ b/script-beta/src/parser/guide.lua
@@ -0,0 +1,621 @@
+local error = error
+local type = type
+local next = next
+local tostring = tostring
+
+_ENV = nil
+
+local m = {}
+
+local blockTypes = {
+ ['while'] = true,
+ ['in'] = true,
+ ['loop'] = true,
+ ['repeat'] = true,
+ ['do'] = true,
+ ['function'] = true,
+ ['ifblock'] = true,
+ ['elseblock'] = true,
+ ['elseifblock'] = true,
+ ['main'] = true,
+}
+
+local breakBlockTypes = {
+ ['while'] = true,
+ ['in'] = true,
+ ['loop'] = true,
+ ['repeat'] = true,
+}
+
+m.childMap = {
+ ['main'] = {'#'},
+ ['repeat'] = {'#', 'filter'},
+ ['while'] = {'filter', '#'},
+ ['in'] = {'keys', '#'},
+ ['loop'] = {'loc', 'max', 'step', '#'},
+ ['if'] = {'#'},
+ ['ifblock'] = {'filter', '#'},
+ ['elseifblock'] = {'filter', '#'},
+ ['elseblock'] = {'#'},
+ ['setfield'] = {'node', 'field', 'value'},
+ ['setglobal'] = {'value'},
+ ['local'] = {'attrs', 'value'},
+ ['setlocal'] = {'value'},
+ ['return'] = {'#'},
+ ['do'] = {'#'},
+ ['select'] = {'vararg'},
+ ['table'] = {'#'},
+ ['tableindex'] = {'index', 'value'},
+ ['tablefield'] = {'field', 'value'},
+ ['function'] = {'args', '#'},
+ ['funcargs'] = {'#'},
+ ['setmethod'] = {'node', 'method', 'value'},
+ ['getmethod'] = {'node', 'method'},
+ ['setindex'] = {'node', 'index', 'value'},
+ ['getindex'] = {'node', 'index'},
+ ['paren'] = {'exp'},
+ ['call'] = {'node', 'args'},
+ ['callargs'] = {'#'},
+ ['getfield'] = {'node', 'field'},
+ ['list'] = {'#'},
+ ['binary'] = {1, 2},
+ ['unary'] = {1}
+}
+
+m.actionMap = {
+ ['main'] = {'#'},
+ ['repeat'] = {'#'},
+ ['while'] = {'#'},
+ ['in'] = {'#'},
+ ['loop'] = {'#'},
+ ['if'] = {'#'},
+ ['ifblock'] = {'#'},
+ ['elseifblock'] = {'#'},
+ ['elseblock'] = {'#'},
+ ['do'] = {'#'},
+ ['function'] = {'#'},
+ ['funcargs'] = {'#'},
+}
+
+--- 是否是字面量
+function m.isLiteral(obj)
+ local tp = obj.type
+ return tp == 'nil'
+ or tp == 'boolean'
+ or tp == 'string'
+ or tp == 'number'
+ or tp == 'table'
+end
+
+--- 获取字面量
+function m.getLiteral(obj)
+ local tp = obj.type
+ if tp == 'boolean' then
+ return obj[1]
+ elseif tp == 'string' then
+ return obj[1]
+ elseif tp == 'number' then
+ return obj[1]
+ end
+ return nil
+end
+
+--- 寻找父函数
+function m.getParentFunction(obj)
+ for _ = 1, 1000 do
+ obj = obj.parent
+ if not obj then
+ break
+ end
+ local tp = obj.type
+ if tp == 'function' or tp == 'main' then
+ return obj
+ end
+ end
+ return nil
+end
+
+--- 寻找所在区块
+function m.getBlock(obj)
+ for _ = 1, 1000 do
+ if not obj then
+ return nil
+ end
+ local tp = obj.type
+ if blockTypes[tp] then
+ return obj
+ end
+ obj = obj.parent
+ end
+ error('guide.getBlock overstack')
+end
+
+--- 寻找所在父区块
+function m.getParentBlock(obj)
+ for _ = 1, 1000 do
+ obj = obj.parent
+ if not obj then
+ return nil
+ end
+ local tp = obj.type
+ if blockTypes[tp] then
+ return obj
+ end
+ end
+ error('guide.getParentBlock overstack')
+end
+
+--- 寻找所在可break的父区块
+function m.getBreakBlock(obj)
+ for _ = 1, 1000 do
+ obj = obj.parent
+ if not obj then
+ return nil
+ end
+ local tp = obj.type
+ if breakBlockTypes[tp] then
+ return obj
+ end
+ if tp == 'function' then
+ return nil
+ end
+ end
+ error('guide.getBreakBlock overstack')
+end
+
+--- 寻找根区块
+function m.getRoot(obj)
+ for _ = 1, 1000 do
+ local parent = obj.parent
+ if not parent then
+ return obj
+ end
+ obj = parent
+ end
+ error('guide.getRoot overstack')
+end
+
+--- 寻找函数的不定参数,返回不定参在第几个参数上,以及该参数对象。
+--- 如果函数是主函数,则返回`0, nil`。
+---@return table
+---@return integer
+function m.getFunctionVarArgs(func)
+ if func.type == 'main' then
+ return 0, nil
+ end
+ if func.type ~= 'function' then
+ return nil, nil
+ end
+ local args = func.args
+ if not args then
+ return nil, nil
+ end
+ for i = 1, #args do
+ local arg = args[i]
+ if arg.type == '...' then
+ return i, arg
+ end
+ end
+ return nil, nil
+end
+
+--- 获取指定区块中可见的局部变量
+---@param block table
+---@param name string {comment = '变量名'}
+---@param pos integer {comment = '可见位置'}
+function m.getLocal(block, name, pos)
+ block = m.getBlock(block)
+ for _ = 1, 1000 do
+ if not block then
+ return nil
+ end
+ local locals = block.locals
+ local res
+ if not locals then
+ goto CONTINUE
+ end
+ for i = 1, #locals do
+ local loc = locals[i]
+ if loc.effect > pos then
+ break
+ end
+ if loc[1] == name then
+ if not res or res.effect < loc.effect then
+ res = loc
+ end
+ end
+ end
+ if res then
+ return res, res
+ end
+ ::CONTINUE::
+ block = m.getParentBlock(block)
+ end
+ error('guide.getLocal overstack')
+end
+
+--- 获取指定区块中可见的标签
+---@param block table
+---@param name string {comment = '标签名'}
+function m.getLabel(block, name)
+ block = m.getBlock(block)
+ for _ = 1, 1000 do
+ if not block then
+ return nil
+ end
+ local labels = block.labels
+ if labels then
+ local label = labels[name]
+ if label then
+ return label
+ end
+ end
+ if block.type == 'function' then
+ return nil
+ end
+ block = m.getParentBlock(block)
+ end
+ error('guide.getLocal overstack')
+end
+
+--- 判断source是否包含offset
+function m.isContain(source, offset)
+ return source.start <= offset and source.finish >= offset - 1
+end
+
+--- 判断offset在source的影响范围内
+---
+--- 主要针对赋值等语句时,key包含value
+function m.isInRange(source, offset)
+ return (source.vstart or source.start) <= offset and (source.range or source.finish) >= offset - 1
+end
+
+--- 添加child
+function m.addChilds(list, obj, map)
+ local keys = map[obj.type]
+ if keys then
+ for i = 1, #keys do
+ local key = keys[i]
+ if key == '#' then
+ for i = 1, #obj do
+ list[#list+1] = obj[i]
+ end
+ else
+ list[#list+1] = obj[key]
+ end
+ end
+ end
+end
+
+--- 遍历所有包含offset的source
+function m.eachSourceContain(ast, offset, callback)
+ local list = { ast }
+ while true do
+ local len = #list
+ if len == 0 then
+ return
+ end
+ local obj = list[len]
+ list[len] = nil
+ if m.isInRange(obj, offset) then
+ if m.isContain(obj, offset) then
+ local res = callback(obj)
+ if res ~= nil then
+ return res
+ end
+ end
+ m.addChilds(list, obj, m.childMap)
+ end
+ end
+end
+
+--- 遍历所有指定类型的source
+function m.eachSourceType(ast, type, callback)
+ local cache = ast.typeCache
+ if not cache then
+ local mark = {}
+ cache = {}
+ ast.typeCache = cache
+ m.eachSource(ast, function (source)
+ if mark[source] then
+ return
+ end
+ mark[source] = true
+ local tp = source.type
+ if not tp then
+ return
+ end
+ local myCache = cache[tp]
+ if not myCache then
+ myCache = {}
+ cache[tp] = myCache
+ end
+ myCache[#myCache+1] = source
+ end)
+ end
+ local myCache = cache[type]
+ if not myCache then
+ return
+ end
+ for i = 1, #myCache do
+ callback(myCache[i])
+ end
+end
+
+--- 遍历所有的source
+function m.eachSource(ast, callback)
+ local list = { ast }
+ while true do
+ local len = #list
+ if len == 0 then
+ return
+ end
+ local obj = list[len]
+ list[len] = nil
+ callback(obj)
+ m.addChilds(list, obj, m.childMap)
+ end
+end
+
+--- 获取指定的 special
+function m.eachSpecialOf(ast, name, callback)
+ local root = m.getRoot(ast)
+ if not root.specials then
+ return
+ end
+ local specials = root.specials[name]
+ if not specials then
+ return
+ end
+ for i = 1, #specials do
+ callback(specials[i])
+ end
+end
+
+--- 获取偏移对应的坐标
+---@param lines table
+---@return integer {name = 'row'}
+---@return integer {name = 'col'}
+function m.positionOf(lines, offset)
+ if offset < 1 then
+ return 0, 0
+ end
+ local lastLine = lines[#lines]
+ if offset > lastLine.finish then
+ return #lines, lastLine.finish - lastLine.start + 1
+ end
+ local min = 1
+ local max = #lines
+ for _ = 1, 100 do
+ if max <= min then
+ local line = lines[min]
+ return min, offset - line.start + 1
+ end
+ local row = (max - min) // 2 + min
+ local line = lines[row]
+ if offset < line.start then
+ max = row - 1
+ elseif offset > line.finish then
+ min = row + 1
+ else
+ return row, offset - line.start + 1
+ end
+ end
+ error('Stack overflow!')
+end
+
+--- 获取坐标对应的偏移
+---@param lines table
+---@param row integer
+---@param col integer
+---@return integer {name = 'offset'}
+function m.offsetOf(lines, row, col)
+ if row < 1 then
+ return 0
+ end
+ if row > #lines then
+ local lastLine = lines[#lines]
+ return lastLine.finish
+ end
+ local line = lines[row]
+ local len = line.finish - line.start + 1
+ if col < 0 then
+ return line.start
+ elseif col > len then
+ return line.finish
+ else
+ return line.start + col - 1
+ end
+end
+
+function m.lineContent(lines, text, row)
+ local line = lines[row]
+ if not line then
+ return ''
+ end
+ return text:sub(line.start, line.finish)
+end
+
+function m.lineRange(lines, row)
+ local line = lines[row]
+ if not line then
+ return 0, 0
+ end
+ return line.start, line.finish
+end
+
+function m.getName(obj)
+ local tp = obj.type
+ if tp == 'getglobal'
+ or tp == 'setglobal' then
+ return obj[1]
+ elseif tp == 'local'
+ or tp == 'getlocal'
+ or tp == 'setlocal' then
+ return obj[1]
+ elseif tp == 'getfield'
+ or tp == 'setfield'
+ or tp == 'tablefield' then
+ return obj.field[1]
+ elseif tp == 'getmethod'
+ or tp == 'setmethod' then
+ return obj.method[1]
+ elseif tp == 'getindex'
+ or tp == 'setindex'
+ or tp == 'tableindex' then
+ return m.getName(obj.index)
+ elseif tp == 'field'
+ or tp == 'method' then
+ return obj[1]
+ elseif tp == 'index' then
+ return m.getName(obj.index)
+ elseif tp == 'string' then
+ return obj[1]
+ end
+ return nil
+end
+
+function m.getKeyName(obj)
+ local tp = obj.type
+ if tp == 'getglobal'
+ or tp == 'setglobal' then
+ return 's|' .. obj[1]
+ elseif tp == 'getfield'
+ or tp == 'setfield'
+ or tp == 'tablefield' then
+ if obj.field then
+ return 's|' .. obj.field[1]
+ end
+ elseif tp == 'getmethod'
+ or tp == 'setmethod' then
+ if obj.method then
+ return 's|' .. obj.method[1]
+ end
+ elseif tp == 'getindex'
+ or tp == 'setindex'
+ or tp == 'tableindex' then
+ if obj.index then
+ return m.getKeyName(obj.index)
+ end
+ elseif tp == 'field'
+ or tp == 'method' then
+ return 's|' .. obj[1]
+ elseif tp == 'string' then
+ local s = obj[1]
+ if s then
+ return 's|' .. s
+ else
+ return s
+ end
+ elseif tp == 'number' then
+ local n = obj[1]
+ if n then
+ return ('n|%q'):format(obj[1])
+ else
+ return 'n'
+ end
+ elseif tp == 'boolean' then
+ local b = obj[1]
+ if b then
+ return 'b|' .. tostring(b)
+ else
+ return 'b'
+ end
+ end
+ return nil
+end
+
+function m.getENV(ast)
+ if ast.type ~= 'main' then
+ return nil
+ end
+ return ast.locals[1]
+end
+
+--- 测试 a 到 b 的路径(不经过函数,不考虑 goto),
+--- 每个路径是一个 block 。
+---
+--- 如果 a 在 b 的前面,返回 `"before"` 加上 2个`list<block>`
+---
+--- 如果 a 在 b 的后面,返回 `"after"` 加上 2个`list<block>`
+---
+--- 否则返回 `false`
+---
+--- 返回的2个 `list` 分别为基准block到达 a 与 b 的路径。
+---@param a table
+---@param b table
+---@return string|boolean mode
+---@return table|nil pathA
+---@return table|nil pathB
+function m.getPath(a, b)
+ --- 首先测试双方在同一个函数内
+ if m.getParentFunction(a) ~= m.getParentFunction(b) then
+ return false
+ end
+ local mode
+ local objA
+ local objB
+ if a.finish < b.start then
+ mode = 'before'
+ objA = a
+ objB = b
+ elseif a.start > b.finish then
+ mode = 'after'
+ objA = b
+ objB = a
+ else
+ return 'equal', {}, {}
+ end
+ local pathA = {}
+ local pathB = {}
+ for _ = 1, 1000 do
+ objA = m.getParentBlock(objA)
+ pathA[#pathA+1] = objA
+ if objA.type == 'function' or objA.type == 'main' then
+ break
+ end
+ end
+ for _ = 1, 1000 do
+ objB = m.getParentBlock(objB)
+ pathB[#pathB+1] = objB
+ if objB.type == 'function' or objB.type == 'main' then
+ break
+ end
+ end
+ -- pathA: {1, 2, 3, 4, 5}
+ -- pathB: {5, 6, 2, 3}
+ local top = #pathB
+ local start
+ for i = #pathA, 1, -1 do
+ local currentBlock = pathA[i]
+ if currentBlock == pathB[top] then
+ start = i
+ break
+ end
+ end
+ -- pathA: { 1, 2, 3}
+ -- pathB: {5, 6, 2, 3}
+ local extra = 0
+ local align = top - start
+ for i = start, 1, -1 do
+ local currentA = pathA[i]
+ local currentB = pathB[i+align]
+ if currentA ~= currentB then
+ extra = i
+ break
+ end
+ end
+ -- pathA: {1}
+ local resultA = {}
+ for i = extra, 1, -1 do
+ resultA[#resultA+1] = pathA[i]
+ end
+ -- pathB: {5, 6}
+ local resultB = {}
+ for i = extra + align, 1, -1 do
+ resultB[#resultB+1] = pathB[i]
+ end
+ return mode, resultA, resultB
+end
+
+return m
diff --git a/script-beta/src/parser/init.lua b/script-beta/src/parser/init.lua
new file mode 100644
index 00000000..5eeb0da2
--- /dev/null
+++ b/script-beta/src/parser/init.lua
@@ -0,0 +1,11 @@
+local api = {
+ grammar = require 'parser.grammar',
+ parse = require 'parser.parse',
+ compile = require 'parser.compile',
+ split = require 'parser.split',
+ calcline = require 'parser.calcline',
+ lines = require 'parser.lines',
+ guide = require 'parser.guide',
+}
+
+return api
diff --git a/script-beta/src/parser/lines.lua b/script-beta/src/parser/lines.lua
new file mode 100644
index 00000000..c7961d13
--- /dev/null
+++ b/script-beta/src/parser/lines.lua
@@ -0,0 +1,46 @@
+local m = require 'lpeglabel'
+local utf8Len = utf8.len
+
+_ENV = nil
+
+local function Line(start, line, range, finish)
+ line.start = start
+ line.finish = finish - 1
+ line.range = range - 1
+ return line
+end
+
+local function Space(...)
+ local line = {...}
+ local sp = 0
+ local tab = 0
+ for i = 1, #line do
+ if line[i] == ' ' then
+ sp = sp + 1
+ elseif line[i] == '\t' then
+ tab = tab + 1
+ end
+ line[i] = nil
+ end
+ line.sp = sp
+ line.tab = tab
+ return line
+end
+
+local parser = m.P{
+'Lines',
+Lines = m.Ct(m.V'Line'^0 * m.V'LastLine'),
+Line = m.Cp() * m.V'Indent' * (1 - m.V'Nl')^0 * m.Cp() * m.V'Nl' * m.Cp() / Line,
+LastLine= m.Cp() * m.V'Indent' * (1 - m.V'Nl')^0 * m.Cp() * m.Cp() / Line,
+Nl = m.P'\r\n' + m.S'\r\n',
+Indent = m.C(m.S' \t')^0 / Space,
+}
+
+return function (self, text)
+ local lines, err = parser:match(text)
+ if not lines then
+ return nil, err
+ end
+
+ return lines
+end
diff --git a/script-beta/src/parser/parse.lua b/script-beta/src/parser/parse.lua
new file mode 100644
index 00000000..bbc01b10
--- /dev/null
+++ b/script-beta/src/parser/parse.lua
@@ -0,0 +1,45 @@
+local ast = require 'parser.ast'
+
+return function (self, lua, mode, version)
+ local errs = {}
+ local diags = {}
+ local state = {
+ version = version,
+ lua = lua,
+ emmy = {},
+ root = {},
+ errs = errs,
+ diags = diags,
+ pushError = function (err)
+ if err.finish < err.start then
+ err.finish = err.start
+ end
+ local last = errs[#errs]
+ if last then
+ if last.start <= err.start and last.finish >= err.finish then
+ return
+ end
+ end
+ err.level = err.level or 'error'
+ errs[#errs+1] = err
+ return err
+ end,
+ pushDiag = function (code, info)
+ if not diags[code] then
+ diags[code] = {}
+ end
+ diags[code][#diags[code]+1] = info
+ end
+ }
+ ast.init(state)
+ local suc, res, err = xpcall(self.grammar, debug.traceback, self, lua, mode)
+ ast.close()
+ if not suc then
+ return nil, res
+ end
+ if not res then
+ state.pushError(err)
+ end
+ state.ast = res
+ return state
+end
diff --git a/script-beta/src/parser/relabel.lua b/script-beta/src/parser/relabel.lua
new file mode 100644
index 00000000..ac902403
--- /dev/null
+++ b/script-beta/src/parser/relabel.lua
@@ -0,0 +1,361 @@
+-- $Id: re.lua,v 1.44 2013/03/26 20:11:40 roberto Exp $
+
+-- imported functions and modules
+local tonumber, type, print, error = tonumber, type, print, error
+local pcall = pcall
+local setmetatable = setmetatable
+local tinsert, concat = table.insert, table.concat
+local rep = string.rep
+local m = require"lpeglabel"
+
+-- 'm' will be used to parse expressions, and 'mm' will be used to
+-- create expressions; that is, 're' runs on 'm', creating patterns
+-- on 'mm'
+local mm = m
+
+-- pattern's metatable
+local mt = getmetatable(mm.P(0))
+
+
+
+-- No more global accesses after this point
+_ENV = nil
+
+
+local any = m.P(1)
+local dummy = mm.P(false)
+
+
+local errinfo = {
+ NoPatt = "no pattern found",
+ ExtraChars = "unexpected characters after the pattern",
+
+ ExpPatt1 = "expected a pattern after '/'",
+
+ ExpPatt2 = "expected a pattern after '&'",
+ ExpPatt3 = "expected a pattern after '!'",
+
+ ExpPatt4 = "expected a pattern after '('",
+ ExpPatt5 = "expected a pattern after ':'",
+ ExpPatt6 = "expected a pattern after '{~'",
+ ExpPatt7 = "expected a pattern after '{|'",
+
+ ExpPatt8 = "expected a pattern after '<-'",
+
+ ExpPattOrClose = "expected a pattern or closing '}' after '{'",
+
+ ExpNumName = "expected a number, '+', '-' or a name (no space) after '^'",
+ ExpCap = "expected a string, number, '{}' or name after '->'",
+
+ ExpName1 = "expected the name of a rule after '=>'",
+ ExpName2 = "expected the name of a rule after '=' (no space)",
+ ExpName3 = "expected the name of a rule after '<' (no space)",
+
+ ExpLab1 = "expected a label after '{'",
+
+ ExpNameOrLab = "expected a name or label after '%' (no space)",
+
+ ExpItem = "expected at least one item after '[' or '^'",
+
+ MisClose1 = "missing closing ')'",
+ MisClose2 = "missing closing ':}'",
+ MisClose3 = "missing closing '~}'",
+ MisClose4 = "missing closing '|}'",
+ MisClose5 = "missing closing '}'", -- for the captures
+
+ MisClose6 = "missing closing '>'",
+ MisClose7 = "missing closing '}'", -- for the labels
+
+ MisClose8 = "missing closing ']'",
+
+ MisTerm1 = "missing terminating single quote",
+ MisTerm2 = "missing terminating double quote",
+}
+
+local function expect (pattern, label)
+ return pattern + m.T(label)
+end
+
+
+-- Pre-defined names
+local Predef = { nl = m.P"\n" }
+
+
+local mem
+local fmem
+local gmem
+
+
+local function updatelocale ()
+ mm.locale(Predef)
+ Predef.a = Predef.alpha
+ Predef.c = Predef.cntrl
+ Predef.d = Predef.digit
+ Predef.g = Predef.graph
+ Predef.l = Predef.lower
+ Predef.p = Predef.punct
+ Predef.s = Predef.space
+ Predef.u = Predef.upper
+ Predef.w = Predef.alnum
+ Predef.x = Predef.xdigit
+ Predef.A = any - Predef.a
+ Predef.C = any - Predef.c
+ Predef.D = any - Predef.d
+ Predef.G = any - Predef.g
+ Predef.L = any - Predef.l
+ Predef.P = any - Predef.p
+ Predef.S = any - Predef.s
+ Predef.U = any - Predef.u
+ Predef.W = any - Predef.w
+ Predef.X = any - Predef.x
+ mem = {} -- restart memoization
+ fmem = {}
+ gmem = {}
+ local mt = {__mode = "v"}
+ setmetatable(mem, mt)
+ setmetatable(fmem, mt)
+ setmetatable(gmem, mt)
+end
+
+
+updatelocale()
+
+
+
+local I = m.P(function (s,i) print(i, s:sub(1, i-1)); return i end)
+
+
+local function getdef (id, defs)
+ local c = defs and defs[id]
+ if not c then
+ error("undefined name: " .. id)
+ end
+ return c
+end
+
+
+local function mult (p, n)
+ local np = mm.P(true)
+ while n >= 1 do
+ if n%2 >= 1 then np = np * p end
+ p = p * p
+ n = n/2
+ end
+ return np
+end
+
+local function equalcap (s, i, c)
+ if type(c) ~= "string" then return nil end
+ local e = #c + i
+ if s:sub(i, e - 1) == c then return e else return nil end
+end
+
+
+local S = (Predef.space + "--" * (any - Predef.nl)^0)^0
+
+local name = m.C(m.R("AZ", "az", "__") * m.R("AZ", "az", "__", "09")^0)
+
+local arrow = S * "<-"
+
+-- a defined name only have meaning in a given environment
+local Def = name * m.Carg(1)
+
+local num = m.C(m.R"09"^1) * S / tonumber
+
+local String = "'" * m.C((any - "'" - m.P"\n")^0) * expect("'", "MisTerm1")
+ + '"' * m.C((any - '"' - m.P"\n")^0) * expect('"', "MisTerm2")
+
+
+local defined = "%" * Def / function (c,Defs)
+ local cat = Defs and Defs[c] or Predef[c]
+ if not cat then
+ error("name '" .. c .. "' undefined")
+ end
+ return cat
+end
+
+local Range = m.Cs(any * (m.P"-"/"") * (any - "]")) / mm.R
+
+local item = defined + Range + m.C(any - m.P"\n")
+
+local Class =
+ "["
+ * (m.C(m.P"^"^-1)) -- optional complement symbol
+ * m.Cf(expect(item, "ExpItem") * (item - "]")^0, mt.__add)
+ / function (c, p) return c == "^" and any - p or p end
+ * expect("]", "MisClose8")
+
+local function adddef (t, k, exp)
+ if t[k] then
+ -- TODO 改了一下这里的代码,重复定义不会抛错
+ --error("'"..k.."' already defined as a rule")
+ else
+ t[k] = exp
+ end
+ return t
+end
+
+local function firstdef (n, r) return adddef({n}, n, r) end
+
+
+local function NT (n, b)
+ if not b then
+ error("rule '"..n.."' used outside a grammar")
+ else return mm.V(n)
+ end
+end
+
+
+local exp = m.P{ "Exp",
+ Exp = S * ( m.V"Grammar"
+ + m.Cf(m.V"Seq" * (S * "/" * expect(S * m.V"Seq", "ExpPatt1"))^0, mt.__add) );
+ Seq = m.Cf(m.Cc(m.P"") * m.V"Prefix" * (S * m.V"Prefix")^0, mt.__mul);
+ Prefix = "&" * expect(S * m.V"Prefix", "ExpPatt2") / mt.__len
+ + "!" * expect(S * m.V"Prefix", "ExpPatt3") / mt.__unm
+ + m.V"Suffix";
+ Suffix = m.Cf(m.V"Primary" *
+ ( S * ( m.P"+" * m.Cc(1, mt.__pow)
+ + m.P"*" * m.Cc(0, mt.__pow)
+ + m.P"?" * m.Cc(-1, mt.__pow)
+ + "^" * expect( m.Cg(num * m.Cc(mult))
+ + m.Cg(m.C(m.S"+-" * m.R"09"^1) * m.Cc(mt.__pow)
+ + name * m.Cc"lab"
+ ),
+ "ExpNumName")
+ + "->" * expect(S * ( m.Cg((String + num) * m.Cc(mt.__div))
+ + m.P"{}" * m.Cc(nil, m.Ct)
+ + m.Cg(Def / getdef * m.Cc(mt.__div))
+ ),
+ "ExpCap")
+ + "=>" * expect(S * m.Cg(Def / getdef * m.Cc(m.Cmt)),
+ "ExpName1")
+ )
+ )^0, function (a,b,f) if f == "lab" then return a + mm.T(b) else return f(a,b) end end );
+ Primary = "(" * expect(m.V"Exp", "ExpPatt4") * expect(S * ")", "MisClose1")
+ + String / mm.P
+ + Class
+ + defined
+ + "%" * expect(m.P"{", "ExpNameOrLab")
+ * expect(S * m.V"Label", "ExpLab1")
+ * expect(S * "}", "MisClose7") / mm.T
+ + "{:" * (name * ":" + m.Cc(nil)) * expect(m.V"Exp", "ExpPatt5")
+ * expect(S * ":}", "MisClose2")
+ / function (n, p) return mm.Cg(p, n) end
+ + "=" * expect(name, "ExpName2")
+ / function (n) return mm.Cmt(mm.Cb(n), equalcap) end
+ + m.P"{}" / mm.Cp
+ + "{~" * expect(m.V"Exp", "ExpPatt6")
+ * expect(S * "~}", "MisClose3") / mm.Cs
+ + "{|" * expect(m.V"Exp", "ExpPatt7")
+ * expect(S * "|}", "MisClose4") / mm.Ct
+ + "{" * expect(m.V"Exp", "ExpPattOrClose")
+ * expect(S * "}", "MisClose5") / mm.C
+ + m.P"." * m.Cc(any)
+ + (name * -arrow + "<" * expect(name, "ExpName3")
+ * expect(">", "MisClose6")) * m.Cb("G") / NT;
+ Label = num + name;
+ Definition = name * arrow * expect(m.V"Exp", "ExpPatt8");
+ Grammar = m.Cg(m.Cc(true), "G")
+ * m.Cf(m.V"Definition" / firstdef * (S * m.Cg(m.V"Definition"))^0,
+ adddef) / mm.P;
+}
+
+local pattern = S * m.Cg(m.Cc(false), "G") * expect(exp, "NoPatt") / mm.P
+ * S * expect(-any, "ExtraChars")
+
+local function lineno (s, i)
+ if i == 1 then return 1, 1 end
+ local adjustment = 0
+ -- report the current line if at end of line, not the next
+ if s:sub(i,i) == '\n' then
+ i = i-1
+ adjustment = 1
+ end
+ local rest, num = s:sub(1,i):gsub("[^\n]*\n", "")
+ local r = #rest
+ return 1 + num, (r ~= 0 and r or 1) + adjustment
+end
+
+local function calcline (s, i)
+ if i == 1 then return 1, 1 end
+ local rest, line = s:sub(1,i):gsub("[^\n]*\n", "")
+ local col = #rest
+ return 1 + line, col ~= 0 and col or 1
+end
+
+
+local function splitlines(str)
+ local t = {}
+ local function helper(line) tinsert(t, line) return "" end
+ helper((str:gsub("(.-)\r?\n", helper)))
+ return t
+end
+
+local function compile (p, defs)
+ if mm.type(p) == "pattern" then return p end -- already compiled
+ p = p .. " " -- for better reporting of column numbers in errors when at EOF
+ local ok, cp, label, poserr = pcall(function() return pattern:match(p, 1, defs) end)
+ if not ok and cp then
+ if type(cp) == "string" then
+ cp = cp:gsub("^[^:]+:[^:]+: ", "")
+ end
+ error(cp, 3)
+ end
+ if not cp then
+ local lines = splitlines(p)
+ local line, col = lineno(p, poserr)
+ local err = {}
+ tinsert(err, "L" .. line .. ":C" .. col .. ": " .. errinfo[label])
+ tinsert(err, lines[line])
+ tinsert(err, rep(" ", col-1) .. "^")
+ error("syntax error(s) in pattern\n" .. concat(err, "\n"), 3)
+ end
+ return cp
+end
+
+local function match (s, p, i)
+ local cp = mem[p]
+ if not cp then
+ cp = compile(p)
+ mem[p] = cp
+ end
+ return cp:match(s, i or 1)
+end
+
+local function find (s, p, i)
+ local cp = fmem[p]
+ if not cp then
+ cp = compile(p) / 0
+ cp = mm.P{ mm.Cp() * cp * mm.Cp() + 1 * mm.V(1) }
+ fmem[p] = cp
+ end
+ local i, e = cp:match(s, i or 1)
+ if i then return i, e - 1
+ else return i
+ end
+end
+
+local function gsub (s, p, rep)
+ local g = gmem[p] or {} -- ensure gmem[p] is not collected while here
+ gmem[p] = g
+ local cp = g[rep]
+ if not cp then
+ cp = compile(p)
+ cp = mm.Cs((cp / rep + 1)^0)
+ g[rep] = cp
+ end
+ return cp:match(s)
+end
+
+
+-- exported names
+local re = {
+ compile = compile,
+ match = match,
+ find = find,
+ gsub = gsub,
+ updatelocale = updatelocale,
+ calcline = calcline
+}
+
+return re
diff --git a/script-beta/src/parser/split.lua b/script-beta/src/parser/split.lua
new file mode 100644
index 00000000..6ce4a4e7
--- /dev/null
+++ b/script-beta/src/parser/split.lua
@@ -0,0 +1,9 @@
+local m = require 'lpeglabel'
+
+local NL = m.P'\r\n' + m.S'\r\n'
+local LINE = m.C(1 - NL)
+
+return function (str)
+ local MATCH = m.Ct((LINE * NL)^0 * LINE)
+ return MATCH:match(str)
+end
diff --git a/script-beta/src/proto/define.lua b/script-beta/src/proto/define.lua
new file mode 100644
index 00000000..61c4037c
--- /dev/null
+++ b/script-beta/src/proto/define.lua
@@ -0,0 +1,140 @@
+local guide = require 'parser.guide'
+
+local m = {}
+
+--- 获取 position 对应的光标位置
+---@param lines table
+---@param text string
+---@param position position
+---@return integer
+function m.offset(lines, text, position)
+ local row = position.line + 1
+ local start = guide.lineRange(lines, row)
+ local offset = utf8.offset(text, position.character + 1, start)
+ if text:sub(offset-1, offset):match '[%w_][^%w_]' then
+ offset = offset - 1
+ end
+ return offset
+end
+
+--- 将光标位置转化为 position
+---@alias position table
+---@param lines table
+---@param text string
+---@param offset integer
+---@return position
+function m.position(lines, text, offset)
+ local row, col = guide.positionOf(lines, offset)
+ local start = guide.lineRange(lines, row)
+ if start < 1 then
+ start = 1
+ end
+ local ucol = utf8.len(text, start, start + col - 1, true)
+ if row < 1 then
+ row = 1
+ end
+ return {
+ line = row - 1,
+ character = ucol,
+ }
+end
+
+--- 将起点与终点位置转化为 range
+---@alias range table
+---@param lines table
+---@param text string
+---@param offset1 integer
+---@param offset2 integer
+function m.range(lines, text, offset1, offset2)
+ local range = {
+ start = m.position(lines, text, offset1),
+ ['end'] = m.position(lines, text, offset2),
+ }
+ if range.start.character > 0 then
+ range.start.character = range.start.character - 1
+ end
+ return range
+end
+
+---@alias location table
+---@param uri string
+---@param range range
+---@return location
+function m.location(uri, range)
+ return {
+ uri = uri,
+ range = range,
+ }
+end
+
+---@alias locationLink table
+---@param uri string
+---@param range range
+---@param selection range
+---@param origin range
+function m.locationLink(uri, range, selection, origin)
+ return {
+ targetUri = uri,
+ targetRange = range,
+ targetSelectionRange = selection,
+ originSelectionRange = origin,
+ }
+end
+
+function m.textEdit(range, newtext)
+ return {
+ range = range,
+ newText = newtext,
+ }
+end
+
+--- 诊断等级
+m.DiagnosticSeverity = {
+ Error = 1,
+ Warning = 2,
+ Information = 3,
+ Hint = 4,
+}
+
+--- 诊断类型与默认等级
+m.DiagnosticDefaultSeverity = {
+ ['unused-local'] = 'Hint',
+ ['unused-function'] = 'Hint',
+ ['undefined-global'] = 'Warning',
+ ['global-in-nil-env'] = 'Warning',
+ ['unused-label'] = 'Hint',
+ ['unused-vararg'] = 'Hint',
+ ['trailing-space'] = 'Hint',
+ ['redefined-local'] = 'Hint',
+ ['newline-call'] = 'Information',
+ ['newfield-call'] = 'Warning',
+ ['redundant-parameter'] = 'Hint',
+ ['ambiguity-1'] = 'Warning',
+ ['lowercase-global'] = 'Information',
+ ['undefined-env-child'] = 'Information',
+ ['duplicate-index'] = 'Warning',
+ ['empty-block'] = 'Hint',
+ ['redundant-value'] = 'Hint',
+ ['emmy-lua'] = 'Warning',
+}
+
+--- 诊断报告标签
+m.DiagnosticTag = {
+ Unnecessary = 1,
+ Deprecated = 2,
+}
+
+m.DocumentHighlightKind = {
+ Text = 1,
+ Read = 2,
+ Write = 3,
+}
+
+m.MessageType = {
+ Error = 1,
+ Warning = 2,
+ Info = 3,
+ Log = 4,
+}
+
+return m
diff --git a/script-beta/src/proto/init.lua b/script-beta/src/proto/init.lua
new file mode 100644
index 00000000..33e637f6
--- /dev/null
+++ b/script-beta/src/proto/init.lua
@@ -0,0 +1,3 @@
+local proto = require 'proto.proto'
+
+return proto
diff --git a/script-beta/src/proto/proto.lua b/script-beta/src/proto/proto.lua
new file mode 100644
index 00000000..f04653d5
--- /dev/null
+++ b/script-beta/src/proto/proto.lua
@@ -0,0 +1,133 @@
+local subprocess = require 'bee.subprocess'
+local util = require 'utility'
+local await = require 'await'
+local pub = require 'pub'
+local jsonrpc = require 'jsonrpc'
+local ErrorCodes = require 'define.ErrorCodes'
+
+local reqCounter = util.counter()
+
+local m = {}
+
+m.ability = {}
+m.waiting = {}
+
+function m.getMethodName(proto)
+ if proto.method:sub(1, 2) == '$/' then
+ return proto.method:sub(3), true
+ else
+ return proto.method, false
+ end
+end
+
+function m.on(method, callback)
+ m.ability[method] = callback
+end
+
+function m.response(id, res)
+ if id == nil then
+ log.error('Response id is nil!', util.dump(res))
+ return
+ end
+ -- res 可能是nil,为了转成json时保留nil,使用 container 容器
+ local data = util.container()
+ data.id = id
+ data.result = res
+ local buf = jsonrpc.encode(data)
+ log.debug('Response', id, #buf)
+ io.stdout:write(buf)
+end
+
+function m.responseErr(id, code, message)
+ if id == nil then
+ log.error('Response id is nil!', util.dump(message))
+ return
+ end
+ local buf = jsonrpc.encode {
+ id = id,
+ error = {
+ code = code,
+ message = message,
+ }
+ }
+ log.debug('ResponseErr', id, #buf)
+ io.stdout:write(buf)
+end
+
+function m.notify(name, params)
+ local buf = jsonrpc.encode {
+ method = name,
+ params = params,
+ }
+ log.debug('Notify', name, #buf)
+ io.stdout:write(buf)
+end
+
+function m.awaitRequest(name, params)
+ local id = reqCounter()
+ local buf = jsonrpc.encode {
+ id = id,
+ method = name,
+ params = params,
+ }
+ log.debug('Request', name, #buf)
+ io.stdout:write(buf)
+ return await.wait(function (waker)
+ m.waiting[id] = waker
+ end)
+end
+
+function m.doMethod(proto)
+ local method, optional = m.getMethodName(proto)
+ local abil = m.ability[method]
+ if not abil then
+ if not optional then
+ log.warn('Recieved unknown proto: ' .. method)
+ end
+ if proto.id then
+ m.responseErr(proto.id, ErrorCodes.MethodNotFound, method)
+ end
+ return
+ end
+ await.create(function ()
+ local clock = os.clock()
+ local ok, res = xpcall(abil, log.error, proto.params)
+ local passed = os.clock() - clock
+ if passed > 0.2 then
+ log.debug(('Method [%s] takes [%.3f]sec.'):format(method, passed))
+ end
+ if not proto.id then
+ return
+ end
+ if ok then
+ m.response(proto.id, res)
+ else
+ m.responseErr(proto.id, ErrorCodes.InternalError, res)
+ end
+ end)
+end
+
+function m.doResponse(proto)
+ local id = proto.id
+ local waker = m.waiting[id]
+ if not waker then
+ log.warn('Response id not found: ' .. util.dump(proto))
+ return
+ end
+ m.waiting[id] = nil
+ if proto.error then
+ log.warn(('Response error [%d]: %s'):format(proto.error.code, proto.error.message))
+ return
+ end
+ waker(proto.result)
+end
+
+function m.listen()
+ subprocess.filemode(io.stdin, 'b')
+ subprocess.filemode(io.stdout, 'b')
+ io.stdin:setvbuf 'no'
+ io.stdout:setvbuf 'no'
+ pub.task('loadProto')
+end
+
+return m
diff --git a/script-beta/src/provider/capability.lua b/script-beta/src/provider/capability.lua
new file mode 100644
index 00000000..aa95c758
--- /dev/null
+++ b/script-beta/src/provider/capability.lua
@@ -0,0 +1,42 @@
+local m = {}
+
+m.initer = {
+ -- 文本同步方式
+ textDocumentSync = {
+ -- 打开关闭文本时通知
+ openClose = true,
+ -- 文本改变时完全通知 TODO 支持差量更新(2)
+ change = 1,
+ },
+
+ hoverProvider = true,
+ definitionProvider = true,
+ referencesProvider = true,
+ renameProvider = {
+ prepareProvider = true,
+ },
+ --documentSymbolProvider = true,
+ documentHighlightProvider = true,
+ --codeActionProvider = true,
+ --signatureHelpProvider = {
+ -- triggerCharacters = { '(', ',' },
+ --},
+ --workspace = {
+ -- workspaceFolders = {
+ -- supported = true,
+ -- changeNotifications = true,
+ -- }
+ --},
+ --documentOnTypeFormattingProvider = {
+ -- firstTriggerCharacter = '}',
+ --},
+ --executeCommandProvider = {
+ -- commands = {
+ -- 'config',
+ -- 'removeSpace',
+ -- 'solve',
+ -- },
+ --},
+}
+
+return m
diff --git a/script-beta/src/provider/completion.lua b/script-beta/src/provider/completion.lua
new file mode 100644
index 00000000..d2df44d2
--- /dev/null
+++ b/script-beta/src/provider/completion.lua
@@ -0,0 +1,53 @@
+local proto = require 'proto'
+
+local isEnable = false
+
+local function allWords()
+ local str = [[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:('"[,#*@| ]]
+ local list = {}
+ for c in str:gmatch '.' do
+ list[#list+1] = c
+ end
+ return list
+end
+
+local function enable()
+ if isEnable then
+ return
+ end
+ isEnable = true
+ log.debug('Enable completion.')
+ proto.awaitRequest('client/registerCapability', {
+ registrations = {
+ {
+ id = 'completion',
+ method = 'textDocument/completion',
+ registerOptions = {
+ resolveProvider = false,
+ triggerCharacters = allWords(),
+ },
+ },
+ }
+ })
+end
+
+local function disable()
+ if not isEnable then
+ return
+ end
+ isEnable = false
+ log.debug('Disable completion.')
+ proto.awaitRequest('client/unregisterCapability', {
+ unregisterations = {
+ {
+ id = 'completion',
+ method = 'textDocument/completion',
+ },
+ }
+ })
+end
+
+return {
+ enable = enable,
+ disable = disable,
+}
diff --git a/script-beta/src/provider/diagnostic.lua b/script-beta/src/provider/diagnostic.lua
new file mode 100644
index 00000000..ba95f2bf
--- /dev/null
+++ b/script-beta/src/provider/diagnostic.lua
@@ -0,0 +1,209 @@
+local await = require 'await'
+local proto = require 'proto.proto'
+local define = require 'proto.define'
+local lang = require 'language'
+local files = require 'files'
+local config = require 'config'
+local core = require 'core.diagnostics'
+local util = require 'utility'
+
+local m = {}
+m._start = false
+m.cache = {}
+
+local function concat(t, sep)
+ if type(t) ~= 'table' then
+ return t
+ end
+ return table.concat(t, sep)
+end
+
+local function buildSyntaxError(uri, err)
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local message = lang.script('PARSER_'..err.type, err.info)
+
+ if err.version then
+ local version = err.info and err.info.version or config.config.runtime.version
+ message = message .. ('(%s)'):format(lang.script('DIAG_NEED_VERSION'
+ , concat(err.version, '/')
+ , version
+ ))
+ end
+
+ local related = err.info and err.info.related
+ local relatedInformation
+ if related then
+ relatedInformation = {}
+ for _, rel in ipairs(related) do
+ local rmessage
+ if rel.message then
+ rmessage = lang.script('PARSER_'..rel.message)
+ else
+ rmessage = text:sub(rel.start, rel.finish)
+ end
+ relatedInformation[#relatedInformation+1] = {
+ message = rmessage,
+ location = define.location(uri, define.range(lines, text, rel.start, rel.finish)),
+ }
+ end
+ end
+
+ return {
+ range = define.range(lines, text, err.start, err.finish),
+ severity = define.DiagnosticSeverity.Error,
+ source = lang.script.DIAG_SYNTAX_CHECK,
+ message = message,
+ relatedInformation = relatedInformation,
+ }
+end
+
+local function buildDiagnostic(uri, diag)
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+
+ local relatedInformation
+ if diag.related then
+ relatedInformation = {}
+ for _, rel in ipairs(diag.related) do
+ local rtext = files.getText(rel.uri)
+ local rlines = files.getLines(rel.uri)
+ relatedInformation[#relatedInformation+1] = {
+ message = rel.message or rtext:sub(rel.start, rel.finish),
+ location = define.location(rel.uri, define.range(rlines, rtext, rel.start, rel.finish))
+ }
+ end
+ end
+
+ return {
+ range = define.range(lines, text, diag.start, diag.finish),
+ source = lang.script.DIAG_DIAGNOSTICS,
+ severity = diag.level,
+ message = diag.message,
+ code = diag.code,
+ tags = diag.tags,
+ relatedInformation = relatedInformation,
+ }
+end
+
+local function merge(a, b)
+ if not a and not b then
+ return nil
+ end
+ local t = {}
+ if a then
+ for i = 1, #a do
+ t[#t+1] = a[i]
+ end
+ end
+ if b then
+ for i = 1, #b do
+ t[#t+1] = b[i]
+ end
+ end
+ return t
+end
+
+function m.clear(uri)
+ if not m.cache[uri] then
+ return
+ end
+ m.cache[uri] = nil
+ proto.notify('textDocument/publishDiagnostics', {
+ uri = uri,
+ diagnostics = {},
+ })
+end
+
+function m.syntaxErrors(uri, ast)
+ if #ast.errs == 0 then
+ return nil
+ end
+
+ local results = {}
+
+ for _, err in ipairs(ast.errs) do
+ results[#results+1] = buildSyntaxError(uri, err)
+ end
+
+ return results
+end
+
+function m.diagnostics(uri, syntaxOnly)
+ if syntaxOnly or not m._start then
+ return m.cache[uri]
+ end
+
+ local diags = core(uri)
+ if not diags then
+ return nil
+ end
+
+ local results = {}
+ for _, diag in ipairs(diags) do
+ results[#results+1] = buildDiagnostic(uri, diag)
+ end
+
+ return results
+end
+
+function m.doDiagnostic(uri, syntaxOnly)
+ local ast = files.getAst(uri)
+ if not ast then
+ m.clear(uri)
+ return
+ end
+
+ local syntax = m.syntaxErrors(uri, ast)
+ local diagnostics = m.diagnostics(uri, syntaxOnly)
+ local full = merge(syntax, diagnostics)
+ if not full then
+ m.clear(uri)
+ return
+ end
+
+ if util.equal(m.cache[uri], full) then
+ return
+ end
+ m.cache[uri] = full
+
+ proto.notify('textDocument/publishDiagnostics', {
+ uri = uri,
+ diagnostics = full,
+ })
+end
+
+function m.refresh(uri)
+ await.create(function ()
+ await.delay(function ()
+ return files.globalVersion
+ end)
+ if uri then
+ m.doDiagnostic(uri, true)
+ end
+ if not m._start then
+ return
+ end
+ local clock = os.clock()
+ if uri then
+ m.doDiagnostic(uri)
+ end
+ for destUri in files.eachFile() do
+ if destUri ~= uri then
+ m.doDiagnostic(files.getOriginUri(destUri))
+ await.delay(function ()
+ return files.globalVersion
+ end)
+ end
+ end
+ local passed = os.clock() - clock
+ log.info(('Finish diagnostics, takes [%.3f] sec.'):format(passed))
+ end)
+end
+
+function m.start()
+ m._start = true
+ m.refresh()
+end
+
+return m
diff --git a/script-beta/src/provider/init.lua b/script-beta/src/provider/init.lua
new file mode 100644
index 00000000..95f4b3d1
--- /dev/null
+++ b/script-beta/src/provider/init.lua
@@ -0,0 +1,298 @@
+local util = require 'utility'
+local cap = require 'provider.capability'
+local completion= require 'provider.completion'
+local await = require 'await'
+local files = require 'files'
+local proto = require 'proto.proto'
+local define = require 'proto.define'
+local workspace = require 'workspace'
+local config = require 'config'
+local library = require 'library'
+local markdown = require 'provider.markdown'
+
+local function updateConfig()
+ local configs = proto.awaitRequest('workspace/configuration', {
+ items = {
+ {
+ scopeUri = workspace.uri,
+ section = 'Lua',
+ },
+ {
+ scopeUri = workspace.uri,
+ section = 'files.associations',
+ },
+ {
+ scopeUri = workspace.uri,
+ section = 'files.exclude',
+ }
+ },
+ })
+
+ local updated = configs[1]
+ local other = {
+ associations = configs[2],
+ exclude = configs[3],
+ }
+
+ local oldConfig = util.deepCopy(config.config)
+ local oldOther = util.deepCopy(config.other)
+ config.setConfig(updated, other)
+ local newConfig = config.config
+ local newOther = config.other
+ if not util.equal(oldConfig.runtime, newConfig.runtime) then
+ library.reload()
+ end
+ if not util.equal(oldConfig.diagnostics, newConfig.diagnostics) then
+ end
+ if not util.equal(oldConfig.plugin, newConfig.plugin) then
+ end
+ if not util.equal(oldConfig.workspace, newConfig.workspace)
+ or not util.equal(oldConfig.plugin, newConfig.plugin)
+ or not util.equal(oldOther.associations, newOther.associations)
+ or not util.equal(oldOther.exclude, newOther.exclude)
+ then
+ end
+
+ if newConfig.completion.enable then
+ --completion.enable()
+ else
+ completion.disable()
+ end
+end
+
+proto.on('initialize', function (params)
+ --log.debug(util.dump(params))
+ if params.workspaceFolders then
+ local name = params.workspaceFolders[1].name
+ local uri = params.workspaceFolders[1].uri
+ workspace.init(name, uri)
+ end
+ return {
+ capabilities = cap.initer,
+ }
+end)
+
+proto.on('initialized', function (params)
+ updateConfig()
+ proto.awaitRequest('client/registerCapability', {
+ registrations = {
+ -- 监视文件变化
+ {
+ id = '0',
+ method = 'workspace/didChangeWatchedFiles',
+ registerOptions = {
+ watchers = {
+ {
+ globPattern = '**/',
+ kind = 1 | 2 | 4,
+ }
+ },
+ },
+ },
+ -- 配置变化
+ {
+ id = '1',
+ method = 'workspace/didChangeConfiguration',
+ }
+ }
+ })
+ await.create(workspace.awaitPreload)
+ return true
+end)
+
+proto.on('exit', function ()
+ log.info('Server exited.')
+ os.exit(true)
+end)
+
+proto.on('shutdown', function ()
+ log.info('Server shutdown.')
+ return true
+end)
+
+proto.on('workspace/configuration', function ()
+ updateConfig()
+end)
+
+proto.on('workspace/didChangeWatchedFiles', function (params)
+end)
+
+proto.on('textDocument/didOpen', function (params)
+ local doc = params.textDocument
+ local uri = doc.uri
+ local text = doc.text
+ files.open(uri)
+ files.setText(uri, text)
+end)
+
+proto.on('textDocument/didClose', function (params)
+ local doc = params.textDocument
+ local uri = doc.uri
+ files.close(uri)
+ if not files.isLua(uri) then
+ files.remove(uri)
+ end
+end)
+
+proto.on('textDocument/didChange', function (params)
+ local doc = params.textDocument
+ local change = params.contentChanges
+ local uri = doc.uri
+ local text = change[1].text
+ if files.isLua(uri) or files.isOpen(uri) then
+ files.setText(uri, text)
+ end
+end)
+
+proto.on('textDocument/hover', function (params)
+ local core = require 'core.hover'
+ local doc = params.textDocument
+ local uri = doc.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local hover = core(uri, offset)
+ if not hover then
+ return nil
+ end
+ local md = markdown()
+ md:add('lua', hover.label)
+ return {
+ contents = {
+ value = md:string(),
+ kind = 'markdown',
+ },
+ range = define.range(lines, text, hover.source.start, hover.source.finish),
+ }
+end)
+
+proto.on('textDocument/definition', function (params)
+ local core = require 'core.definition'
+ local uri = params.textDocument.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local result = core(uri, offset)
+ if not result then
+ return nil
+ end
+ local response = {}
+ for i, info in ipairs(result) do
+ local targetUri = info.uri
+ local targetLines = files.getLines(targetUri)
+ local targetText = files.getText(targetUri)
+ response[i] = define.locationLink(targetUri
+ , define.range(targetLines, targetText, info.target.start, info.target.finish)
+ , define.range(targetLines, targetText, info.target.start, info.target.finish)
+ , define.range(lines, text, info.source.start, info.source.finish)
+ )
+ end
+ return response
+end)
+
+proto.on('textDocument/references', function (params)
+ local core = require 'core.reference'
+ local uri = params.textDocument.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local result = core(uri, offset)
+ if not result then
+ return nil
+ end
+ local response = {}
+ for i, info in ipairs(result) do
+ local targetUri = info.uri
+ local targetLines = files.getLines(targetUri)
+ local targetText = files.getText(targetUri)
+ response[i] = define.location(targetUri
+ , define.range(targetLines, targetText, info.target.start, info.target.finish)
+ )
+ end
+ return response
+end)
+
+proto.on('textDocument/documentHighlight', function (params)
+ local core = require 'core.highlight'
+ local uri = params.textDocument.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local result = core(uri, offset)
+ if not result then
+ return nil
+ end
+ local response = {}
+ for _, info in ipairs(result) do
+ response[#response+1] = {
+ range = define.range(lines, text, info.start, info.finish),
+ kind = info.kind,
+ }
+ end
+ return response
+end)
+
+proto.on('textDocument/rename', function (params)
+ local core = require 'core.rename'
+ local uri = params.textDocument.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local result = core.rename(uri, offset, params.newName)
+ if not result then
+ return nil
+ end
+ local workspaceEdit = {
+ changes = {},
+ }
+ for _, info in ipairs(result) do
+ local ruri = info.uri
+ local rlines = files.getLines(ruri)
+ local rtext = files.getText(ruri)
+ if not workspaceEdit.changes[ruri] then
+ workspaceEdit.changes[ruri] = {}
+ end
+ local textEdit = define.textEdit(define.range(rlines, rtext, info.start, info.finish), info.text)
+ workspaceEdit.changes[ruri][#workspaceEdit.changes[ruri]+1] = textEdit
+ end
+ return workspaceEdit
+end)
+
+proto.on('textDocument/prepareRename', function (params)
+ local core = require 'core.rename'
+ local uri = params.textDocument.uri
+ if not files.exists(uri) then
+ return nil
+ end
+ local lines = files.getLines(uri)
+ local text = files.getText(uri)
+ local offset = define.offset(lines, text, params.position)
+ local result = core.prepareRename(uri, offset)
+ if not result then
+ return nil
+ end
+ return {
+ range = define.range(lines, text, result.start, result.finish),
+ placeholder = result.text,
+ }
+end)
+
+proto.on('textDocument/completion', function (params)
+ --log.info(util.dump(params))
+ return nil
+end)
diff --git a/script-beta/src/provider/markdown.lua b/script-beta/src/provider/markdown.lua
new file mode 100644
index 00000000..0f69ad87
--- /dev/null
+++ b/script-beta/src/provider/markdown.lua
@@ -0,0 +1,22 @@
+local mt = {}
+mt.__index = mt
+mt.__name = 'markdown'
+
+function mt:add(language, text)
+ if not text then
+ return
+ end
+ if language == 'lua' then
+ self[#self+1] = ('```lua\n%s\n```'):format(text)
+ else
+ self[#self+1] = text:gsub('\n', '\n\n')
+ end
+end
+
+function mt:string()
+ return table.concat(self, '\n')
+end
+
+return function ()
+ return setmetatable({}, mt)
+end
diff --git a/script-beta/src/pub/init.lua b/script-beta/src/pub/init.lua
new file mode 100644
index 00000000..61b43da7
--- /dev/null
+++ b/script-beta/src/pub/init.lua
@@ -0,0 +1,4 @@
+local pub = require 'pub.pub'
+require 'pub.report'
+
+return pub
diff --git a/script-beta/src/pub/pub.lua b/script-beta/src/pub/pub.lua
new file mode 100644
index 00000000..2cb1b4e8
--- /dev/null
+++ b/script-beta/src/pub/pub.lua
@@ -0,0 +1,236 @@
+local thread = require 'bee.thread'
+local utility = require 'utility'
+local await = require 'await'
+local timer = require 'timer'
+
+local errLog = thread.channel 'errlog'
+local type = type
+local counter = utility.counter()
+
+local braveTemplate = [[
+package.path = %q
+package.cpath = %q
+
+collectgarbage 'generational'
+
+log = require 'brave.log'
+
+dofile(%q)
+local brave = require 'brave'
+brave.register(%d)
+]]
+
+---@class pub
+local m = {}
+m.type = 'pub'
+m.braves = {}
+m.ability = {}
+m.taskQueue = {}
+
+--- 注册酒馆的功能
+function m.on(name, callback)
+ m.ability[name] = callback
+end
+
+--- 招募勇者,勇者会从公告板上领取任务,完成任务后到看板娘处交付任务
+---@param num integer
+function m.recruitBraves(num)
+ for _ = 1, num do
+ local id = #m.braves + 1
+ log.info('Create brave:', id)
+ thread.newchannel('taskpad' .. id)
+ thread.newchannel('waiter' .. id)
+ m.braves[id] = {
+ id = id,
+ taskpad = thread.channel('taskpad' .. id),
+ waiter = thread.channel('waiter' .. id),
+ thread = thread.thread(braveTemplate:format(
+ package.path,
+ package.cpath,
+ (ROOT / 'debugger.lua'):string(),
+ id
+ )),
+ taskMap = {},
+ currentTask = nil,
+ memory = 0,
+ }
+ end
+end
+
+--- 勇者是否有空
+function m.isIdle(brave)
+ return next(brave.taskMap) == nil
+end
+
+--- 给勇者推送任务
+function m.pushTask(brave, info)
+ if info.removed then
+ return false
+ end
+ brave.taskpad:push(info.name, info.id, info.params)
+ brave.taskMap[info.id] = info
+ --log.info(('Push task %q(%d) to # %d, queue length %d'):format(info.name, info.id, brave.id, #m.taskQueue))
+ return true
+end
+
+--- 从勇者处接收任务反馈
+function m.popTask(brave, id, result)
+ local info = brave.taskMap[id]
+ if not info then
+ log.warn(('Brave pushed unknown task result: # %d => [%d]'):format(brave.id, id))
+ return
+ end
+ brave.taskMap[id] = nil
+ --log.info(('Pop task %q(%d) from # %d'):format(info.name, info.id, brave.id))
+ m.checkWaitingTask(brave)
+ if not info.removed then
+ info.removed = true
+ if info.callback then
+ xpcall(info.callback, log.error, result)
+ end
+ end
+end
+
+--- 从勇者处接收报告
+function m.popReport(brave, name, params)
+ local abil = m.ability[name]
+ if not abil then
+ log.warn(('Brave pushed unknown report: # %d => %q'):format(brave.id, name))
+ return
+ end
+ xpcall(abil, log.error, params, brave)
+end
+
+--- 发布任务
+---@parma name string
+---@param params any
+function m.awaitTask(name, params)
+ local info = {
+ id = counter(),
+ name = name,
+ params = params,
+ }
+ for _, brave in ipairs(m.braves) do
+ if m.isIdle(brave) then
+ if m.pushTask(brave, info) then
+ return await.wait(function (waker)
+ info.callback = waker
+ end)
+ else
+ return nil
+ end
+ end
+ end
+ -- 如果所有勇者都在战斗,那么把任务缓存到队列里
+ -- 当有勇者提交任务反馈后,尝试把按顺序将堆积任务
+ -- 交给该勇者
+ m.taskQueue[#m.taskQueue+1] = info
+ --log.info(('Add task %q(%d) in queue, length %d.'):format(name, info.id, #m.taskQueue))
+ return await.wait(function (waker)
+ info.callback = waker
+ end)
+end
+
+--- 发布同步任务,如果任务进入了队列,会返回执行器
+--- 通过 jumpQueue 可以插队
+---@parma name string
+---@param params any
+---@param callback function
+function m.task(name, params, callback)
+ local info = {
+ id = counter(),
+ name = name,
+ params = params,
+ callback = callback,
+ }
+ for _, brave in ipairs(m.braves) do
+ if m.isIdle(brave) then
+ m.pushTask(brave, info)
+ return nil
+ end
+ end
+ -- 如果所有勇者都在战斗,那么把任务缓存到队列里
+ -- 当有勇者提交任务反馈后,尝试把按顺序将堆积任务
+ -- 交给该勇者
+ m.taskQueue[#m.taskQueue+1] = info
+ --log.info(('Add task %q(%d) in queue, length %d.'):format(name, info.id, #m.taskQueue))
+ return info
+end
+
+--- 插队
+function m.jumpQueue(info)
+ for i = 2, #m.taskQueue do
+ if m.taskQueue[i] == info then
+ m.taskQueue[i] = nil
+ table.move(m.taskQueue, 1, i - 1, 2)
+ m.taskQueue[1] = info
+ return
+ end
+ end
+end
+
+--- 移除任务
+function m.remove(info)
+ info.removed = true
+ for i = 1, #m.taskQueue do
+ if m.taskQueue[i] == info then
+ table.remove(m.taskQueue[i], i)
+ return
+ end
+ end
+end
+
+--- 检查堆积任务
+function m.checkWaitingTask(brave)
+ if #m.taskQueue == 0 then
+ return
+ end
+ -- 如果勇者还有其他活要忙,那么让他继续忙去吧
+ if next(brave.taskMap) then
+ return
+ end
+ while #m.taskQueue > 0 do
+ local info = table.remove(m.taskQueue, 1)
+ if m.pushTask(brave, info) then
+ break
+ end
+ end
+end
+
+--- 接收反馈
+---|返回接收到的反馈数量
+---@return integer
+function m.recieve()
+ for _, brave in ipairs(m.braves) do
+ while true do
+ local suc, id, result = brave.waiter:pop()
+ if not suc then
+ goto CONTINUE
+ end
+ if type(id) == 'string' then
+ m.popReport(brave, id, result)
+ else
+ m.popTask(brave, id, result)
+ end
+ end
+ ::CONTINUE::
+ end
+end
+
+--- 检查伤亡情况
+function m.checkDead()
+ while true do
+ local suc, err = errLog:pop()
+ if not suc then
+ break
+ end
+ log.error('Brave is dead!: ' .. err)
+ end
+end
+
+function m.step()
+ m.checkDead()
+ m.recieve()
+end
+
+return m
diff --git a/script-beta/src/pub/report.lua b/script-beta/src/pub/report.lua
new file mode 100644
index 00000000..edd3ee0e
--- /dev/null
+++ b/script-beta/src/pub/report.lua
@@ -0,0 +1,21 @@
+local pub = require 'pub.pub'
+local await = require 'await'
+
+pub.on('log', function (params, brave)
+ log.raw(brave.id, params.level, params.msg, params.src, params.line)
+end)
+
+pub.on('mem', function (count, brave)
+ brave.memory = count
+end)
+
+pub.on('proto', function (params)
+ local proto = require 'proto'
+ await.create(function ()
+ if params.method then
+ proto.doMethod(params)
+ else
+ proto.doResponse(params)
+ end
+ end)
+end)
diff --git a/script-beta/src/service/init.lua b/script-beta/src/service/init.lua
new file mode 100644
index 00000000..eb0bd057
--- /dev/null
+++ b/script-beta/src/service/init.lua
@@ -0,0 +1,3 @@
+local service = require 'service.service'
+
+return service
diff --git a/script-beta/src/service/service.lua b/script-beta/src/service/service.lua
new file mode 100644
index 00000000..e1cb604b
--- /dev/null
+++ b/script-beta/src/service/service.lua
@@ -0,0 +1,137 @@
+local pub = require 'pub'
+local thread = require 'bee.thread'
+local await = require 'await'
+local timer = require 'timer'
+local proto = require 'proto'
+local vm = require 'vm'
+
+local m = {}
+m.type = 'service'
+
+local function countMemory()
+ local mems = {}
+ local total = 0
+ mems[0] = collectgarbage 'count'
+ total = total + collectgarbage 'count'
+ for id, brave in ipairs(pub.braves) do
+ mems[id] = brave.memory
+ total = total + brave.memory
+ end
+ return total, mems
+end
+
+function m.reportMemoryCollect()
+ local totalMemBefore = countMemory()
+ local clock = os.clock()
+ collectgarbage()
+ local passed = os.clock() - clock
+ local totalMemAfter, mems = countMemory()
+
+ local lines = {}
+ lines[#lines+1] = ' --------------- Memory ---------------'
+ lines[#lines+1] = (' Total: %.3f(%.3f) MB'):format(totalMemAfter / 1000.0, totalMemBefore / 1000.0)
+ for i = 0, #mems do
+ lines[#lines+1] = (' # %02d : %.3f MB'):format(i, mems[i] / 1000.0)
+ end
+ lines[#lines+1] = (' Collect garbage takes [%.3f] sec'):format(passed)
+ return table.concat(lines, '\n')
+end
+
+function m.reportMemory()
+ local totalMem, mems = countMemory()
+
+ local lines = {}
+ lines[#lines+1] = ' --------------- Memory ---------------'
+ lines[#lines+1] = (' Total: %.3f MB'):format(totalMem / 1000.0)
+ for i = 0, #mems do
+ lines[#lines+1] = (' # %02d : %.3f MB'):format(i, mems[i] / 1000.0)
+ end
+ return table.concat(lines, '\n')
+end
+
+function m.reportTask()
+ local total = 0
+ local running = 0
+ local suspended = 0
+ local normal = 0
+ local dead = 0
+
+ for co in pairs(await.coTracker) do
+ total = total + 1
+ local status = coroutine.status(co)
+ if status == 'running' then
+ running = running + 1
+ elseif status == 'suspended' then
+ suspended = suspended + 1
+ elseif status == 'normal' then
+ normal = normal + 1
+ elseif status == 'dead' then
+ dead = dead + 1
+ end
+ end
+
+ local lines = {}
+ lines[#lines+1] = ' --------------- Coroutine ---------------'
+ lines[#lines+1] = (' Total: %d'):format(total)
+ lines[#lines+1] = (' Running: %d'):format(running)
+ lines[#lines+1] = (' Suspended: %d'):format(suspended)
+ lines[#lines+1] = (' Normal: %d'):format(normal)
+ lines[#lines+1] = (' Dead: %d'):format(dead)
+ return table.concat(lines, '\n')
+end
+
+function m.reportCache()
+ local total = 0
+ local dead = 0
+
+ for cache in pairs(vm.cacheTracker) do
+ total = total + 1
+ if cache.dead then
+ dead = dead + 1
+ end
+ end
+
+ local lines = {}
+ lines[#lines+1] = ' --------------- Cache ---------------'
+ lines[#lines+1] = (' Total: %d'):format(total)
+ lines[#lines+1] = (' Dead: %d'):format(dead)
+ return table.concat(lines, '\n')
+end
+
+function m.report()
+ local t = timer.loop(60.0, function ()
+ local lines = {}
+ lines[#lines+1] = ''
+ lines[#lines+1] = '========= Medical Examination Report ========='
+ lines[#lines+1] = m.reportMemory()
+ lines[#lines+1] = m.reportTask()
+ lines[#lines+1] = m.reportCache()
+ lines[#lines+1] = '=============================================='
+
+ log.debug(table.concat(lines, '\n'))
+ end)
+ t:onTimer()
+end
+
+function m.startTimer()
+ while true do
+ pub.step()
+ if not await.step() then
+ thread.sleep(0.001)
+ timer.update()
+ end
+ end
+end
+
+function m.start()
+ await.setErrorHandle(log.error)
+ pub.recruitBraves(4)
+ proto.listen()
+ m.report()
+
+ require 'provider'
+
+ m.startTimer()
+end
+
+return m
diff --git a/script-beta/src/timer.lua b/script-beta/src/timer.lua
new file mode 100644
index 00000000..1d4343f1
--- /dev/null
+++ b/script-beta/src/timer.lua
@@ -0,0 +1,218 @@
+local setmetatable = setmetatable
+local mathMax = math.max
+local mathFloor = math.floor
+local osClock = os.clock
+
+_ENV = nil
+
+local curFrame = 0
+local maxFrame = 0
+local curIndex = 0
+local freeQueue = {}
+local timer = {}
+
+local function allocQueue()
+ local n = #freeQueue
+ if n > 0 then
+ local r = freeQueue[n]
+ freeQueue[n] = nil
+ return r
+ else
+ return {}
+ end
+end
+
+local function mTimeout(self, timeout)
+ if self._pauseRemaining or self._running then
+ return
+ end
+ local ti = curFrame + timeout
+ local q = timer[ti]
+ if q == nil then
+ q = allocQueue()
+ timer[ti] = q
+ end
+ self._timeoutFrame = ti
+ self._running = true
+ q[#q + 1] = self
+end
+
+local function mWakeup(self)
+ if self._removed then
+ return
+ end
+ self._running = false
+ if self._onTimer then
+ self:_onTimer()
+ end
+ if self._removed then
+ return
+ end
+ if self._timerCount then
+ if self._timerCount > 1 then
+ self._timerCount = self._timerCount - 1
+ mTimeout(self, self._timeout)
+ else
+ self._removed = true
+ end
+ else
+ mTimeout(self, self._timeout)
+ end
+end
+
+local function getRemaining(self)
+ if self._removed then
+ return 0
+ end
+ if self._pauseRemaining then
+ return self._pauseRemaining
+ end
+ if self._timeoutFrame == curFrame then
+ return self._timeout or 0
+ end
+ return self._timeoutFrame - curFrame
+end
+
+local function onTick()
+ local q = timer[curFrame]
+ if q == nil then
+ curIndex = 0
+ return
+ end
+ for i = curIndex + 1, #q do
+ local callback = q[i]
+ curIndex = i
+ q[i] = nil
+ if callback then
+ mWakeup(callback)
+ end
+ end
+ curIndex = 0
+ timer[curFrame] = nil
+ freeQueue[#freeQueue + 1] = q
+end
+
+local m = {}
+local mt = {}
+mt.__index = mt
+mt.type = 'timer'
+
+function mt:__tostring()
+ return '[table:timer]'
+end
+
+function mt:__call()
+ if self._onTimer then
+ self:_onTimer()
+ end
+end
+
+function mt:remove()
+ self._removed = true
+end
+
+function mt:pause()
+ if self._removed or self._pauseRemaining then
+ return
+ end
+ self._pauseRemaining = getRemaining(self)
+ self._running = false
+ local ti = self._timeoutFrame
+ local q = timer[ti]
+ if q then
+ for i = #q, 1, -1 do
+ if q[i] == self then
+ q[i] = false
+ return
+ end
+ end
+ end
+end
+
+function mt:resume()
+ if self._removed or not self._pauseRemaining then
+ return
+ end
+ local timeout = self._pauseRemaining
+ self._pauseRemaining = nil
+ mTimeout(self, timeout)
+end
+
+function mt:restart()
+ if self._removed or self._pauseRemaining or not self._running then
+ return
+ end
+ local ti = self._timeoutFrame
+ local q = timer[ti]
+ if q then
+ for i = #q, 1, -1 do
+ if q[i] == self then
+ q[i] = false
+ break
+ end
+ end
+ end
+ self._running = false
+ mTimeout(self, self._timeout)
+end
+
+function mt:remaining()
+ return getRemaining(self) / 1000.0
+end
+
+function mt:onTimer()
+ self:_onTimer()
+end
+
+function m.wait(timeout, onTimer)
+ local t = setmetatable({
+ ['_timeout'] = mathMax(mathFloor(timeout * 1000.0), 1),
+ ['_onTimer'] = onTimer,
+ ['_timerCount'] = 1,
+ }, mt)
+ mTimeout(t, t._timeout)
+ return t
+end
+
+function m.loop(timeout, onTimer)
+ local t = setmetatable({
+ ['_timeout'] = mathFloor(timeout * 1000.0),
+ ['_onTimer'] = onTimer,
+ }, mt)
+ mTimeout(t, t._timeout)
+ return t
+end
+
+function m.timer(timeout, count, onTimer)
+ if count == 0 then
+ return m.loop(timeout, onTimer)
+ end
+ local t = setmetatable({
+ ['_timeout'] = mathFloor(timeout * 1000.0),
+ ['_onTimer'] = onTimer,
+ ['_timerCount'] = count,
+ }, mt)
+ mTimeout(t, t._timeout)
+ return t
+end
+
+function m.clock()
+ return curFrame / 1000.0
+end
+
+local lastClock = osClock()
+function m.update()
+ local currentClock = osClock()
+ local delta = currentClock - lastClock
+ lastClock = currentClock
+ if curIndex ~= 0 then
+ curFrame = curFrame - 1
+ end
+ maxFrame = maxFrame + delta * 1000.0
+ while curFrame < maxFrame do
+ curFrame = curFrame + 1
+ onTick()
+ end
+end
+
+return m
diff --git a/script-beta/src/utility.lua b/script-beta/src/utility.lua
new file mode 100644
index 00000000..c9defebc
--- /dev/null
+++ b/script-beta/src/utility.lua
@@ -0,0 +1,452 @@
+local tableSort = table.sort
+local stringRep = string.rep
+local tableConcat = table.concat
+local tostring = tostring
+local type = type
+local pairs = pairs
+local ipairs = ipairs
+local next = next
+local rawset = rawset
+local move = table.move
+local setmetatable = setmetatable
+local mathType = math.type
+local mathCeil = math.ceil
+local getmetatable = getmetatable
+local mathAbs = math.abs
+local ioOpen = io.open
+
+_ENV = nil
+
+local function formatNumber(n)
+ local str = ('%.10f'):format(n)
+ str = str:gsub('%.?0*$', '')
+ return str
+end
+
+local function isInteger(n)
+ if mathType then
+ return mathType(n) == 'integer'
+ else
+ return type(n) == 'number' and n % 1 == 0
+ end
+end
+
+local TAB = setmetatable({}, { __index = function (self, n)
+ self[n] = stringRep(' ', n)
+ return self[n]
+end})
+
+local RESERVED = {
+ ['and'] = true,
+ ['break'] = true,
+ ['do'] = true,
+ ['else'] = true,
+ ['elseif'] = true,
+ ['end'] = true,
+ ['false'] = true,
+ ['for'] = true,
+ ['function'] = true,
+ ['goto'] = true,
+ ['if'] = true,
+ ['in'] = true,
+ ['local'] = true,
+ ['nil'] = true,
+ ['not'] = true,
+ ['or'] = true,
+ ['repeat'] = true,
+ ['return'] = true,
+ ['then'] = true,
+ ['true'] = true,
+ ['until'] = true,
+ ['while'] = true,
+}
+
+local m = {}
+
+--- 打印表的结构
+---@param tbl table
+---@param option table {optional = 'self'}
+---@return string
+function m.dump(tbl, option)
+ if not option then
+ option = {}
+ end
+ if type(tbl) ~= 'table' then
+ return ('%s'):format(tbl)
+ end
+ local lines = {}
+ local mark = {}
+ lines[#lines+1] = '{'
+ local function unpack(tbl, tab)
+ mark[tbl] = (mark[tbl] or 0) + 1
+ local keys = {}
+ local keymap = {}
+ local integerFormat = '[%d]'
+ local alignment = 0
+ if #tbl >= 10 then
+ local width = #tostring(#tbl)
+ integerFormat = ('[%%0%dd]'):format(mathCeil(width))
+ end
+ for key in pairs(tbl) do
+ if type(key) == 'string' then
+ if not key:match('^[%a_][%w_]*$')
+ or RESERVED[key]
+ or option['longStringKey']
+ then
+ keymap[key] = ('[%q]'):format(key)
+ else
+ keymap[key] = ('%s'):format(key)
+ end
+ elseif isInteger(key) then
+ keymap[key] = integerFormat:format(key)
+ else
+ keymap[key] = ('["<%s>"]'):format(tostring(key))
+ end
+ keys[#keys+1] = key
+ if option['alignment'] then
+ if #keymap[key] > alignment then
+ alignment = #keymap[key]
+ end
+ end
+ end
+ local mt = getmetatable(tbl)
+ if not mt or not mt.__pairs then
+ if option['sorter'] then
+ option['sorter'](keys, keymap)
+ else
+ tableSort(keys, function (a, b)
+ return keymap[a] < keymap[b]
+ end)
+ end
+ end
+ for _, key in ipairs(keys) do
+ local keyWord = keymap[key]
+ if option['noArrayKey']
+ and isInteger(key)
+ and key <= #tbl
+ then
+ keyWord = ''
+ else
+ if #keyWord < alignment then
+ keyWord = keyWord .. (' '):rep(alignment - #keyWord) .. ' = '
+ else
+ keyWord = keyWord .. ' = '
+ end
+ end
+ local value = tbl[key]
+ local tp = type(value)
+ if option['format'] and option['format'][key] then
+ lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, option['format'][key](value, unpack, tab+1))
+ elseif tp == 'table' then
+ if mark[value] and mark[value] > 0 then
+ lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, option['loop'] or '"<Loop>"')
+ else
+ lines[#lines+1] = ('%s%s{'):format(TAB[tab+1], keyWord)
+ unpack(value, tab+1)
+ lines[#lines+1] = ('%s},'):format(TAB[tab+1])
+ end
+ elseif tp == 'string' then
+ lines[#lines+1] = ('%s%s%q,'):format(TAB[tab+1], keyWord, value)
+ elseif tp == 'number' then
+ lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, (option['number'] or formatNumber)(value))
+ elseif tp == 'nil' then
+ else
+ lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, tostring(value))
+ end
+ end
+ mark[tbl] = mark[tbl] - 1
+ end
+ unpack(tbl, 0)
+ lines[#lines+1] = '}'
+ return tableConcat(lines, '\r\n')
+end
+
+--- 递归判断A与B是否相等
+---@param a any
+---@param b any
+---@return boolean
+function m.equal(a, b)
+ local tp1 = type(a)
+ local tp2 = type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k, v in pairs(a) do
+ mark[k] = true
+ local res = m.equal(v, b[k])
+ if not res then
+ return false
+ end
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ elseif tp1 == 'number' then
+ return mathAbs(a - b) <= 1e-10
+ else
+ return a == b
+ end
+end
+
+local function sortTable(tbl)
+ if not tbl then
+ tbl = {}
+ end
+ local mt = {}
+ local keys = {}
+ local mark = {}
+ local n = 0
+ for key in next, tbl do
+ n=n+1;keys[n] = key
+ mark[key] = true
+ end
+ tableSort(keys)
+ function mt:__newindex(key, value)
+ rawset(self, key, value)
+ n=n+1;keys[n] = key
+ mark[key] = true
+ if type(value) == 'table' then
+ sortTable(value)
+ end
+ end
+ function mt:__pairs()
+ local list = {}
+ local m = 0
+ for key in next, self do
+ if not mark[key] then
+ m=m+1;list[m] = key
+ end
+ end
+ if m > 0 then
+ move(keys, 1, n, m+1)
+ tableSort(list)
+ for i = 1, m do
+ local key = list[i]
+ keys[i] = key
+ mark[key] = true
+ end
+ n = n + m
+ end
+ local i = 0
+ return function ()
+ i = i + 1
+ local key = keys[i]
+ return key, self[key]
+ end
+ end
+
+ return setmetatable(tbl, mt)
+end
+
+--- 创建一个有序表
+---@param tbl table {optional = 'self'}
+---@return table
+function m.container(tbl)
+ return sortTable(tbl)
+end
+
+--- 读取文件
+---@param path string
+function m.loadFile(path)
+ local f, e = ioOpen(path, 'rb')
+ if not f then
+ return nil, e
+ end
+ if f:read(3) ~= '\xEF\xBB\xBF' then
+ f:seek("set")
+ end
+ local buf = f:read 'a'
+ f:close()
+ return buf
+end
+
+--- 写入文件
+---@param path string
+---@param content string
+function m.saveFile(path, content)
+ local f, e = ioOpen(path, "wb")
+
+ if f then
+ f:write(content)
+ f:close()
+ return true
+ else
+ return false, e
+ end
+end
+
+--- 计数器
+---@param init integer {optional = 'after'}
+---@param step integer {optional = 'after'}
+---@return fun():integer
+function m.counter(init, step)
+ if not step then
+ step = 1
+ end
+ local current = init and (init - 1) or 0
+ return function ()
+ current = current + step
+ return current
+ end
+end
+
+--- 排序后遍历
+---@param t table
+function m.sortPairs(t)
+ local keys = {}
+ for k in pairs(t) do
+ keys[#keys+1] = k
+ end
+ tableSort(keys)
+ local i = 0
+ return function ()
+ i = i + 1
+ local k = keys[i]
+ return k, t[k]
+ end
+end
+
+--- 深拷贝(不处理元表)
+---@param source table
+---@param target table {optional = 'self'}
+function m.deepCopy(source, target)
+ local mark = {}
+ local function copy(a, b)
+ if type(a) ~= 'table' then
+ return a
+ end
+ if mark[a] then
+ return mark[a]
+ end
+ if not b then
+ b = {}
+ end
+ mark[a] = b
+ for k, v in pairs(a) do
+ b[copy(k)] = copy(v)
+ end
+ return b
+ end
+ return copy(source, target)
+end
+
+--- 序列化
+function m.unpack(t)
+ local result = {}
+ local tid = 0
+ local cache = {}
+ local function unpack(o)
+ local id = cache[o]
+ if not id then
+ tid = tid + 1
+ id = tid
+ cache[o] = tid
+ if type(o) == 'table' then
+ local new = {}
+ result[tid] = new
+ for k, v in next, o do
+ new[unpack(k)] = unpack(v)
+ end
+ else
+ result[id] = o
+ end
+ end
+ return id
+ end
+ unpack(t)
+ return result
+end
+
+--- 反序列化
+function m.pack(t)
+ local cache = {}
+ local function pack(id)
+ local o = cache[id]
+ if o then
+ return o
+ end
+ o = t[id]
+ if type(o) == 'table' then
+ local new = {}
+ cache[id] = new
+ for k, v in next, o do
+ new[pack(k)] = pack(v)
+ end
+ return new
+ else
+ cache[id] = o
+ return o
+ end
+ end
+ return pack(1)
+end
+
+--- defer
+local deferMT = { __close = function (self) self[1]() end }
+function m.defer(callback)
+ return setmetatable({ callback }, deferMT)
+end
+
+local esc = {
+ ["'"] = [[\']],
+ ['"'] = [[\"]],
+ ['\r'] = [[\r]],
+ ['\n'] = '\\\n',
+}
+
+function m.viewString(str, quo)
+ if not quo then
+ if not str:find("'", 1, true) and str:find('"', 1, true) then
+ quo = "'"
+ else
+ quo = '"'
+ end
+ end
+ if quo == "'" then
+ return quo .. str:gsub([=[['\r\n]]=], esc) .. quo
+ elseif quo == '"' then
+ return quo .. str:gsub([=[["\r\n]]=], esc) .. quo
+ else
+ if str:find '\r' then
+ return m.viewString(str)
+ end
+ local eqnum = #quo - 2
+ local fsymb = ']' .. ('='):rep(eqnum) .. ']'
+ if not str:find(fsymb, 1, true) then
+ return quo .. str .. fsymb
+ end
+ for i = 0, 10 do
+ local fsymb = ']' .. ('='):rep(i) .. ']'
+ if not str:find(fsymb, 1, true) then
+ local ssymb = '[' .. ('='):rep(i) .. '['
+ return ssymb .. str .. fsymb
+ end
+ end
+ return m.viewString(str)
+ end
+end
+
+function m.viewLiteral(v)
+ local tp = type(v)
+ if tp == 'nil' then
+ return 'nil'
+ elseif tp == 'string' then
+ return m.viewString(v)
+ elseif tp == 'boolean' then
+ return tostring(v)
+ elseif tp == 'number' then
+ if isInteger(v) then
+ return tostring(v)
+ else
+ return formatNumber(v)
+ end
+ end
+ return nil
+end
+
+return m
diff --git a/script-beta/src/vm/dummySource.lua b/script-beta/src/vm/dummySource.lua
new file mode 100644
index 00000000..50ff13e7
--- /dev/null
+++ b/script-beta/src/vm/dummySource.lua
@@ -0,0 +1,13 @@
+local vm = require 'vm.vm'
+
+vm.librarySourceCache = setmetatable({}, { __mode = 'kv'})
+
+function vm.librarySource(lib)
+ if not vm.librarySourceCache[lib] then
+ vm.librarySourceCache[lib] = {
+ type = 'library',
+ library = lib,
+ }
+ end
+ return vm.librarySourceCache[lib]
+end
diff --git a/script-beta/src/vm/eachDef.lua b/script-beta/src/vm/eachDef.lua
new file mode 100644
index 00000000..0274cbee
--- /dev/null
+++ b/script-beta/src/vm/eachDef.lua
@@ -0,0 +1,65 @@
+local vm = require 'vm.vm'
+local guide = require 'parser.guide'
+local files = require 'files'
+
+local function checkPath(source, info)
+ if source.type == 'goto' then
+ return true
+ end
+ local src = info.source
+ local mode = guide.getPath(source, src)
+ if not mode then
+ return true
+ end
+ if mode == 'before' then
+ return false
+ end
+ return true
+end
+
+function vm.eachDef(source, callback)
+ local results = {}
+ local valueUris = {}
+ local sourceUri = guide.getRoot(source).uri
+ vm.eachRef(source, function (info)
+ if info.mode == 'declare'
+ or info.mode == 'set'
+ or info.mode == 'return'
+ or info.mode == 'value' then
+ results[#results+1] = info
+ local src = info.source
+ if info.mode == 'return' then
+ local uri = guide.getRoot(src).uri
+ valueUris[uri] = info.source
+ end
+ end
+ end)
+
+ for _, info in ipairs(results) do
+ local src = info.source
+ local destUri = guide.getRoot(src).uri
+ -- 如果是同一个文件,则检查位置关系后放行
+ if sourceUri == destUri then
+ if checkPath(source, info) then
+ callback(info)
+ end
+ goto CONTINUE
+ end
+ -- 如果是global或field,则直接放行(因为无法确定顺序)
+ if src.type == 'setindex'
+ or src.type == 'setfield'
+ or src.type == 'setmethod'
+ or src.type == 'tablefield'
+ or src.type == 'tableindex'
+ or src.type == 'setglobal' then
+ callback(info)
+ goto CONTINUE
+ end
+ -- 如果不是同一个文件,则必须在该文件 return 后才放行
+ if valueUris[destUri] then
+ callback(info)
+ goto CONTINUE
+ end
+ ::CONTINUE::
+ end
+end
diff --git a/script-beta/src/vm/eachField.lua b/script-beta/src/vm/eachField.lua
new file mode 100644
index 00000000..1d3d222d
--- /dev/null
+++ b/script-beta/src/vm/eachField.lua
@@ -0,0 +1,169 @@
+local guide = require 'parser.guide'
+local vm = require 'vm.vm'
+
+local function ofTabel(value, callback)
+ for _, field in ipairs(value) do
+ if field.type == 'tablefield'
+ or field.type == 'tableindex' then
+ callback {
+ source = field,
+ key = guide.getKeyName(field),
+ value = field.value,
+ mode = 'set',
+ }
+ end
+ end
+end
+
+local function ofENV(source, callback)
+ if source.type == 'getlocal' then
+ local parent = source.parent
+ if parent.type == 'getfield'
+ or parent.type == 'getmethod'
+ or parent.type == 'getindex' then
+ callback {
+ source = parent,
+ key = guide.getKeyName(parent),
+ mode = 'get',
+ }
+ end
+ elseif source.type == 'getglobal' then
+ callback {
+ source = source,
+ key = guide.getKeyName(source),
+ mode = 'get',
+ }
+ elseif source.type == 'setglobal' then
+ callback {
+ source = source,
+ key = guide.getKeyName(source),
+ mode = 'set',
+ value = source.value,
+ }
+ end
+end
+
+local function ofSpecialArg(source, callback)
+ local args = source.parent
+ local call = args.parent
+ local func = call.node
+ local name = func.special
+ if name == 'rawset' then
+ if args[1] == source and args[2] then
+ callback {
+ source = call,
+ key = guide.getKeyName(args[2]),
+ value = args[3],
+ mode = 'set',
+ }
+ end
+ elseif name == 'rawget' then
+ if args[1] == source and args[2] then
+ callback {
+ source = call,
+ key = guide.getKeyName(args[2]),
+ mode = 'get',
+ }
+ end
+ elseif name == 'setmetatable' then
+ if args[1] == source and args[2] then
+ vm.eachField(args[2], function (info)
+ if info.key == 's|__index' and info.value then
+ vm.eachField(info.value, callback)
+ end
+ end)
+ end
+ end
+end
+
+local function ofVar(source, callback)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ if parent.type == 'getfield'
+ or parent.type == 'getmethod'
+ or parent.type == 'getindex' then
+ callback {
+ source = parent,
+ key = guide.getKeyName(parent),
+ mode = 'get',
+ }
+ return
+ end
+ if parent.type == 'setfield'
+ or parent.type == 'setmethod'
+ or parent.type == 'setindex' then
+ callback {
+ source = parent,
+ key = guide.getKeyName(parent),
+ value = parent.value,
+ mode = 'set',
+ }
+ return
+ end
+ if parent.type == 'callargs' then
+ ofSpecialArg(source, callback)
+ end
+end
+
+local function eachField(source, callback)
+ vm.eachRef(source, function (info)
+ local src = info.source
+ if src.tag == '_ENV' then
+ if src.ref then
+ for _, ref in ipairs(src.ref) do
+ ofENV(ref, callback)
+ end
+ end
+ elseif src.type == 'getlocal'
+ or src.type == 'getglobal'
+ or src.type == 'getfield'
+ or src.type == 'getmethod'
+ or src.type == 'getindex' then
+ ofVar(src, callback)
+ elseif src.type == 'table' then
+ ofTabel(src, callback)
+ end
+ end)
+end
+
+--- 获取所有的field
+function vm.eachField(source, callback)
+ local cache = vm.cache.eachField[source]
+ if cache then
+ for i = 1, #cache do
+ local res = callback(cache[i])
+ if res ~= nil then
+ return res
+ end
+ end
+ return
+ end
+ local unlock = vm.lock('eachField', source)
+ if not unlock then
+ return
+ end
+ cache = {}
+ vm.cache.eachField[source] = cache
+ local mark = {}
+ eachField(source, function (info)
+ local src = info.source
+ if mark[src] then
+ return
+ end
+ mark[src] = true
+ cache[#cache+1] = info
+ end)
+ unlock()
+ vm.eachRef(source, function (info)
+ local src = info.source
+ vm.cache.eachField[src] = cache
+ end)
+ for i = 1, #cache do
+ local res = callback(cache[i])
+ if res ~= nil then
+ return res
+ end
+ end
+end
diff --git a/script-beta/src/vm/eachRef.lua b/script-beta/src/vm/eachRef.lua
new file mode 100644
index 00000000..cfb2bef8
--- /dev/null
+++ b/script-beta/src/vm/eachRef.lua
@@ -0,0 +1,500 @@
+local guide = require 'parser.guide'
+local files = require 'files'
+local vm = require 'vm.vm'
+
+local function ofCall(func, index, callback)
+ vm.eachRef(func, function (info)
+ local src = info.source
+ local returns
+ if src.type == 'main' or src.type == 'function' then
+ returns = src.returns
+ end
+ if returns then
+ -- 搜索函数第 index 个返回值
+ for _, rtn in ipairs(returns) do
+ local val = rtn[index]
+ if val then
+ callback {
+ source = val,
+ mode = 'return',
+ }
+ vm.eachRef(val, callback)
+ end
+ end
+ end
+ end)
+end
+
+local function ofCallSelect(call, index, callback)
+ local slc = call.parent
+ if slc.index == index then
+ vm.eachRef(slc.parent, callback)
+ return
+ end
+ if call.extParent then
+ for i = 1, #call.extParent do
+ slc = call.extParent[i]
+ if slc.index == index then
+ vm.eachRef(slc.parent, callback)
+ return
+ end
+ end
+ end
+end
+
+local function ofReturn(rtn, index, callback)
+ local func = guide.getParentFunction(rtn)
+ if not func then
+ return
+ end
+ -- 搜索函数调用的第 index 个接收值
+ if func.type == 'main' then
+ local myUri = func.uri
+ local uris = files.findLinkTo(myUri)
+ if not uris then
+ return
+ end
+ for _, uri in ipairs(uris) do
+ local ast = files.getAst(uri)
+ if ast then
+ local links = vm.getLinks(ast.ast)
+ if links then
+ for linkUri, calls in pairs(links) do
+ if files.eq(linkUri, myUri) then
+ for i = 1, #calls do
+ ofCallSelect(calls[i], 1, callback)
+ end
+ end
+ end
+ end
+ end
+ end
+ else
+ vm.eachRef(func, function (info)
+ local source = info.source
+ local call = source.parent
+ if not call or call.type ~= 'call' then
+ return
+ end
+ ofCallSelect(call, index, callback)
+ end)
+ end
+end
+
+local function ofSpecialCall(call, func, index, callback)
+ local name = func.special
+ if name == 'setmetatable' then
+ if index == 1 then
+ local args = call.args
+ if args[1] then
+ vm.eachRef(args[1], callback)
+ end
+ if args[2] then
+ vm.eachField(args[2], function (info)
+ if info.key == 's|__index' then
+ vm.eachRef(info.source, callback)
+ if info.value then
+ vm.eachRef(info.value, callback)
+ end
+ end
+ end)
+ end
+ end
+ elseif name == 'require' then
+ if index == 1 then
+ local result = vm.getLinkUris(call)
+ if result then
+ local myUri = guide.getRoot(call).uri
+ for _, uri in ipairs(result) do
+ if not files.eq(uri, myUri) then
+ local ast = files.getAst(uri)
+ if ast then
+ ofCall(ast.ast, 1, callback)
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+local function ofValue(value, callback)
+ if value.type == 'select' then
+ -- 检查函数返回值
+ local call = value.vararg
+ if call.type == 'call' then
+ ofCall(call.node, value.index, callback)
+ ofSpecialCall(call, call.node, value.index, callback)
+ end
+ return
+ end
+
+ if value.type == 'table'
+ or value.type == 'string'
+ or value.type == 'number'
+ or value.type == 'boolean'
+ or value.type == 'nil'
+ or value.type == 'function' then
+ callback {
+ source = value,
+ mode = 'value',
+ }
+ end
+
+ vm.eachRef(value, callback)
+
+ local parent = value.parent
+ if parent.type == 'local'
+ or parent.type == 'setglobal'
+ or parent.type == 'setlocal'
+ or parent.type == 'setfield'
+ or parent.type == 'setmethod'
+ or parent.type == 'setindex'
+ or parent.type == 'tablefield'
+ or parent.type == 'tableindex' then
+ if parent.value == value then
+ vm.eachRef(parent, callback)
+ end
+ end
+ if parent.type == 'return' then
+ for i = 1, #parent do
+ if parent[i] == value then
+ ofReturn(parent, i, callback)
+ break
+ end
+ end
+ end
+end
+
+local function ofSelf(loc, callback)
+ -- self 的2个特殊引用位置:
+ -- 1. 当前方法定义时的对象(mt)
+ local method = loc.method
+ local node = method.node
+ vm.eachRef(node, callback)
+ -- 2. 调用该方法时传入的对象
+end
+
+--- 自己作为赋值的值
+local function asValue(source, callback)
+ local parent = source.parent
+ if parent and parent.value == source then
+ if guide.getName(parent) == '__index' then
+ if parent.type == 'tablefield'
+ or parent.type == 'tableindex' then
+ local t = parent.parent
+ local args = t.parent
+ if args[2] == t then
+ local call = args.parent
+ local func = call.node
+ if func.special == 'setmetatable' then
+ vm.eachRef(args[1], callback)
+ end
+ end
+ end
+ end
+ end
+end
+
+local function getCallRecvs(call)
+ local parent = call.parent
+ if parent.type ~= 'select' then
+ return nil
+ end
+ local exParent = call.exParent
+ local recvs = {}
+ recvs[1] = parent.parent
+ if exParent then
+ for _, p in ipairs(exParent) do
+ recvs[#recvs+1] = p.parent
+ end
+ end
+ return recvs
+end
+
+--- 自己作为函数的参数
+local function asArg(source, callback)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ if parent.type == 'callargs' then
+ local call = parent.parent
+ local func = call.node
+ local name = func.special
+ if name == 'setmetatable' then
+ if parent[1] == source then
+ if parent[2] then
+ vm.eachField(parent[2], function (info)
+ if info.key == 's|__index' then
+ vm.eachRef(info.source, callback)
+ if info.value then
+ vm.eachRef(info.value, callback)
+ end
+ end
+ end)
+ end
+ end
+ local recvs = getCallRecvs(call)
+ if recvs and recvs[1] then
+ vm.eachRef(recvs[1], callback)
+ end
+ end
+ end
+end
+
+local function ofLocal(loc, callback)
+ -- 方法中的 self 使用了一个虚拟的定义位置
+ if loc.tag ~= 'self' then
+ callback {
+ source = loc,
+ mode = 'declare',
+ }
+ end
+ if loc.ref then
+ for _, ref in ipairs(loc.ref) do
+ if ref.type == 'getlocal' then
+ callback {
+ source = ref,
+ mode = 'get',
+ }
+ asValue(ref, callback)
+ elseif ref.type == 'setlocal' then
+ callback {
+ source = ref,
+ mode = 'set',
+ }
+ if ref.value then
+ ofValue(ref.value, callback)
+ end
+ end
+ end
+ end
+ if loc.tag == 'self' then
+ ofSelf(loc, callback)
+ end
+ if loc.value then
+ ofValue(loc.value, callback)
+ end
+ if loc.tag == '_ENV' and loc.ref then
+ for _, ref in ipairs(loc.ref) do
+ if ref.type == 'getlocal' then
+ local parent = ref.parent
+ if parent.type == 'getfield'
+ or parent.type == 'getindex' then
+ if guide.getKeyName(parent) == '_G' then
+ callback {
+ source = parent,
+ mode = 'get',
+ }
+ end
+ end
+ elseif ref.type == 'getglobal' then
+ if guide.getName(ref) == '_G' then
+ callback {
+ source = ref,
+ mode = 'get',
+ }
+ end
+ end
+ end
+ end
+end
+
+local function ofGlobal(source, callback)
+ local key = guide.getKeyName(source)
+ local node = source.node
+ if node.tag == '_ENV' then
+ local uris = files.findGlobals(key)
+ for _, uri in ipairs(uris) do
+ local ast = files.getAst(uri)
+ local globals = vm.getGlobals(ast.ast)
+ if globals[key] then
+ for _, info in ipairs(globals[key]) do
+ callback(info)
+ if info.value then
+ ofValue(info.value, callback)
+ end
+ end
+ end
+ end
+ else
+ vm.eachField(node, function (info)
+ if key == info.key then
+ callback {
+ source = info.source,
+ mode = info.mode,
+ }
+ if info.value then
+ ofValue(info.value, callback)
+ end
+ end
+ end)
+ end
+end
+
+local function ofField(source, callback)
+ local parent = source.parent
+ local key = guide.getKeyName(source)
+ if parent.type == 'tablefield'
+ or parent.type == 'tableindex' then
+ local tbl = parent.parent
+ vm.eachField(tbl, function (info)
+ if key == info.key then
+ callback {
+ source = info.source,
+ mode = info.mode,
+ }
+ if info.value then
+ ofValue(info.value, callback)
+ end
+ end
+ end)
+ else
+ local node = parent.node
+ vm.eachField(node, function (info)
+ if key == info.key then
+ callback {
+ source = info.source,
+ mode = info.mode,
+ }
+ if info.value then
+ ofValue(info.value, callback)
+ end
+ end
+ end)
+ end
+end
+
+local function ofLiteral(source, callback)
+ local parent = source.parent
+ if not parent then
+ return
+ end
+ if parent.type == 'setindex'
+ or parent.type == 'getindex'
+ or parent.type == 'tableindex' then
+ ofField(source, callback)
+ end
+end
+
+local function ofLabel(source, callback)
+ callback {
+ source = source,
+ mode = 'set',
+ }
+ if source.ref then
+ for _, ref in ipairs(source.ref) do
+ callback {
+ source = ref,
+ mode = 'get',
+ }
+ end
+ end
+end
+
+local function ofGoTo(source, callback)
+ local name = source[1]
+ local label = guide.getLabel(source, name)
+ if label then
+ ofLabel(label, callback)
+ end
+end
+
+local function ofMain(source, callback)
+ callback {
+ source = source,
+ mode = 'main',
+ }
+end
+
+local function eachRef(source, callback)
+ local stype = source.type
+ if stype == 'local' then
+ ofLocal(source, callback)
+ elseif stype == 'getlocal'
+ or stype == 'setlocal' then
+ ofLocal(source.node, callback)
+ elseif stype == 'setglobal'
+ or stype == 'getglobal' then
+ ofGlobal(source, callback)
+ elseif stype == 'field'
+ or stype == 'method' then
+ ofField(source, callback)
+ elseif stype == 'setfield'
+ or stype == 'getfield' then
+ ofField(source.field, callback)
+ elseif stype == 'setmethod'
+ or stype == 'getmethod' then
+ ofField(source.method, callback)
+ elseif stype == 'number'
+ or stype == 'boolean'
+ or stype == 'string' then
+ ofLiteral(source, callback)
+ elseif stype == 'goto' then
+ ofGoTo(source, callback)
+ elseif stype == 'label' then
+ ofLabel(source, callback)
+ elseif stype == 'table'
+ or stype == 'function' then
+ ofValue(source, callback)
+ elseif stype == 'main' then
+ ofMain(source, callback)
+ end
+ asArg(source, callback)
+end
+
+--- 判断2个对象是否拥有相同的引用
+function vm.isSameRef(a, b)
+ local cache = vm.cache.eachRef[a]
+ if cache then
+ -- 相同引用的source共享同一份cache
+ return cache == vm.cache.eachRef[b]
+ else
+ return vm.eachRef(a, function (info)
+ if info.source == b then
+ return true
+ end
+ end) or false
+ end
+end
+
+--- 获取所有的引用
+function vm.eachRef(source, callback)
+ local cache = vm.cache.eachRef[source]
+ if cache then
+ for i = 1, #cache do
+ local res = callback(cache[i])
+ if res ~= nil then
+ return res
+ end
+ end
+ return
+ end
+ local unlock = vm.lock('eachRef', source)
+ if not unlock then
+ return
+ end
+ cache = {}
+ vm.cache.eachRef[source] = cache
+ local mark = {}
+ eachRef(source, function (info)
+ local src = info.source
+ if mark[src] then
+ return
+ end
+ mark[src] = true
+ cache[#cache+1] = info
+ end)
+ unlock()
+ for i = 1, #cache do
+ local src = cache[i].source
+ vm.cache.eachRef[src] = cache
+ end
+ for i = 1, #cache do
+ local res = callback(cache[i])
+ if res ~= nil then
+ return res
+ end
+ end
+end
diff --git a/script-beta/src/vm/getGlobal.lua b/script-beta/src/vm/getGlobal.lua
new file mode 100644
index 00000000..373c907e
--- /dev/null
+++ b/script-beta/src/vm/getGlobal.lua
@@ -0,0 +1,6 @@
+local vm = require 'vm.vm'
+
+function vm.getGlobal(source)
+ vm.getGlobals(source)
+ return vm.cache.getGlobal[source]
+end
diff --git a/script-beta/src/vm/getGlobals.lua b/script-beta/src/vm/getGlobals.lua
new file mode 100644
index 00000000..699dd270
--- /dev/null
+++ b/script-beta/src/vm/getGlobals.lua
@@ -0,0 +1,45 @@
+local guide = require 'parser.guide'
+local vm = require 'vm.vm'
+
+local function getGlobals(root)
+ local env = guide.getENV(root)
+ local cache = {}
+ local mark = {}
+ vm.eachField(env, function (info)
+ local src = info.source
+ if mark[src] then
+ return
+ end
+ mark[src] = true
+ local name = info.key
+ if not name then
+ return
+ end
+ if not cache[name] then
+ cache[name] = {
+ key = name,
+ mode = {},
+ }
+ end
+ cache[name][#cache[name]+1] = info
+ cache[name].mode[info.mode] = true
+ vm.cache.getGlobal[src] = name
+ end)
+ return cache
+end
+
+function vm.getGlobals(source)
+ source = guide.getRoot(source)
+ local cache = vm.cache.getGlobals[source]
+ if cache ~= nil then
+ return cache
+ end
+ local unlock = vm.lock('getGlobals', source)
+ if not unlock then
+ return nil
+ end
+ cache = getGlobals(source) or false
+ vm.cache.getGlobals[source] = cache
+ unlock()
+ return cache
+end
diff --git a/script-beta/src/vm/getLibrary.lua b/script-beta/src/vm/getLibrary.lua
new file mode 100644
index 00000000..fd05347e
--- /dev/null
+++ b/script-beta/src/vm/getLibrary.lua
@@ -0,0 +1,89 @@
+local vm = require 'vm.vm'
+local library = require 'library'
+local guide = require 'parser.guide'
+
+local function checkStdLibrary(source)
+ local globalName = vm.getGlobal(source)
+ if not globalName then
+ return nil
+ end
+ local name = globalName:match '^s|(.+)$'
+ if library.global[name] then
+ return library.global[name]
+ end
+end
+
+local function getLibInNode(source, nodeLib)
+ if not nodeLib then
+ return nil
+ end
+ if not nodeLib.child then
+ return nil
+ end
+ local key = guide.getName(source)
+ local defLib = nodeLib.child[key]
+ return defLib
+end
+
+local function getNodeAsTable(source)
+ local node = source.node
+ local nodeGlobalName = vm.getGlobal(node)
+ if not nodeGlobalName then
+ return nil
+ end
+ local nodeName = nodeGlobalName:match '^s|(.+)$'
+ return getLibInNode(source, library.global[nodeName])
+end
+
+local function getNodeAsObject(source)
+ local node = source.node
+ local values = vm.getValue(node)
+ if not values then
+ return nil
+ end
+ for i = 1, #values do
+ local value = values[i]
+ local type = value.type
+ local nodeLib = library.object[type]
+ local lib = getLibInNode(source, nodeLib)
+ if lib then
+ return lib
+ end
+ end
+ return nil
+end
+
+local function checkNode(source)
+ if source.type ~= 'getfield'
+ and source.type ~= 'getmethod'
+ and source.type ~= 'getindex' then
+ return nil
+ end
+ return getNodeAsTable(source)
+ or getNodeAsObject(source)
+end
+
+local function getLibrary(source)
+ local lib = checkStdLibrary(source)
+ if lib then
+ return lib
+ end
+ return checkNode(source) or vm.eachRef(source, function (info)
+ return checkNode(info.source)
+ end)
+end
+
+function vm.getLibrary(source)
+ local cache = vm.cache.getLibrary[source]
+ if cache ~= nil then
+ return cache
+ end
+ local unlock = vm.lock('getLibrary', source)
+ if not unlock then
+ return
+ end
+ cache = getLibrary(source) or false
+ vm.cache.getLibrary[source] = cache
+ unlock()
+ return cache
+end
diff --git a/script-beta/src/vm/getLinks.lua b/script-beta/src/vm/getLinks.lua
new file mode 100644
index 00000000..6875771f
--- /dev/null
+++ b/script-beta/src/vm/getLinks.lua
@@ -0,0 +1,48 @@
+local guide = require 'parser.guide'
+local vm = require 'vm.vm'
+
+local function getLinks(root)
+ local cache = {}
+ local ok
+ guide.eachSpecialOf(root, 'require', function (source)
+ local call = source.parent
+ if call.type == 'call' then
+ local uris = vm.getLinkUris(call)
+ if uris then
+ ok = true
+ for i = 1, #uris do
+ local uri = uris[i]
+ if not cache[uri] then
+ cache[uri] = {}
+ end
+ cache[uri][#cache[uri]+1] = call
+ end
+ end
+ end
+ end)
+ if not ok then
+ return nil
+ end
+ return cache
+end
+
+function vm.getLinks(source)
+ source = guide.getRoot(source)
+ local cache = vm.cache.getLinks[source]
+ if cache ~= nil then
+ return cache
+ end
+ local unlock = vm.lock('getLinks', source)
+ if not unlock then
+ return nil
+ end
+ local clock = os.clock()
+ cache = getLinks(source) or false
+ local passed = os.clock() - clock
+ if passed > 0.1 then
+ log.warn(('getLinks takes [%.3f] sec!'):format(passed))
+ end
+ vm.cache.getLinks[source] = cache
+ unlock()
+ return cache
+end
diff --git a/script-beta/src/vm/getValue.lua b/script-beta/src/vm/getValue.lua
new file mode 100644
index 00000000..ee486a54
--- /dev/null
+++ b/script-beta/src/vm/getValue.lua
@@ -0,0 +1,895 @@
+local vm = require 'vm.vm'
+
+local typeSort = {
+ ['boolean'] = 1,
+ ['string'] = 2,
+ ['integer'] = 3,
+ ['number'] = 4,
+ ['table'] = 5,
+ ['function'] = 6,
+ ['nil'] = math.maxinteger,
+}
+
+NIL = setmetatable({'<nil>'}, { __tostring = function () return 'nil' end })
+
+local function merge(t, b)
+ if not t then
+ t = {}
+ end
+ if not b then
+ return t
+ end
+ for i = 1, #b do
+ local o = b[i]
+ if not t[o] then
+ t[o] = true
+ t[#t+1] = o
+ end
+ end
+ return t
+end
+
+local function alloc(o)
+ -- TODO
+ assert(o.type)
+ if type(o.type) == 'table' then
+ local values = {}
+ for i = 1, #o.type do
+ local sub = {
+ type = o.type[i],
+ value = o.value,
+ source = o.source,
+ }
+ values[i] = sub
+ values[sub] = true
+ end
+ return values
+ else
+ return {
+ [1] = o,
+ [o] = true,
+ }
+ end
+end
+
+local function insert(t, o)
+ if not o then
+ return
+ end
+ if not t[o] then
+ t[o] = true
+ t[#t+1] = o
+ end
+ return t
+end
+
+local function checkLiteral(source)
+ if source.type == 'string' then
+ return alloc {
+ type = 'string',
+ value = source[1],
+ source = source,
+ }
+ elseif source.type == 'nil' then
+ return alloc {
+ type = 'nil',
+ value = NIL,
+ source = source,
+ }
+ elseif source.type == 'boolean' then
+ return alloc {
+ type = 'boolean',
+ value = source[1],
+ source = source,
+ }
+ elseif source.type == 'number' then
+ if math.type(source[1]) == 'integer' then
+ return alloc {
+ type = 'integer',
+ value = source[1],
+ source = source,
+ }
+ else
+ return alloc {
+ type = 'number',
+ value = source[1],
+ source = source,
+ }
+ end
+ elseif source.type == 'table' then
+ return alloc {
+ type = 'table',
+ source = source,
+ }
+ elseif source.type == 'function' then
+ return alloc {
+ type = 'function',
+ source = source,
+ }
+ end
+end
+
+local function checkUnary(source)
+ if source.type ~= 'unary' then
+ return
+ end
+ local op = source.op
+ if op.type == 'not' then
+ local checkTrue = vm.checkTrue(source[1])
+ local value = nil
+ if checkTrue == true then
+ value = false
+ elseif checkTrue == false then
+ value = true
+ end
+ return alloc {
+ type = 'boolean',
+ value = value,
+ source = source,
+ }
+ elseif op.type == '#' then
+ return alloc {
+ type = 'integer',
+ source = source,
+ }
+ elseif op.type == '~' then
+ local l = vm.getLiteral(source[1], 'integer')
+ return alloc {
+ type = 'integer',
+ value = l and ~l or nil,
+ source = source,
+ }
+ elseif op.type == '-' then
+ local v = vm.getLiteral(source[1], 'integer')
+ if v then
+ return alloc {
+ type = 'integer',
+ value = - v,
+ source = source,
+ }
+ end
+ v = vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = v and -v or nil,
+ source = source,
+ }
+ end
+end
+
+local function checkBinary(source)
+ if source.type ~= 'binary' then
+ return
+ end
+ local op = source.op
+ if op.type == 'and' then
+ local isTrue = vm.checkTrue(source[1])
+ if isTrue == true then
+ return vm.getValue(source[2])
+ elseif isTrue == false then
+ return vm.getValue(source[1])
+ else
+ return merge(
+ vm.getValue(source[1]),
+ vm.getValue(source[2])
+ )
+ end
+ elseif op.type == 'or' then
+ local isTrue = vm.checkTrue(source[1])
+ if isTrue == true then
+ return vm.getValue(source[1])
+ elseif isTrue == false then
+ return vm.getValue(source[2])
+ else
+ return merge(
+ vm.getValue(source[1]),
+ vm.getValue(source[2])
+ )
+ end
+ elseif op.type == '==' then
+ local value = vm.isSameValue(source[1], source[2])
+ if value ~= nil then
+ return alloc {
+ type = 'boolean',
+ value = value,
+ source = source,
+ }
+ end
+ local isSame = vm.isSameRef(source[1], source[2])
+ if isSame == true then
+ value = true
+ else
+ value = nil
+ end
+ return alloc {
+ type = 'boolean',
+ value = value,
+ source = source,
+ }
+ elseif op.type == '~=' then
+ local value = vm.isSameValue(source[1], source[2])
+ if value ~= nil then
+ return alloc {
+ type = 'boolean',
+ value = not value,
+ source = source,
+ }
+ end
+ local isSame = vm.isSameRef(source[1], source[2])
+ if isSame == true then
+ value = false
+ else
+ value = nil
+ end
+ return alloc {
+ type = 'boolean',
+ value = value,
+ source = source,
+ }
+ elseif op.type == '<=' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 <= v2
+ end
+ return alloc {
+ type = 'boolean',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '>=' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 >= v2
+ end
+ return alloc {
+ type = 'boolean',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '<' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 < v2
+ end
+ return alloc {
+ type = 'boolean',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '>' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 > v2
+ end
+ return alloc {
+ type = 'boolean',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '|' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ local v
+ if v1 and v2 then
+ v = v1 | v2
+ end
+ return alloc {
+ type = 'integer',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '~' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ local v
+ if v1 and v2 then
+ v = v1 ~ v2
+ end
+ return alloc {
+ type = 'integer',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '&' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ local v
+ if v1 and v2 then
+ v = v1 & v2
+ end
+ return alloc {
+ type = 'integer',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '<<' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ local v
+ if v1 and v2 then
+ v = v1 << v2
+ end
+ return alloc {
+ type = 'integer',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '>>' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ local v
+ if v1 and v2 then
+ v = v1 >> v2
+ end
+ return alloc {
+ type = 'integer',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '..' then
+ local v1 = vm.getLiteral(source[1], 'string')
+ local v2 = vm.getLiteral(source[2], 'string')
+ local v
+ if v1 and v2 then
+ v = v1 .. v2
+ end
+ return alloc {
+ type = 'string',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '^' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 ^ v2
+ end
+ return alloc {
+ type = 'number',
+ value = v,
+ source = source,
+ }
+ elseif op.type == '/' then
+ local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
+ local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
+ local v
+ if v1 and v2 then
+ v = v1 > v2
+ end
+ return alloc {
+ type = 'number',
+ value = v,
+ source = source,
+ }
+ -- 其他数学运算根据2侧的值决定,当2侧的值均为整数时返回整数
+ elseif op.type == '+' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ if v1 and v2 then
+ return alloc {
+ type = 'integer',
+ value = v1 + v2,
+ source = source,
+ }
+ end
+ v1 = v1 or vm.getLiteral(source[1], 'number')
+ v2 = v2 or vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = (v1 and v2) and (v1 + v2) or nil,
+ source = source,
+ }
+ elseif op.type == '-' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ if v1 and v2 then
+ return alloc {
+ type = 'integer',
+ value = v1 - v2,
+ source = source,
+ }
+ end
+ v1 = v1 or vm.getLiteral(source[1], 'number')
+ v2 = v2 or vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = (v1 and v2) and (v1 - v2) or nil,
+ source = source,
+ }
+ elseif op.type == '*' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ if v1 and v2 then
+ return alloc {
+ type = 'integer',
+ value = v1 * v2,
+ source = source,
+ }
+ end
+ v1 = v1 or vm.getLiteral(source[1], 'number')
+ v2 = v2 or vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = (v1 and v2) and (v1 * v2) or nil,
+ source = source,
+ }
+ elseif op.type == '%' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ if v1 and v2 then
+ return alloc {
+ type = 'integer',
+ value = v1 % v2,
+ source = source,
+ }
+ end
+ v1 = v1 or vm.getLiteral(source[1], 'number')
+ v2 = v2 or vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = (v1 and v2) and (v1 % v2) or nil,
+ source = source,
+ }
+ elseif op.type == '//' then
+ local v1 = vm.getLiteral(source[1], 'integer')
+ local v2 = vm.getLiteral(source[2], 'integer')
+ if v1 and v2 then
+ return alloc {
+ type = 'integer',
+ value = v1 // v2,
+ source = source,
+ }
+ end
+ v1 = v1 or vm.getLiteral(source[1], 'number')
+ v2 = v2 or vm.getLiteral(source[1], 'number')
+ return alloc {
+ type = 'number',
+ value = (v1 and v2) and (v1 // v2) or nil,
+ source = source,
+ }
+ end
+end
+
+local function checkValue(source)
+ if source.value then
+ return vm.getValue(source.value)
+ end
+ if source.type == 'paren' then
+ return vm.getValue(source.exp)
+ end
+end
+
+local function hasTypeInResults(results, type)
+ for i = 1, #results do
+ if results[i].type == type then
+ return true
+ end
+ end
+ return false
+end
+
+local function inferByCall(results, source)
+ if #results ~= 0 then
+ return
+ end
+ if not source.parent then
+ return
+ end
+ if source.parent.type ~= 'call' then
+ return
+ end
+ if source.parent.node == source then
+ insert(results, {
+ type = 'function',
+ source = source,
+ })
+ return
+ end
+end
+
+local function inferByGetTable(results, source)
+ if #results ~= 0 then
+ return
+ end
+ local next = source.next
+ if not next then
+ return
+ end
+ if next.type == 'getfield'
+ or next.type == 'getindex'
+ or next.type == 'getmethod'
+ or next.type == 'setfield'
+ or next.type == 'setindex'
+ or next.type == 'setmethod' then
+ insert(results, {
+ type = 'table',
+ source = source,
+ })
+ end
+end
+
+local function checkDef(results, source)
+ vm.eachDef(source, function (info)
+ local src = info.source
+ local tp = vm.getValue(src)
+ if tp then
+ merge(results, tp)
+ end
+ end)
+end
+
+local function checkLibrary(source)
+ local lib = vm.getLibrary(source)
+ if not lib then
+ return nil
+ end
+ return alloc {
+ type = lib.type,
+ value = lib.value,
+ source = vm.librarySource(lib),
+ }
+end
+
+local function checkLibraryReturn(source)
+ if source.type ~= 'select' then
+ return nil
+ end
+ local index = source.index
+ local call = source.vararg
+ if call.type ~= 'call' then
+ return nil
+ end
+ local func = call.node
+ local lib = vm.getLibrary(func)
+ if not lib then
+ return nil
+ end
+ if lib.type ~= 'function' then
+ return nil
+ end
+ if not lib.returns then
+ return nil
+ end
+ local rtn = lib.returns[index]
+ if not rtn then
+ return nil
+ end
+ return alloc {
+ type = rtn.type,
+ value = rtn.value,
+ source = vm.librarySource(rtn),
+ }
+end
+
+local function checkLibraryArg(source)
+ local args = source.parent
+ if not args then
+ return
+ end
+ if args.type ~= 'callargs' then
+ return
+ end
+ local call = args.parent
+ if not call then
+ return
+ end
+ local func = call.node
+ local index
+ for i = 1, #args do
+ if args[i] == source then
+ index = i
+ break
+ end
+ end
+ if not index then
+ return
+ end
+ local lib = vm.getLibrary(func)
+ local arg = lib and lib.args and lib.args[index]
+ if not arg then
+ return
+ end
+ if arg.type == '...' then
+ return
+ end
+ return alloc {
+ type = arg.type,
+ value = arg.value,
+ source = vm.librarySource(arg),
+ }
+end
+
+local function inferByUnary(results, source)
+ if #results ~= 0 then
+ return
+ end
+ local parent = source.parent
+ if not parent or parent.type ~= 'unary' then
+ return
+ end
+ local op = parent.op
+ if op.type == '#' then
+ insert(results, {
+ type = 'string',
+ source = vm.librarySource(source)
+ })
+ insert(results, {
+ type = 'table',
+ source = vm.librarySource(source)
+ })
+ elseif op.type == '~' then
+ insert(results, {
+ type = 'integer',
+ source = vm.librarySource(source)
+ })
+ elseif op.type == '-' then
+ insert(results, {
+ type = 'number',
+ source = vm.librarySource(source)
+ })
+ end
+end
+
+local function inferByBinary(results, source)
+ if #results ~= 0 then
+ return
+ end
+ local parent = source.parent
+ if not parent or parent.type ~= 'binary' then
+ return
+ end
+ local op = parent.op
+ if op.type == '<='
+ or op.type == '>='
+ or op.type == '<'
+ or op.type == '>'
+ or op.type == '^'
+ or op.type == '/'
+ or op.type == '+'
+ or op.type == '-'
+ or op.type == '*'
+ or op.type == '%' then
+ insert(results, {
+ type = 'number',
+ source = vm.librarySource(source)
+ })
+ elseif op.type == '|'
+ or op.type == '~'
+ or op.type == '&'
+ or op.type == '<<'
+ or op.type == '>>'
+ -- 整数的可能性比较高
+ or op.type == '//' then
+ insert(results, {
+ type = 'integer',
+ source = vm.librarySource(source)
+ })
+ elseif op.type == '..' then
+ insert(results, {
+ type = 'string',
+ source = vm.librarySource(source)
+ })
+ end
+end
+
+local function inferBySetOfLocal(results, source)
+ if source.ref then
+ for i = 1, #source.ref do
+ local ref = source.ref[i]
+ if ref.type == 'setlocal' then
+ break
+ end
+ merge(results, vm.getValue(ref))
+ end
+ end
+end
+
+local function inferBySet(results, source)
+ if #results ~= 0 then
+ return
+ end
+ if source.type == 'local' then
+ inferBySetOfLocal(results, source)
+ elseif source.type == 'setlocal'
+ or source.type == 'getlocal' then
+ inferBySetOfLocal(results, source.node)
+ end
+end
+
+local function getValue(source)
+ local results = checkLiteral(source)
+ or checkValue(source)
+ or checkUnary(source)
+ or checkBinary(source)
+ or checkLibrary(source)
+ or checkLibraryReturn(source)
+ or checkLibraryArg(source)
+ if results then
+ return results
+ end
+
+ results = {}
+ checkDef(results, source)
+ inferBySet(results, source)
+ inferByCall(results, source)
+ inferByGetTable(results, source)
+ inferByUnary(results, source)
+ inferByBinary(results, source)
+
+ if #results == 0 then
+ return nil
+ end
+
+ return results
+end
+
+function vm.checkTrue(source)
+ local values = vm.getValue(source)
+ if not values then
+ return
+ end
+ -- 当前认为的结果
+ local current
+ for i = 1, #values do
+ -- 新的结果
+ local new
+ local v = values[i]
+ if v.type == 'nil' then
+ new = false
+ elseif v.type == 'boolean' then
+ if v.value == true then
+ new = true
+ elseif v.value == false then
+ new = false
+ end
+ end
+ if new ~= nil then
+ if current == nil then
+ current = new
+ else
+ -- 如果2个结果完全相反,则返回 nil 表示不确定
+ if new ~= current then
+ return nil
+ end
+ end
+ end
+ end
+ return current
+end
+
+--- 获取特定类型的字面量值
+function vm.getLiteral(source, type)
+ local values = vm.getValue(source)
+ if not values then
+ return nil
+ end
+ for i = 1, #values do
+ local v = values[i]
+ if v.value ~= nil then
+ if type == nil or v.type == type then
+ return v.value
+ end
+ end
+ end
+ return nil
+end
+
+function vm.isSameValue(a, b)
+ local valuesA = vm.getValue(a)
+ local valuesB = vm.getValue(b)
+ if not valuesA or not valuesB then
+ return false
+ end
+ if valuesA == valuesB then
+ return true
+ end
+ local values = {}
+ for i = 1, #valuesA do
+ local value = valuesA[i]
+ local literal = value.value
+ if literal then
+ values[literal] = false
+ end
+ end
+ for i = 1, #valuesB do
+ local value = valuesA[i]
+ local literal = value.value
+ if literal then
+ if values[literal] == nil then
+ return false
+ end
+ values[literal] = true
+ end
+ end
+ for k, v in pairs(values) do
+ if v == false then
+ return false
+ end
+ end
+ return true
+end
+
+--- 是否包含某种类型
+function vm.hasType(source, type)
+ local values = vm.getValue(source)
+ if not values then
+ return false
+ end
+ for i = 1, #values do
+ local value = values[i]
+ if value.type == type then
+ return true
+ end
+ end
+ return false
+end
+
+function vm.viewType(values)
+ if not values then
+ return 'any'
+ end
+ local types = {}
+ for i = 1, #values do
+ local tp = values[i].type
+ if not types[tp] then
+ types[tp] = true
+ types[#types+1] = tp
+ end
+ end
+ if #types == 0 then
+ return 'any'
+ end
+ if #types == 1 then
+ return types[1]
+ end
+ table.sort(types, function (a, b)
+ local sa = typeSort[a]
+ local sb = typeSort[b]
+ if sa and sb then
+ return sa < sb
+ end
+ if not sa and not sb then
+ return a < b
+ end
+ if sa and not sb then
+ return true
+ end
+ if not sa and sb then
+ return false
+ end
+ return false
+ end)
+ return table.concat(types, '|')
+end
+
+function vm.getType(source)
+ local values = vm.getValue(source)
+ return vm.viewType(values)
+end
+
+function vm.getValue(source)
+ if not source then
+ return
+ end
+ local cache = vm.cache.getValue[source]
+ if cache ~= nil then
+ return cache
+ end
+ local unlock = vm.lock('getValue', source)
+ if not unlock then
+ return
+ end
+ cache = getValue(source) or false
+ vm.cache.getValue[source] = cache
+ unlock()
+ return cache
+end
diff --git a/script-beta/src/vm/init.lua b/script-beta/src/vm/init.lua
new file mode 100644
index 00000000..4249de3d
--- /dev/null
+++ b/script-beta/src/vm/init.lua
@@ -0,0 +1,11 @@
+local vm = require 'vm.vm'
+require 'vm.eachField'
+require 'vm.eachRef'
+require 'vm.eachDef'
+require 'vm.getGlobals'
+require 'vm.getLinks'
+require 'vm.getGlobal'
+require 'vm.getLibrary'
+require 'vm.getValue'
+require 'vm.dummySource'
+return vm
diff --git a/script-beta/src/vm/special.lua b/script-beta/src/vm/special.lua
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/script-beta/src/vm/special.lua
diff --git a/script-beta/src/vm/vm.lua b/script-beta/src/vm/vm.lua
new file mode 100644
index 00000000..23a691df
--- /dev/null
+++ b/script-beta/src/vm/vm.lua
@@ -0,0 +1,81 @@
+local guide = require 'parser.guide'
+local util = require 'utility'
+
+local setmetatable = setmetatable
+local assert = assert
+local require = require
+local type = type
+
+_ENV = nil
+
+local specials = {
+ ['_G'] = true,
+ ['rawset'] = true,
+ ['rawget'] = true,
+ ['setmetatable'] = true,
+ ['require'] = true,
+ ['dofile'] = true,
+ ['loadfile'] = true,
+}
+
+---@class vm
+local m = {}
+
+function m.lock(tp, source)
+ if m.locked[tp][source] then
+ return nil
+ end
+ m.locked[tp][source] = true
+ return function ()
+ m.locked[tp][source] = nil
+ end
+end
+
+--- 获取link的uri
+function m.getLinkUris(call)
+ local workspace = require 'workspace'
+ local func = call.node
+ local name = func.special
+ if name == 'require' then
+ local args = call.args
+ if not args[1] then
+ return nil
+ end
+ local literal = guide.getLiteral(args[1])
+ if type(literal) ~= 'string' then
+ return nil
+ end
+ return workspace.findUrisByRequirePath(literal, true)
+ end
+end
+
+m.cacheTracker = setmetatable({}, { __mode = 'kv' })
+
+--- 刷新缓存
+function m.refreshCache()
+ if m.cache then
+ m.cache.dead = true
+ end
+ m.cache = {
+ eachRef = {},
+ eachField = {},
+ getGlobals = {},
+ getLinks = {},
+ getGlobal = {},
+ specialName = {},
+ getLibrary = {},
+ getValue = {},
+ specials = nil,
+ }
+ m.locked = {
+ eachRef = {},
+ eachField = {},
+ getGlobals = {},
+ getLinks = {},
+ getLibrary = {},
+ getValue = {},
+ }
+ m.cacheTracker[m.cache] = true
+end
+
+return m
diff --git a/script-beta/src/workspace/init.lua b/script-beta/src/workspace/init.lua
new file mode 100644
index 00000000..7cbe15d7
--- /dev/null
+++ b/script-beta/src/workspace/init.lua
@@ -0,0 +1,3 @@
+local workspace = require 'workspace.workspace'
+
+return workspace
diff --git a/script-beta/src/workspace/workspace.lua b/script-beta/src/workspace/workspace.lua
new file mode 100644
index 00000000..37ec2d7b
--- /dev/null
+++ b/script-beta/src/workspace/workspace.lua
@@ -0,0 +1,194 @@
+local pub = require 'pub'
+local fs = require 'bee.filesystem'
+local furi = require 'file-uri'
+local files = require 'files'
+local config = require 'config'
+local glob = require 'glob'
+local platform = require 'bee.platform'
+local await = require 'await'
+local diagnostic = require 'provider.diagnostic'
+
+local m = {}
+m.type = 'workspace'
+m.ignoreVersion = -1
+m.ignoreMatcher = nil
+
+--- 初始化工作区
+function m.init(name, uri)
+ m.name = name
+ m.uri = uri
+ m.path = furi.decode(uri)
+ log.info('Workspace inited: ', uri)
+ local logPath = ROOT / 'log' / (uri:gsub('[/:]+', '_') .. '.log')
+ log.info('Log path: ', logPath)
+ log.init(ROOT, logPath)
+end
+
+--- 创建排除文件匹配器
+function m.getIgnoreMatcher()
+ if m.ignoreVersion == config.version then
+ return m.ignoreMatcher
+ end
+
+ local pattern = {}
+ -- config.workspace.ignoreDir
+ for path in pairs(config.config.workspace.ignoreDir) do
+ log.info('Ignore directory:', path)
+ pattern[#pattern+1] = path
+ end
+ -- config.files.exclude
+ for path, ignore in pairs(config.other.exclude) do
+ if ignore then
+ log.info('Ignore by exclude:', path)
+ pattern[#pattern+1] = path
+ end
+ end
+ -- config.workspace.ignoreSubmodules
+ if config.config.workspace.ignoreSubmodules then
+ local buf = pub.awaitTask('loadFile', furi.encode(m.path .. '/.gitmodules'))
+ if buf then
+ for path in buf:gmatch('path = ([^\r\n]+)') do
+ log.info('Ignore by .gitmodules:', path)
+ pattern[#pattern+1] = path
+ end
+ end
+ end
+ -- config.workspace.useGitIgnore
+ if config.config.workspace.useGitIgnore then
+ local buf = pub.awaitTask('loadFile', furi.encode(m.path .. '/.gitignore'))
+ if buf then
+ for line in buf:gmatch '[^\r\n]+' do
+ log.info('Ignore by .gitignore:', line)
+ pattern[#pattern+1] = line
+ end
+ end
+ end
+ -- config.workspace.library
+ for path in pairs(config.config.workspace.library) do
+ log.info('Ignore by library:', path)
+ pattern[#pattern+1] = path
+ end
+
+ m.ignoreMatcher = glob.gitignore(pattern)
+
+ if platform.OS == "Windows" then
+ m.ignoreMatcher:setOption 'ignoreCase'
+ end
+
+ m.ignoreVersion = config.version
+ return m.ignoreMatcher
+end
+
+--- 文件是否被忽略
+function m.isIgnored(uri)
+ local path = furi.decode(uri)
+ local ignore = m.getIgnoreMatcher()
+ return ignore(path)
+end
+
+--- 预读工作区内所有文件
+function m.awaitPreload()
+ if not m.uri then
+ return
+ end
+ local max = 0
+ local read = 0
+ log.info('Preload start.')
+ local ignore = m.getIgnoreMatcher()
+
+ ignore:setInterface('type', function (path)
+ if fs.is_directory(fs.path(m.path .. '/' .. path)) then
+ return 'directory'
+ else
+ return 'file'
+ end
+ end)
+
+ ignore:setInterface('list', function (path)
+ local paths = {}
+ for fullpath in fs.path(m.path .. '/' .. path):list_directory() do
+ paths[#paths+1] = fullpath:string()
+ end
+ return paths
+ end)
+
+ ignore:scan(function (path)
+ local uri = furi.encode(m.path .. '/' .. path)
+ if not files.isLua(uri) then
+ return
+ end
+ max = max + 1
+ pub.task('loadFile', uri, function (text)
+ read = read + 1
+ --log.info(('Preload file at: %s , size = %.3f KB'):format(uri, #text / 1000.0))
+ files.setText(uri, text)
+ end)
+ end)
+
+ log.info(('Found %d files.'):format(max))
+ while true do
+ log.info(('Loaded %d/%d files'):format(read, max))
+ if read >= max then
+ break
+ end
+ await.sleep(0.1)
+ end
+
+ log.info('Preload finish.')
+ diagnostic.start()
+end
+
+--- 查找符合指定file path的所有uri
+---@param path string
+---@param whole boolean
+function m.findUrisByFilePath(path, whole)
+ local results = {}
+ for uri in files.eachFile() do
+ local pathLen = #path
+ local uriLen = #uri
+ if whole then
+ local seg = uri:sub(uriLen - pathLen, uriLen - pathLen)
+ if seg == '/' or seg == '\\' or seg == '' then
+ local see = uri:sub(uriLen - pathLen + 1, uriLen)
+ if files.eq(see, path) then
+ results[#results+1] = uri
+ end
+ end
+ else
+ for i = uriLen, uriLen - pathLen + 1, -1 do
+ local see = uri:sub(i - pathLen + 1, i)
+ if files.eq(see, path) then
+ results[#results+1] = uri
+ end
+ end
+ end
+ end
+ return results
+end
+
+--- 查找符合指定require path的所有uri
+---@param path string
+---@param whole boolean
+function m.findUrisByRequirePath(path, whole)
+ local results = {}
+ local mark = {}
+ local input = path:gsub('%.', '/')
+ for _, luapath in ipairs(config.config.runtime.path) do
+ local part = luapath:gsub('%?', input)
+ local uris = m.findUrisByFilePath(part, whole)
+ for _, uri in ipairs(uris) do
+ if not mark[uri] then
+ mark[uri] = true
+ results[#results+1] = uri
+ end
+ end
+ end
+ return results
+end
+
+function m.getRelativePath(uri)
+ local path = furi.decode(uri)
+ return fs.relative(fs.path(path), fs.path(m.path)):string()
+end
+
+return m
diff --git a/script-beta/test.lua b/script-beta/test.lua
new file mode 100644
index 00000000..dc1023d6
--- /dev/null
+++ b/script-beta/test.lua
@@ -0,0 +1,59 @@
+local currentPath = debug.getinfo(1, 'S').source:sub(2)
+local rootPath = currentPath:gsub('[/\\]*[^/\\]-$', '')
+dofile(rootPath .. '/platform.lua')
+package.path = package.path
+ .. ';' .. rootPath .. '\\test\\?.lua'
+ .. ';' .. rootPath .. '\\test\\?\\init.lua'
+local fs = require 'bee.filesystem'
+ROOT = fs.path(rootPath)
+LANG = 'en-US'
+
+collectgarbage 'generational'
+
+log = require 'log'
+log.init(ROOT, ROOT / 'log' / 'test.log')
+log.debug('测试开始')
+ac = {}
+
+require 'utility'
+--dofile((ROOT / 'build_package.lua'):string())
+
+local function loadAllLibs()
+ assert(require 'bee.filesystem')
+ assert(require 'bee.subprocess')
+ assert(require 'bee.thread')
+ assert(require 'bee.socket')
+ assert(require 'lni')
+ assert(require 'lpeglabel')
+end
+
+local function main()
+ debug.setcstacklimit(1000)
+ local function test(name)
+ local clock = os.clock()
+ print(('测试[%s]...'):format(name))
+ require(name)
+ print(('测试[%s]用时[%.3f]'):format(name, os.clock() - clock))
+ end
+
+ test 'references'
+ test 'definition'
+ test 'diagnostics'
+ test 'highlight'
+ test 'rename'
+ test 'type_inference'
+ test 'hover'
+ --test 'completion'
+ --test 'signature'
+ --test 'document_symbol'
+ test 'crossfile'
+ test 'full'
+ test 'other'
+
+ print('测试完成')
+end
+
+loadAllLibs()
+main()
+
+log.debug('测试完成')
diff --git a/script-beta/test/completion/init.lua b/script-beta/test/completion/init.lua
new file mode 100644
index 00000000..12600e58
--- /dev/null
+++ b/script-beta/test/completion/init.lua
@@ -0,0 +1,1494 @@
+local core = require 'core'
+local parser = require 'parser'
+local buildVM = require 'vm'
+
+local CompletionItemKind = {
+ Text = 1,
+ Method = 2,
+ Function = 3,
+ Constructor = 4,
+ Field = 5,
+ Variable = 6,
+ Class = 7,
+ Interface = 8,
+ Module = 9,
+ Property = 10,
+ Unit = 11,
+ Value = 12,
+ Enum = 13,
+ Keyword = 14,
+ Snippet = 15,
+ Color = 16,
+ File = 17,
+ Reference = 18,
+ Folder = 19,
+ EnumMember = 20,
+ Constant = 21,
+ Struct = 22,
+ Event = 23,
+ Operator = 24,
+ TypeParameter = 25,
+}
+
+local EXISTS = {'EXISTS'}
+
+local function eq(a, b)
+ if a == EXISTS and b ~= nil then
+ return true
+ end
+ local tp1, tp2 = type(a), type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k in pairs(a) do
+ if not eq(a[k], b[k]) then
+ return false
+ end
+ mark[k] = true
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ end
+ return a == b
+end
+
+rawset(_G, 'TEST', true)
+
+function TEST(script)
+ return function (expect)
+ local pos = script:find('$', 1, true) - 1
+ local new_script = script:gsub('%$', '')
+ local ast = parser:parse(new_script, 'lua', 'Lua 5.4')
+ local vm = buildVM(ast)
+ assert(vm)
+ local result = core.completion(vm, new_script, pos)
+ if expect then
+ assert(result)
+ assert(eq(expect, result))
+ else
+ assert(result == nil)
+ end
+ end
+end
+
+TEST [[
+local zabcde
+za$
+]]
+{
+ {
+ label = 'zabcde',
+ kind = CompletionItemKind.Variable,
+ }
+}
+
+TEST [[
+local zabcdefg
+local zabcde
+zabcde$
+]]
+{
+ {
+ label = 'zabcdefg',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'zabcde',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+local zabcdefg
+za$
+local zabcde
+]]
+{
+ {
+ label = 'zabcdefg',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'zabcde',
+ kind = CompletionItemKind.Text,
+ },
+}
+
+TEST [[
+local zabcde
+zace$
+]]
+{
+ {
+ label = 'zabcde',
+ kind = CompletionItemKind.Variable,
+ }
+}
+
+TEST [[
+ZABC
+local zabc
+zac$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'ZABC',
+ kind = CompletionItemKind.Field,
+ },
+}
+
+TEST [[
+ass$
+]]
+{
+ {
+ label = 'assert',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = '(function)',
+ },
+ {
+ label = 'assert()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ insertText = EXISTS,
+ detail = '(function)',
+ },
+}
+
+TEST [[
+local zabc = 1
+z$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Variable,
+ detail = '(number) = 1',
+ }
+}
+
+TEST [[
+local zabc = 1.0
+z$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Variable,
+ detail = '(number) = 1.0',
+ }
+}
+
+TEST [[
+local t = {
+ abc = 1,
+}
+t.a$
+]]
+{
+ {
+ label = 'abc',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 1',
+ }
+}
+
+TEST [[
+local mt = {}
+function mt:get(a, b)
+ return 1
+end
+mt:g$
+]]
+{
+ {
+ label = 'get',
+ kind = CompletionItemKind.Method,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'get()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ insertText = EXISTS,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+loc$
+]]
+{
+ {
+ label = 'collectgarbage',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'collectgarbage()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'local',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'local function',
+ kind = CompletionItemKind.Snippet,
+ insertText = EXISTS,
+ }
+}
+
+TEST [[
+t.a = {}
+t.b = {}
+t.$
+]]
+{
+ {
+ label = 'a',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+t.a = {}
+t.b = {}
+t. $
+]]
+{
+ {
+ label = 'a',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+t.a = {}
+function t:b()
+end
+t:$
+]]
+{
+ {
+ label = 'b',
+ kind = CompletionItemKind.Method,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'b()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+}
+
+TEST [[
+local t = {
+ a = {},
+}
+t.$
+xxx()
+]]
+{
+ {
+ label = 'a',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+ {
+ label = 'xxx',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'xxx()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+}
+
+TEST [[
+(''):$
+]]
+(EXISTS)
+
+TEST 'local s = "a:$"' (nil)
+
+TEST 'debug.$'
+(EXISTS)
+
+TEST [[
+local xxxx = {
+ xxyy = 1,
+ xxzz = 2,
+}
+
+local t = {
+ x$
+}
+]]
+{
+ {
+ label = 'xxxx',
+ kind = CompletionItemKind.Variable,
+ detail = EXISTS,
+ },
+ {
+ label = 'xxyy',
+ kind = CompletionItemKind.Property,
+ },
+ {
+ label = 'xxzz',
+ kind = CompletionItemKind.Property,
+ },
+ {
+ label = 'next',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'next()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'xpcall',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'xpcall()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+}
+
+TEST [[
+print(ff2)
+local faa
+local f$
+print(fff)
+]]
+{
+ {
+ label = 'fff',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'function',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'function name()',
+ kind = CompletionItemKind.Snippet,
+ insertText = EXISTS,
+ },
+ {
+ label = 'ff2',
+ kind = CompletionItemKind.Text,
+ },
+ {
+ label = 'faa',
+ kind = CompletionItemKind.Text,
+ },
+}
+
+TEST [[
+local function f(ff$)
+ print(fff)
+end
+]]
+{
+ {
+ label = 'fff',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+collectgarbage('$')
+]]
+{
+ {
+ label = 'collect',
+ filterText = 'collect',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'stop',
+ filterText = 'stop',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'restart',
+ filterText = 'restart',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'count',
+ filterText = 'count',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'step',
+ filterText = 'step',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'setpause',
+ filterText = 'setpause',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'setstepmul',
+ filterText = 'setstepmul',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'isrunning',
+ filterText = 'isrunning',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+}
+
+TEST [[
+collectgarbage($)
+]]
+(EXISTS)
+
+TEST [[
+io.read($)
+]]
+{
+ {
+ label = '"n"',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ },
+ {
+ label = '"a"',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ },
+ {
+ label = '"l"',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ },
+ {
+ label = '"L"',
+ kind = CompletionItemKind.EnumMember,
+ documentation = EXISTS,
+ },
+}
+
+TEST [[
+local function f(a, $)
+end
+]]
+(nil)
+
+TEST [[
+self.results.list[#$]
+]]
+{
+ {
+ label = 'self.results.list+1',
+ kind = CompletionItemKind.Snippet,
+ textEdit = {
+ start = 20,
+ finish = 20,
+ newText = 'self.results.list+1] = ',
+ },
+ },
+}
+
+TEST [[
+self.results.list[#self.re$]
+]]
+{
+ {
+ label = 'self.results.list+1',
+ kind = CompletionItemKind.Snippet,
+ textEdit = {
+ start = 20,
+ finish = 27,
+ newText = 'self.results.list+1] = ',
+ },
+ },
+ {
+ label = 'results',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+fff[#ff$]
+]]
+{
+ {
+ label = 'fff+1',
+ kind = CompletionItemKind.Snippet,
+ textEdit = {
+ start = 6,
+ finish = 8,
+ newText = 'fff+1] = ',
+ },
+ },
+ {
+ label = 'fff',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ }
+}
+
+TEST [[
+local _ = fff.kkk[#$]
+]]
+{
+ {
+ label = 'fff.kkk',
+ kind = CompletionItemKind.Snippet,
+ textEdit = {
+ start = 20,
+ finish = 20,
+ newText = 'fff.kkk]',
+ },
+ },
+}
+
+TEST [[
+local t = {
+ a = 1,
+}
+
+t . $
+]]
+(EXISTS)
+
+TEST [[
+local t = {
+ a = 1,
+}
+
+t . $ b
+]]
+(EXISTS)
+
+TEST [[
+local t = {
+ a = 1,
+}
+
+t $
+]]
+(nil)
+
+TEST [[
+local t = {
+ a = 1,
+}
+
+t $.
+]]
+(nil)
+
+TEST [[
+local xxxx
+xxxx$
+]]
+{
+ {
+ label = 'xxxx',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+local xxxx
+local XXXX
+xxxx$
+]]
+{
+ {
+ label = 'xxxx',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'XXXX',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+local t = {
+ xxxxx = 1,
+}
+xx$
+]]
+{
+ {
+ label = 'xxxxx',
+ kind = CompletionItemKind.Text,
+ },
+}
+
+TEST [[
+local index
+tbl[ind$]
+]]
+{
+ {
+ label = 'index',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+return function ()
+ local t = {
+ a = {},
+ b = {},
+ }
+ t.$
+end
+]]
+{
+ {
+ label = 'a',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+local ast = 1
+local t = 'as$'
+local ask = 1
+]]
+(nil)
+
+TEST [[
+local add
+
+function f(a$)
+ local _ = add
+end
+]]
+{
+ {
+ label = 'add',
+ kind = CompletionItemKind.Variable,
+ },
+}
+
+TEST [[
+function table.i$
+]]
+(EXISTS)
+
+TEST [[
+do
+ xx.$
+end
+]]
+(nil)
+
+require 'config' .config.runtime.version = 'Lua 5.4'
+--TEST [[
+--local $
+--]]
+--{
+-- {
+-- label = '<toclose>',
+-- kind = CompletionItemKind.Keyword,
+-- },
+-- {
+-- label = '<const>',
+-- kind = CompletionItemKind.Keyword,
+-- },
+--}
+--
+--TEST [[
+--local <toc$
+--]]
+--{
+-- {
+-- label = '<toclose>',
+-- kind = CompletionItemKind.Keyword,
+-- }
+--}
+
+TEST [[
+local mt = {}
+mt.__index = mt
+local t = setmetatable({}, mt)
+
+t.$
+]]
+{
+ {
+ label = '__index',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ }
+}
+
+TEST [[
+local elseaaa
+ELSE = 1
+if a then
+else$
+]]
+{
+ {
+ label = 'elseaaa',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'ELSE',
+ kind = CompletionItemKind.Enum,
+ detail = EXISTS,
+ },
+ {
+ label = 'select',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'select()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'setmetatable',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'setmetatable()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'else',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'elseif',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'elseif .. then',
+ kind = CompletionItemKind.Snippet,
+ insertText = EXISTS,
+ }
+}
+
+TEST [[
+local xpcal
+xpcal$
+]]
+{
+ {
+ label = 'xpcal',
+ kind = CompletionItemKind.Variable,
+ },
+ {
+ label = 'xpcall',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'xpcall()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+}
+
+TEST [[
+function mt:f(a, b, c)
+end
+
+mt:f$
+]]
+{
+ {
+ label = 'f',
+ kind = CompletionItemKind.Method,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'f()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = 'f(${1:a: any}, ${2:b: any}, ${3:c: any})',
+ },
+}
+
+TEST [[
+---@$
+]]
+(EXISTS)
+
+TEST [[
+---@cl$
+]]
+{
+ {
+ label = 'class',
+ kind = CompletionItemKind.Keyword
+ }
+}
+
+TEST [[
+---@class ZABC
+---@class ZBBC : Z$
+]]
+{
+ {
+ label = 'ZABC',
+ kind = CompletionItemKind.Class,
+ },
+ {
+ label = 'ZBBC',
+ kind = CompletionItemKind.Class,
+ },
+}
+
+TEST [[
+---@class zabc
+local abcd
+---@type za$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Class,
+ },
+}
+
+TEST [[
+---@class abc
+local abcd
+---@type $
+]]
+(EXISTS)
+
+TEST [[
+---@class zabc
+local abcd
+---@type zxxx|z$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Class,
+ }
+}
+
+TEST [[
+---@alias zabc zabb
+---@type za$
+]]
+{
+ {
+ label = 'zabc',
+ kind = CompletionItemKind.Class,
+ },
+}
+
+TEST [[
+---@class Class
+---@param x C$
+]]
+{
+ {
+ label = 'Class',
+ kind = CompletionItemKind.Class,
+ },
+ {
+ label = 'function',
+ kind = CompletionItemKind.Class,
+ },
+}
+
+TEST [[
+---@param $
+function f(a, b, c)
+end
+]]
+{
+ {
+ label = 'a, b, c',
+ kind = CompletionItemKind.Snippet,
+ insertText = [[
+a any
+---@param b any
+---@param c any]]
+ },
+ {
+ label = 'a',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'c',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+local function f()
+ ---@param $
+ function f(a, b, c)
+ end
+end
+]]
+{
+ {
+ label = 'a, b, c',
+ kind = CompletionItemKind.Snippet,
+ insertText = [[
+a any
+---@param b any
+---@param c any]]
+ },
+ {
+ label = 'a',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'c',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+---@param $
+function mt:f(a, b, c)
+end
+]]
+{
+ {
+ label = 'a, b, c',
+ kind = CompletionItemKind.Snippet,
+ insertText = [[
+a any
+---@param b any
+---@param c any]]
+ },
+ {
+ label = 'a',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'c',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+---@param xyz Class
+---@param xxx Class
+function f(x$)
+]]
+{
+ {
+ label = 'xyz, xxx',
+ kind = CompletionItemKind.Snippet,
+ },
+ {
+ label = 'xyz',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'xxx',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+---@param xyz Class
+---@param xxx Class
+function f($
+]]
+{
+ {
+ label = 'xyz, xxx',
+ kind = CompletionItemKind.Snippet,
+ },
+ {
+ label = 'xyz',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'xxx',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+---@param xyz Class
+---@param xxx Class
+function f($)
+]]
+{
+ {
+ label = 'xyz, xxx',
+ kind = CompletionItemKind.Snippet,
+ },
+ {
+ label = 'xyz',
+ kind = CompletionItemKind.Interface,
+ },
+ {
+ label = 'xxx',
+ kind = CompletionItemKind.Interface,
+ },
+}
+
+TEST [[
+local function f()
+ ---@t$
+end
+]]
+{
+ {
+ label = 'type',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'return',
+ kind = CompletionItemKind.Keyword,
+ }
+}
+
+TEST [[
+---@class Class
+---@field name string
+---@field id integer
+local mt = {}
+mt.$
+]]
+{
+ {
+ label = 'id',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+ {
+ label = 'name',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ },
+}
+
+TEST [[
+local function f()
+ if a then
+ else$
+end
+]]
+{
+ {
+ label = 'select',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'select()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'setmetatable',
+ kind = CompletionItemKind.Function,
+ documentation = EXISTS,
+ detail = EXISTS,
+ },
+ {
+ label = 'setmetatable()',
+ kind = CompletionItemKind.Snippet,
+ documentation = EXISTS,
+ detail = EXISTS,
+ insertText = EXISTS,
+ },
+ {
+ label = 'else',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'elseif',
+ kind = CompletionItemKind.Keyword,
+ },
+ {
+ label = 'elseif .. then',
+ kind = CompletionItemKind.Snippet,
+ insertText = EXISTS,
+ },
+}
+
+TEST [[
+---@param x string | "'AAA'" | "'BBB'" | "'CCC'"
+function f(y, x)
+end
+
+f(1, $)
+]]
+{
+ {
+ label = "'AAA'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'BBB'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'CCC'",
+ kind = CompletionItemKind.EnumMember,
+ }
+}
+
+TEST [[
+---@param x string | "'AAA'" | "'BBB'" | "'CCC'"
+function f(y, x)
+end
+
+f(1,$)
+]]
+{
+ {
+ label = "'AAA'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'BBB'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'CCC'",
+ kind = CompletionItemKind.EnumMember,
+ }
+}
+
+TEST [[
+---@param x string | "'AAA'" | "'BBB'" | "'CCC'"
+function f(x)
+end
+
+f($)
+]]
+{
+ {
+ label = "'AAA'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'BBB'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'CCC'",
+ kind = CompletionItemKind.EnumMember,
+ }
+}
+
+TEST [[
+---@alias Option string | "'AAA'" | "'BBB'" | "'CCC'"
+---@param x Option
+function f(x)
+end
+
+f($)
+]]
+{
+ {
+ label = "'AAA'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'BBB'",
+ kind = CompletionItemKind.EnumMember,
+ },
+ {
+ label = "'CCC'",
+ kind = CompletionItemKind.EnumMember,
+ }
+}
+
+TEST [[
+---@param x string | "'AAA'" | "'BBB'" | "'CCC'"
+function f(x)
+end
+
+f('$')
+]]
+{
+ {
+ label = "AAA",
+ filterText = 'AAA',
+ kind = CompletionItemKind.EnumMember,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = "BBB",
+ filterText = 'BBB',
+ kind = CompletionItemKind.EnumMember,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = "CCC",
+ filterText = 'CCC',
+ kind = CompletionItemKind.EnumMember,
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ }
+}
+
+TEST [[
+---@param x function | 'function () end'
+function f(x)
+end
+
+f(function ()
+ $
+end)
+]]
+(nil)
+
+TEST [[
+local t = {
+ ['a.b.c'] = {}
+}
+
+t.$
+]]
+{
+ {
+ label = 'a.b.c',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ textEdit = {
+ start = 37,
+ finish = 36,
+ newText = '["a.b.c"]',
+ },
+ additionalTextEdits = {
+ {
+ start = 36,
+ finish = 36,
+ newText = '',
+ }
+ }
+ }
+}
+
+TEST [[
+_ENV['z.b.c'] = {}
+
+z$
+]]
+{
+ {
+ label = 'z.b.c',
+ kind = CompletionItemKind.Field,
+ detail = EXISTS,
+ textEdit = {
+ start = 22,
+ finish = 21,
+ newText = '_ENV["z.b.c"]',
+ },
+ additionalTextEdits = {
+ {
+ start = 21,
+ finish = 21,
+ newText = '',
+ }
+ }
+ }
+}
+
+TEST [[
+io.close(1, $)
+]]
+(nil)
+
+TEST [[
+--- JustTest
+---@overload fun(list:table):string
+---@overload fun(list:table, sep:string):string
+---@overload fun(list:table, sep:string, i:number):string
+---@param list table
+---@param sep string
+---@param i number
+---@param j number
+---@return string
+local function zzzzz(list, sep, i, j) end
+
+zzz$
+]]
+{
+ {
+ label = 'zzzzz',
+ kind = CompletionItemKind.Function,
+ detail = '(function)(4 prototypes)',
+ documentation = {
+ kind = 'markdown',
+ value = [[
+```lua
+function zzzzz(list: table, sep: string, i: number, j: number)
+ -> string
+```
+JustTest
+```lua
+
+```
+
+]]
+ },
+ },
+ {
+ label = 'zzzzz()',
+ kind = CompletionItemKind.Snippet,
+ detail = '(function)(4 prototypes)',
+ insertText = EXISTS,
+ documentation = EXISTS,
+ }
+}
+
+TEST [[
+--- abc
+zzz = 1
+zz$
+]]
+{
+ {
+ label = 'zzz',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 1',
+ documentation = {
+ kind = 'markdown',
+ value = 'abc',
+ }
+ }
+}
+
+TEST [[
+---@param x string
+---| "'选项1'" # 注释1
+---| "'选项2'" # 注释2
+function f(x) end
+
+f($)
+]]
+{
+ {
+ label = "'选项1'",
+ kind = CompletionItemKind.EnumMember,
+ documentation = '注释1',
+ },
+ {
+ label = "'选项2'",
+ kind = CompletionItemKind.EnumMember,
+ documentation = '注释2',
+ },
+}
diff --git a/script-beta/test/crossfile/completion.lua b/script-beta/test/crossfile/completion.lua
new file mode 100644
index 00000000..cb9f2f65
--- /dev/null
+++ b/script-beta/test/crossfile/completion.lua
@@ -0,0 +1,621 @@
+local service = require 'service'
+local workspace = require 'workspace'
+local fs = require 'bee.filesystem'
+local core = require 'core'
+local uric = require 'uri'
+
+rawset(_G, 'TEST', true)
+
+local CompletionItemKind = {
+ Text = 1,
+ Method = 2,
+ Function = 3,
+ Constructor = 4,
+ Field = 5,
+ Variable = 6,
+ Class = 7,
+ Interface = 8,
+ Module = 9,
+ Property = 10,
+ Unit = 11,
+ Value = 12,
+ Enum = 13,
+ Keyword = 14,
+ Snippet = 15,
+ Color = 16,
+ File = 17,
+ Reference = 18,
+ Folder = 19,
+ EnumMember = 20,
+ Constant = 21,
+ Struct = 22,
+ Event = 23,
+ Operator = 24,
+ TypeParameter = 25,
+}
+
+local EXISTS = {}
+
+local function eq(a, b)
+ if a == EXISTS and b ~= nil then
+ return true
+ end
+ local tp1, tp2 = type(a), type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k in pairs(a) do
+ if not eq(a[k], b[k]) then
+ return false
+ end
+ mark[k] = true
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ end
+ return a == b
+end
+
+function TEST(data)
+ local lsp = service()
+ local ws = workspace(lsp, 'test')
+ lsp.workspace = ws
+ ws.root = ROOT
+
+ local mainUri
+ local mainBuf
+ local pos
+ for _, info in ipairs(data) do
+ local uri = uric.encode(fs.path(info.path))
+ local script = info.content
+ if info.main then
+ pos = script:find('$', 1, true) - 1
+ script = script:gsub('%$', '')
+ mainUri = uri
+ mainBuf = script
+ end
+ lsp:saveText(uri, 1, script)
+ ws:addFile(uric.decode(uri))
+
+ while lsp._needCompile[1] do
+ lsp:compileVM(lsp._needCompile[1])
+ end
+ end
+
+ local vm = lsp:loadVM(mainUri)
+ assert(vm)
+ local result = core.completion(vm, mainBuf, pos)
+ local expect = data.completion
+ if expect then
+ assert(result)
+ assert(eq(expect, result))
+ else
+ assert(result == nil)
+ end
+end
+
+if require'bee.platform'.OS == 'Windows' then
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'abc/aaa.lua',
+ content = '',
+ },
+ {
+ path = 'xxx/abcde.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "a$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abc.aaa',
+ filterText = 'abc.aaa',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/aaa.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abcde',
+ filterText = 'abcde',
+ kind = CompletionItemKind.Reference,
+ documentation = 'xxx/abcde.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "A$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'ABCD.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "a$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'ABCD',
+ filterText = 'ABCD',
+ kind = CompletionItemKind.Reference,
+ documentation = 'ABCD.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+else
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'ABCD.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "a$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+end
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'abc/init.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "abc$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abc.init',
+ filterText = 'abc.init',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/init.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'abc/init.lua',
+ content = '',
+ },
+ {
+ path = 'abc/bbc.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "abc$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc',
+ filterText = 'abc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/init.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abc.bbc',
+ filterText = 'abc.bbc',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/bbc.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'abc.init',
+ filterText = 'abc.init',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/init.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'abc/init.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "abc.$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc.init',
+ filterText = 'abc.init',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/init.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'abc/init.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "abc.i$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc.init',
+ filterText = 'abc.init',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/init.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'core/core.lua',
+ content = '',
+ },
+ {
+ path = 'core/xxx.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "core.co$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'core.core',
+ filterText = 'core.core',
+ kind = CompletionItemKind.Reference,
+ documentation = 'core/core.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'x000.lua',
+ content = '',
+ },
+ {
+ path = 'abc/x111.lua',
+ content = '',
+ },
+ {
+ path = 'abc/test.lua',
+ content = 'require "x$"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'x000',
+ filterText = 'x000',
+ kind = CompletionItemKind.Reference,
+ documentation = 'x000.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ {
+ label = 'x111',
+ filterText = 'x111',
+ kind = CompletionItemKind.Reference,
+ documentation = 'abc/x111.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return {
+ a = 1,
+ b = 2,
+ c = 3,
+ }
+ ]]
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require 'a'
+ t.$
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = 'a',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 1',
+ },
+ {
+ label = 'b',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 2',
+ },
+ {
+ label = 'c',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 3',
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ zabc = 1
+ ]]
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ zabcd = print
+ ]]
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ zabcdef = 1
+ ]]
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ zab$
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = 'zabcdef',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 1',
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'init.lua',
+ content = [[
+ setmetatable(_G, {__index = {}})
+ ]]
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ print(zabc)
+ ]]
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ zabcdef = 1
+ ]]
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ zab$
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = 'zabcdef',
+ kind = CompletionItemKind.Enum,
+ detail = '(number) = 1',
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local japi = require 'jass.japi'
+ japi.xxxaaaaxxxx
+ ]]
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ local japi = require 'jass.japi'
+ japi.xxxaaaax$
+ ]],
+ main = true,
+ },
+}
+
+TEST {
+ {
+ path = 'xxx.lua',
+ content = ''
+ },
+ {
+ path = 'xxxx.lua',
+ content = [[
+ require 'xx$'
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = 'xxx',
+ filterText = 'xxx',
+ kind = CompletionItemKind.Reference,
+ documentation = 'xxx.lua',
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = [[xx'xx.lua]],
+ content = ''
+ },
+ {
+ path = 'main.lua',
+ content = [[
+ require 'xx$'
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = [[xx'xx]],
+ filterText = [[xx'xx]],
+ kind = CompletionItemKind.Reference,
+ documentation = [[xx'xx.lua]],
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
+
+TEST {
+ {
+ path = [[xx]=]xx.lua]],
+ content = ''
+ },
+ {
+ path = 'main.lua',
+ content = [[
+ require [=[xx$]=]'
+ ]],
+ main = true,
+ },
+ completion = {
+ {
+ label = [[xx]=]xx]],
+ filterText = [[xx]=]xx]],
+ kind = CompletionItemKind.Reference,
+ documentation = [[xx]=]xx.lua]],
+ textEdit = EXISTS,
+ additionalTextEdits = EXISTS,
+ },
+ }
+}
diff --git a/script-beta/test/crossfile/definition.lua b/script-beta/test/crossfile/definition.lua
new file mode 100644
index 00000000..7cf12c74
--- /dev/null
+++ b/script-beta/test/crossfile/definition.lua
@@ -0,0 +1,448 @@
+local files = require 'files'
+local furi = require 'file-uri'
+local core = require 'core.definition'
+
+rawset(_G, 'TEST', true)
+
+local function catch_target(script, sep)
+ local list = {}
+ local cur = 1
+ local cut = 0
+ while true do
+ local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start - cut, finish - 4 - cut }
+ cur = finish + 1
+ cut = cut + 4
+ end
+ local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
+ return new_script, list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1]
+ and target[2] == result[2]
+ and target[3] == result[3]
+ then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(datas)
+ files.removeAll()
+
+ local targetList = {}
+ local sourceList
+ local sourceUri
+ for i, data in ipairs(datas) do
+ local uri = furi.encode(data.path)
+ local new, list = catch_target(data.content, '!')
+ if new ~= data.content or data.target then
+ if data.target then
+ targetList[#targetList+1] = {
+ data.target[1],
+ data.target[2],
+ uri,
+ }
+ else
+ for _, position in ipairs(list) do
+ targetList[#targetList+1] = {
+ position[1],
+ position[2],
+ uri,
+ }
+ end
+ end
+ data.content = new
+ end
+ new, list = catch_target(data.content, '?')
+ if new ~= data.content then
+ sourceList = list
+ sourceUri = uri
+ data.content = new
+ end
+ files.setText(uri, data.content)
+ end
+
+ local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
+ local positions = core(sourceUri, sourcePos)
+ if positions then
+ local result = {}
+ for i, position in ipairs(positions) do
+ result[i] = {
+ position.target.start,
+ position.target.finish,
+ position.uri,
+ }
+ end
+ assert(founded(targetList, result))
+ else
+ assert(#targetList == 0)
+ end
+end
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ target = {0, 0},
+ },
+ {
+ path = 'b.lua',
+ content = 'require <?"a"?>',
+ },
+}
+
+TEST {
+ {
+ path = 'aaa/bbb.lua',
+ content = '',
+ target = {0, 0},
+ },
+ {
+ path = 'b.lua',
+ content = 'require "aaa.<?bbb?>"',
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = 'local <!t!> = 1; return <!t!>',
+ },
+ {
+ path = 'b.lua',
+ content = 'local <?t?> = require "a"',
+ target = {7, 7},
+ },
+}
+
+if require 'bee.platform'.OS == 'Windows' then
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ target = {0, 0},
+ },
+ {
+ path = 'b.lua',
+ content = 'require <?"A"?>',
+ },
+}
+end
+
+TEST {
+ {
+ path = 'a.lua',
+ content = 'local <!t!> = 1; return <!t!>',
+ },
+ {
+ path = 'b.lua',
+ content = 'local <?t?> = require "a"',
+ target = {7, 7},
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local t = {
+ <!x!> = 1,
+ }
+ return t
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require "a"
+ t.<?x?>()
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return {
+ <!x!> = 1,
+ }
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require "a"
+ t.<?x?>()
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <!function ()
+ end!>
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local <!f!> = require "a"
+ <?f?>()
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <!a():b():c()!>
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local <?t?> = require 'a'
+ ]],
+ target = {19, 19},
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ <!global!> = 1
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ print(<?global?>)
+ ]],
+ }
+}
+
+TEST {
+ {
+ path = 'b.lua',
+ content = [[
+ print(<?global?>)
+ ]],
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ <!global!> = 1
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ x = {}
+ x.<!global!> = 1
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ print(x.<?global?>)
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ x.<!global!> = 1
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ print(x.<?global?>)
+ ]],
+ },
+ {
+ path = 'c.lua',
+ content = [[
+ x = {}
+ ]]
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return function (<!arg!>)
+ print(<?arg?>)
+ end
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local f = require 'a'
+ local v = 1
+ f(v)
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <!{
+ a = 1,
+ }!>
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local <!t!> = require 'a'
+ <?t?>
+ ]],
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <!function () end!>
+ ]]
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local f = require 'a'
+ ]]
+ },
+ {
+ path = 'c.lua',
+ content = [[
+ local <!f!> = require 'a'
+ <?f?>
+ ]]
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local function <!f!>()
+ end
+ return <!f!>
+ ]]
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local f = require 'a'
+ ]]
+ },
+ {
+ path = 'c.lua',
+ content = [[
+ local <!f!> = require 'a'
+ <?f?>
+ ]]
+ }
+}
+
+TEST {
+ {
+ path = 'a/xxx.lua',
+ content = [[
+ return <!function () end!>
+ ]]
+ },
+ {
+ path = 'b/xxx.lua',
+ content = [[
+ local <!f!> = require 'xxx'
+ <?f?>
+ return function () end
+ ]]
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local x
+ return {
+ <!x!> = x,
+ }
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require 'a'
+ print(t.<?x?>)
+ ]],
+ },
+}
+
+--TEST {
+-- {
+-- path = 'a.lua',
+-- content = [[
+-- ---@class Class
+-- local <!obj!>
+-- ]]
+-- },
+-- {
+-- path = 'b.lua',
+-- content = [[
+-- ---@type Class
+-- local <!obj!>
+-- <?obj?>
+-- ]]
+-- },
+--}
+
+--TEST {
+-- {
+-- path = 'a.lua',
+-- content = [[
+-- ---@type Class
+-- local <!obj!>
+-- <?obj?>
+-- ]]
+-- },
+-- {
+-- path = 'b.lua',
+-- content = [[
+-- ---@class Class
+-- local <!obj!>
+-- ]]
+-- },
+--}
diff --git a/script-beta/test/crossfile/hover.lua b/script-beta/test/crossfile/hover.lua
new file mode 100644
index 00000000..1d4328e1
--- /dev/null
+++ b/script-beta/test/crossfile/hover.lua
@@ -0,0 +1,347 @@
+local service = require 'service'
+local workspace = require 'workspace'
+local fs = require 'bee.filesystem'
+local core = require 'core'
+local uric = require 'uri'
+
+rawset(_G, 'TEST', true)
+
+local EXISTS = {}
+
+local function eq(a, b)
+ if a == EXISTS and b ~= nil then
+ return true
+ end
+ if b == EXISTS and a ~= nil then
+ return true
+ end
+ local tp1, tp2 = type(a), type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k in pairs(a) do
+ if not eq(a[k], b[k]) then
+ return false
+ end
+ mark[k] = true
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ end
+ return a == b
+end
+
+local function catch_target(script, sep)
+ local list = {}
+ local cur = 1
+ local cut = 0
+ while true do
+ local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start - cut, finish - 4 - cut }
+ cur = finish + 1
+ cut = cut + 4
+ end
+ local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
+ return new_script, list
+end
+
+function TEST(data)
+ local lsp = service()
+ local ws = workspace(lsp, 'test')
+ lsp.workspace = ws
+ ws.root = ROOT
+
+ local targetScript = data[1].content
+ local targetUri = uric.encode(fs.path(data[1].path))
+
+ local sourceScript, sourceList = catch_target(data[2].content, '?')
+ local sourceUri = uric.encode(fs.path(data[2].path))
+
+ lsp:saveText(targetUri, 1, targetScript)
+ ws:addFile(uric.decode(targetUri))
+ lsp:compileVM(targetUri)
+ lsp:saveText(sourceUri, 1, sourceScript)
+ ws:addFile(uric.decode(sourceUri))
+ lsp:compileVM(sourceUri)
+
+ local sourceVM = lsp:loadVM(sourceUri)
+ assert(sourceVM)
+ local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
+ local source = core.findSource(sourceVM, sourcePos)
+ local hover = core.hover(source, lsp)
+ assert(hover)
+ if data.hover.description then
+ local uriROOT = uric.encode(ROOT):gsub('%%', '%%%%')
+ data.hover.description = data.hover.description:gsub('%$ROOT%$', uriROOT)
+ end
+ if hover.label then
+ hover.label = hover.label:gsub('\r\n', '\n')
+ end
+ assert(eq(hover, data.hover))
+end
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = 'require <?"a"?>',
+ },
+ hover = {
+ description = [[[a.lua]($ROOT$/a.lua)]],
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local function f(a, b)
+ end
+ return f
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local x = require 'a'
+ <?x?>()
+ ]]
+ },
+ hover = {
+ label = 'function f(a: any, b: any)',
+ name = 'f',
+ args = EXISTS,
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return function (a, b)
+ end
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local f = require 'a'
+ <?f?>()
+ ]]
+ },
+ hover = {
+ label = 'function (a: any, b: any)',
+ name = '',
+ args = EXISTS,
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local mt = {}
+ mt.__index = mt
+
+ function mt:add(a, b)
+ end
+
+ return function ()
+ return setmetatable({}, mt)
+ end
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local m = require 'a'
+ local obj = m()
+ obj:<?add?>()
+ ]]
+ },
+ hover = {
+ label = 'function mt:add(a: any, b: any)',
+ name = 'mt:add',
+ args = EXISTS,
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ t = {
+ [{}] = 1,
+ }
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ <?t?>[{}] = 2
+ ]]
+ },
+ hover = {
+ label = [[
+global t: {
+ [*table]: number = 1,
+ [*table]: number = 2,
+}]],
+ name = 't',
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ t = {
+ [{}] = 1,
+ }
+ ]],
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ <?t?>[{}] = 2
+ ]]
+ },
+ hover = {
+ label = [[
+global t: {
+ [*table]: number = 2,
+}]],
+ name = 't',
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ --- abc
+ ---@param x number
+ function <?f?>(x) end
+ ]],
+ },
+ hover = {
+ label = [[function f(x: number)]],
+ name = 'f',
+ description = 'abc',
+ args = EXISTS,
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ --- abc
+ <?x?> = 1
+ ]],
+ },
+ hover = {
+ label = [[global x: number = 1]],
+ name = 'x',
+ description = 'abc',
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ ---@param x string
+ ---| "'选项1'" # 注释1
+ ---| > "'选项2'" # 注释2
+ function <?f?>(x) end
+ ]]
+ },
+ hover = {
+ label = 'function f(x: string)',
+ name = 'f',
+ args = EXISTS,
+ rawEnum = EXISTS,
+ enum = [[
+
+x: string
+ | '选项1' -- 注释1
+ |>'选项2' -- 注释2]]
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ ---@alias option
+ ---| "'选项1'" # 注释1
+ ---| > "'选项2'" # 注释2
+ ---@param x option
+ function <?f?>(x) end
+ ]]
+ },
+ hover = {
+ label = 'function f(x: option)',
+ name = 'f',
+ args = EXISTS,
+ rawEnum = EXISTS,
+ enum = [[
+
+x: option
+ | '选项1' -- 注释1
+ |>'选项2' -- 注释2]]
+ }
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = '',
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ ---@param x string {comment = 'aaaa'}
+ ---@param y string {comment = 'bbbb'}
+ local function <?f?>(x, y) end
+ ]]
+ },
+ hover = {
+ label = 'function f(x: string, y: string)',
+ name = 'f',
+ args = EXISTS,
+ description = [[
++ `x`*(string)*: aaaa
+
++ `y`*(string)*: bbbb]]
+ }
+}
diff --git a/script-beta/test/crossfile/init.lua b/script-beta/test/crossfile/init.lua
new file mode 100644
index 00000000..c67b3b8f
--- /dev/null
+++ b/script-beta/test/crossfile/init.lua
@@ -0,0 +1,4 @@
+require 'crossfile.references'
+require 'crossfile.definition'
+--require 'crossfile.hover'
+--require 'crossfile.completion'
diff --git a/script-beta/test/crossfile/references.lua b/script-beta/test/crossfile/references.lua
new file mode 100644
index 00000000..a1747dac
--- /dev/null
+++ b/script-beta/test/crossfile/references.lua
@@ -0,0 +1,249 @@
+local files = require 'files'
+local furi = require 'file-uri'
+local core = require 'core.reference'
+
+rawset(_G, 'TEST', true)
+
+local EXISTS = {}
+
+local function eq(a, b)
+ if a == EXISTS and b ~= nil then
+ return true
+ end
+ local tp1, tp2 = type(a), type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k in pairs(a) do
+ if not eq(a[k], b[k]) then
+ return false
+ end
+ mark[k] = true
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ end
+ return a == b
+end
+
+local function catch_target(script, sep)
+ local list = {}
+ local cur = 1
+ local cut = 0
+ while true do
+ local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start - cut, finish - 4 - cut }
+ cur = finish + 1
+ cut = cut + 4
+ end
+ local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
+ return new_script, list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1]
+ and target[2] == result[2]
+ and target[3] == result[3]
+ then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(datas)
+ files.removeAll()
+
+ local targetList = {}
+ local sourceList
+ local sourceUri
+ for i, data in ipairs(datas) do
+ local uri = furi.encode(data.path)
+ local new, list = catch_target(data.content, '!')
+ if new ~= data.content or data.target then
+ if data.target then
+ targetList[#targetList+1] = {
+ data.target[1],
+ data.target[2],
+ uri,
+ }
+ else
+ for _, position in ipairs(list) do
+ targetList[#targetList+1] = {
+ position[1],
+ position[2],
+ uri,
+ }
+ end
+ end
+ data.content = new
+ end
+ new, list = catch_target(data.content, '~')
+ if new ~= data.content then
+ sourceList = list
+ sourceUri = uri
+ data.content = new
+ end
+ new, list = catch_target(data.content, '?')
+ if new ~= data.content then
+ sourceList = list
+ sourceUri = uri
+ data.content = new
+ for _, position in ipairs(list) do
+ targetList[#targetList+1] = {
+ position[1],
+ position[2],
+ uri,
+ }
+ end
+ end
+ files.setText(uri, data.content)
+ end
+
+ local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
+ local positions = core(sourceUri, sourcePos)
+ if positions then
+ local result = {}
+ for i, position in ipairs(positions) do
+ result[i] = {
+ position.target.start,
+ position.target.finish,
+ position.uri,
+ }
+ end
+ assert(founded(targetList, result))
+ else
+ assert(#targetList == 0)
+ end
+end
+
+TEST {
+ {
+ path = 'lib.lua',
+ content = [[
+ return <!function ()
+ end!>
+ ]],
+ },
+ {
+ path = 'a.lua',
+ content = [[
+ local <?f?> = require 'lib'
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local <!f!> = require 'lib'
+ ]],
+ },
+ {
+ path = 'lib.lua',
+ content = [[
+ return <~function~> ()
+ end
+ ]],
+ target = {20, 46},
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ <!ROOT!> = 1
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ print(<?ROOT?>)
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ <?ROOT?> = 1
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ print(<!ROOT!>)
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ return <?function () end?>
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require 'a'
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require 'a'
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local t = require 'a'
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local <!t!> = require 'a'
+ ]],
+ },
+}
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local f = require 'lib'
+ local <?o?> = f()
+ ]],
+ },
+ {
+ path = 'lib.lua',
+ content = [[
+ return function ()
+ return <!{}!>
+ end
+ ]],
+ },
+}
diff --git a/script-beta/test/definition/arg.lua b/script-beta/test/definition/arg.lua
new file mode 100644
index 00000000..9e88b2bf
--- /dev/null
+++ b/script-beta/test/definition/arg.lua
@@ -0,0 +1,19 @@
+TEST [[
+local function xx (<!xx!>)
+ <?xx?>()
+end
+]]
+
+TEST [[
+local <!mt!>
+function mt:x()
+ <?self?>()
+end
+mt:x()
+]]
+
+TEST [[
+function mt:x(<!self!>)
+ <?self?>()
+end
+]]
diff --git a/script-beta/test/definition/bug.lua b/script-beta/test/definition/bug.lua
new file mode 100644
index 00000000..823db46d
--- /dev/null
+++ b/script-beta/test/definition/bug.lua
@@ -0,0 +1,102 @@
+TEST [[
+local <!x!>
+function _(x)
+end
+function _()
+ <?x?>()
+end
+]]
+
+TEST [[
+function _(<!x!>)
+ do return end
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!a!>
+function a:b()
+ a:b()
+ <?self?>()
+end
+]]
+
+TEST [[
+function _(...)
+ function _()
+ print(<?...?>)
+ end
+end
+]]
+
+TEST [[
+local <!a!>
+(<?a?> / b)()
+]]
+
+TEST [[
+local <!args!>
+io.load(root / <?args?>.source / 'API' / path)
+]]
+
+TEST [[
+obj[#<?obj?>+1] = {}
+]]
+
+TEST [[
+self = {
+ results = {
+ <!labels!> = {},
+ }
+}
+self[self.results.<?labels?>] = lbl
+]]
+
+TEST [[
+self.results = {
+ <!labels!> = {},
+}
+self[self.results.<?labels?>] = lbl
+]]
+
+TEST [[
+self.results.<!labels!> = {}
+self[self.results.<?labels?>] = lbl
+]]
+
+TEST [[
+local mt = {}
+function mt:<!x!>()
+end
+mt:x()
+mt:<?x?>()
+]]
+
+TEST [[
+local function func(<!a!>)
+ x = {
+ xx(),
+ <?a?>,
+ }
+end
+]]
+
+TEST [[
+local <!x!>
+local t = {
+ ...,
+ <?x?>,
+}
+]]
+
+TEST [[
+local a
+local <!b!>
+return f(), <?b?>
+]]
+
+TEST [[
+local a = os.clock()
+local <?<!b!>?> = os.clock()
+]]
diff --git a/script-beta/test/definition/call.lua b/script-beta/test/definition/call.lua
new file mode 100644
index 00000000..42502f40
--- /dev/null
+++ b/script-beta/test/definition/call.lua
@@ -0,0 +1,8 @@
+TEST [[
+function f()
+ local <!x!>
+ return <!x!>
+end
+local <!y!> = f()
+print(<?y?>)
+]]
diff --git a/script-beta/test/definition/emmy.lua b/script-beta/test/definition/emmy.lua
new file mode 100644
index 00000000..ee8fa6a7
--- /dev/null
+++ b/script-beta/test/definition/emmy.lua
@@ -0,0 +1,91 @@
+TEST [[
+---@class <!A!>
+---@class B : <?A?>
+]]
+
+TEST [[
+---@class <!A!>
+---@type B|<?A?>
+]]
+
+TEST [[
+---@class A
+local mt = {}
+function mt:<!cast!>()
+end
+
+---@type A
+local obj
+obj:<?cast?>()
+]]
+
+TEST [[
+---@class A
+local <!mt!> = {}
+function mt:cast()
+end
+
+---@type A
+local <!obj!>
+<?obj?>:cast()
+]]
+
+TEST [[
+---@type A
+local <?<!obj!>?>
+
+---@class A
+local <!mt!>
+]]
+
+TEST [[
+---@type A
+local obj
+obj:<?func?>()
+
+---@class A
+local mt
+function mt:<!func!>()
+end
+]]
+
+TEST [[
+---@type A
+local obj
+obj:<?func?>()
+
+local mt = {}
+mt.__index = mt
+function mt:<!func!>()
+end
+---@class A
+local obj = setmetatable({}, mt)
+]]
+
+TEST [[
+---@alias <!B A!>
+---@type <?B?>
+]]
+
+TEST [[
+---@class <!Class!>
+---@param a <?Class?>
+]]
+
+TEST [[
+---@class Class
+---@field <!name string!>
+---@field id integer
+local mt = {}
+mt.<?name?>
+]]
+
+TEST [[
+---@class loli
+local unit
+
+function unit:<!pants!>()
+end
+
+---@see loli#<?pants?>
+]]
diff --git a/script-beta/test/definition/function.lua b/script-beta/test/definition/function.lua
new file mode 100644
index 00000000..ce20f50b
--- /dev/null
+++ b/script-beta/test/definition/function.lua
@@ -0,0 +1,24 @@
+
+TEST [[
+function <!x!> () end
+<?x?>()
+]]
+
+TEST [[
+local function <!x!> () end
+<?x?>()
+]]
+
+TEST [[
+local x
+local function <!x!> ()
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+function <!x!>()
+end
+<?x?>()
+]]
diff --git a/script-beta/test/definition/init.lua b/script-beta/test/definition/init.lua
new file mode 100644
index 00000000..645765a2
--- /dev/null
+++ b/script-beta/test/definition/init.lua
@@ -0,0 +1,67 @@
+local core = require 'core.definition'
+local files = require 'files'
+
+rawset(_G, 'TEST', true)
+
+local function catch_target(script)
+ local list = {}
+ local cur = 1
+ while true do
+ local start, finish = script:find('<!.-!>', cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start + 2, finish - 2 }
+ cur = finish + 1
+ end
+ return list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1] and target[2] == result[2] then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(script)
+ files.removeAll()
+ local target = catch_target(script)
+ local start = script:find('<?', 1, true)
+ local finish = script:find('?>', 1, true)
+ local pos = (start + finish) // 2 + 1
+ local new_script = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
+ files.setText('', new_script)
+
+ local results = core('', pos)
+ if results then
+ local positions = {}
+ for i, result in ipairs(results) do
+ positions[i] = { result.target.start, result.target.finish }
+ end
+ assert(founded(target, positions))
+ else
+ assert(#target == 0)
+ end
+end
+
+require 'definition.local'
+require 'definition.set'
+require 'definition.arg'
+require 'definition.function'
+require 'definition.table'
+require 'definition.method'
+require 'definition.label'
+require 'definition.call'
+require 'definition.bug'
+require 'definition.special'
+--require 'definition.emmy'
diff --git a/script-beta/test/definition/label.lua b/script-beta/test/definition/label.lua
new file mode 100644
index 00000000..205915b6
--- /dev/null
+++ b/script-beta/test/definition/label.lua
@@ -0,0 +1,29 @@
+TEST [[
+::<!LABEL!>::
+goto <?LABEL?>
+]]
+
+TEST [[
+goto <?LABEL?>
+::<!LABEL!>::
+]]
+
+TEST [[
+::LABEL::
+function _()
+ goto <?LABEL?>
+end
+]]
+
+TEST [[
+do
+ goto <?LABEL?>
+end
+::<!LABEL!>::
+]]
+
+TEST [[
+::LABEL::
+goto <?LABEL?>
+::<!LABEL!>::
+]]
diff --git a/script-beta/test/definition/local.lua b/script-beta/test/definition/local.lua
new file mode 100644
index 00000000..4153bfa0
--- /dev/null
+++ b/script-beta/test/definition/local.lua
@@ -0,0 +1,195 @@
+TEST [[
+local <!x!>
+<?x?>()
+]]
+
+TEST [[
+local z, y, <!x!>
+<?x?>()
+]]
+
+TEST [[
+local <!x!> = 1
+<?x?>()
+]]
+
+TEST [[
+local z, y, <!x!> = 1
+<?x?>()
+]]
+
+TEST [[
+local x
+local <!x!>
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+do
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+do
+ local x
+end
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+if <?x?> then
+ local x
+end
+]]
+
+TEST [[
+local <!x!>
+if x then
+ local x
+elseif <?x?> then
+ local x
+end
+]]
+
+TEST [[
+local <!x!>
+if x then
+ local x
+elseif x then
+ local x
+else
+ local x
+end
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+if x then
+ <?x?>()
+elseif x then
+ local x
+else
+ local x
+end
+]]
+
+TEST [[
+local <!x!>
+for x = 1, 10 do
+end
+<?x?>()
+]]
+
+TEST [[
+local x
+for <!x!> = 1, 10 do
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+for x in x do
+end
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+for x in <?x?> do
+end
+]]
+
+TEST [[
+local x
+for <!x!> in x do
+ <?x?>()
+end
+]]
+
+TEST [[
+local x
+for z, y, <!x!> in x do
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+while <?x?> do
+end
+]]
+
+TEST [[
+local <!x!>
+while x do
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+while x do
+ local x
+end
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+repeat
+ <?x?>()
+until true
+]]
+
+TEST [[
+local <!x!>
+repeat
+ local x
+until true
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+repeat
+until <?x?>
+]]
+
+TEST [[
+local x
+repeat
+ local <!x!>
+until <?x?>
+]]
+
+TEST [[
+local <!x!>
+function _()
+ local x
+end
+<?x?>()
+]]
+
+TEST [[
+local <!x!>
+return function ()
+ <?x?>()
+end
+]]
+
+TEST [[
+local <!x!>
+local x = function ()
+ <?x?>()
+end
+]]
+
+TEST [[
+local <?<!x!>?>
+]]
diff --git a/script-beta/test/definition/method.lua b/script-beta/test/definition/method.lua
new file mode 100644
index 00000000..aa7aacdc
--- /dev/null
+++ b/script-beta/test/definition/method.lua
@@ -0,0 +1,31 @@
+TEST [[
+function mt:<!a!>()
+end
+function mt:b()
+ mt:<?a?>()
+end
+]]
+
+TEST [[
+function mt:<!m1!>()
+end
+function mt:m2()
+ self:<?m1?>()
+end
+]]
+
+TEST [[
+function mt:m3()
+ mt:<?m4?>()
+end
+function mt:<!m4!>()
+end
+]]
+
+TEST [[
+function mt:m3()
+ self:<?m4?>()
+end
+function mt:<!m4!>()
+end
+]]
diff --git a/script-beta/test/definition/set.lua b/script-beta/test/definition/set.lua
new file mode 100644
index 00000000..f36be078
--- /dev/null
+++ b/script-beta/test/definition/set.lua
@@ -0,0 +1,40 @@
+TEST [[
+<!x!> = 1
+<?x?>()
+]]
+
+TEST [[
+do
+ <!global!> = 1
+end
+<?global?>()
+]]
+
+TEST [[
+<!x!> = 1
+do
+ local x = 1
+end
+<?x?>()
+]]
+
+TEST [[
+x = 1
+do
+ local <!x!> = 1
+ do
+ <!x!> = 2
+ end
+ <?x?>()
+end
+]]
+
+TEST [[
+<!x!> = 1
+if y then
+ <!x!> = 2
+else
+ <!x!> = 3
+end
+print(<?x?>)
+]]
diff --git a/script-beta/test/definition/special.lua b/script-beta/test/definition/special.lua
new file mode 100644
index 00000000..6bbf104c
--- /dev/null
+++ b/script-beta/test/definition/special.lua
@@ -0,0 +1,124 @@
+TEST [[
+_ENV.<!x!> = 1
+print(<?x?>)
+]]
+
+TEST [[
+_G.<!x!> = 1
+print(<?x?>)
+]]
+
+TEST [[
+<!rawset(_G, 'x', 1)!>
+print(<?x?>)
+]]
+
+TEST [[
+local mt
+mt.__index = mt
+function mt:<!method1!>()
+end
+
+local obj = setmetatable({}, mt)
+obj:<?method1?>()
+]]
+
+TEST [[
+local mt
+function mt:<!method1!>()
+end
+
+local obj = setmetatable({}, { __index = mt })
+obj:<?method1?>()
+]]
+
+TEST [[
+local mt
+function mt:<!method1!>()
+end
+
+setmetatable(api, { __index = mt })
+api:<?method1?>()
+]]
+
+TEST [[
+local mt
+local api
+function mt:<!method1!>()
+end
+
+setmetatable(api, { __index = mt })
+api:<?method1?>()
+]]
+
+TEST [[
+local mt
+function mt:x()
+ self.<?init?>()
+end
+
+local obj, _ = setmetatable({}, { __index = mt })
+obj.<!init!> = 1
+obj:x()
+]]
+
+TEST [[
+local mt
+function mt:x()
+ self.<?init?>()
+end
+
+local obj = setmetatable({ <!init!> = 1 }, { __index = mt })
+obj:x()
+]]
+
+TEST [[
+local mt
+function mt:x()
+ self.a.<?out?>()
+end
+
+local obj = setmetatable({
+ a = {
+ <!out!> = 1,
+ }
+}, { __index = mt })
+obj:x()
+]]
+
+TEST [[
+local sm = setmetatable
+local mt
+mt.__index = mt
+function mt:<!method1!>()
+end
+
+local obj = sm({}, mt)
+obj:<?method1?>()
+]]
+
+-- TODO
+--TEST [[
+--local mt = {}
+--function mt:<!x!>()
+--end
+--
+--local obj = setmetatable({}, {__index = mt})
+--function obj:x()
+--end
+--
+--mt:<?x?>()
+--]]
+
+-- TODO 通过代码执行顺序来判断
+--TEST [[
+--local mt = {}
+--function mt:x()
+--end
+--
+--local obj = setmetatable({}, {__index = mt})
+--function obj:<!x!>()
+--end
+--
+--obj:<?x?>()
+--]]
diff --git a/script-beta/test/definition/table.lua b/script-beta/test/definition/table.lua
new file mode 100644
index 00000000..34078413
--- /dev/null
+++ b/script-beta/test/definition/table.lua
@@ -0,0 +1,135 @@
+TEST [[
+local <!t!>
+a = {
+ <?t?>
+}
+]]
+
+TEST [[
+local t
+t.<!x!> = 1
+t.<?x?>()
+]]
+
+TEST [[
+t.<!x!> = 1
+t.<?x?>()
+]]
+
+TEST [[
+local <!t!>
+t.x = 1
+<?t?>.x = 1
+]]
+
+TEST [[
+t.<!x!> = 1
+t.<?x?>.y = 1
+]]
+
+TEST [[
+local t
+t.<!x!> = 1
+t.<?x?>()
+]]
+
+TEST [[
+local t
+t[<!1!>] = 1
+t[<?1?>]()
+]]
+
+TEST [[
+local t
+t[<!true!>] = 1
+t[<?true?>]()
+]]
+
+TEST [[
+local t
+t[<!"method"!>] = 1
+t[<?"method"?>]()
+]]
+
+TEST [[
+local t
+t[<!"longString"!>] = 1
+t[<?[==[longString]==]?>]()
+]]
+
+TEST [[
+local t
+t.<!x!> = 1
+t[<?'x'?>]()
+]]
+
+TEST [[
+local t
+t.<!a!> = 1
+t.<?a?>.b()
+]]
+
+TEST [[
+local t
+local <!x!>
+t[<?x?>]()
+]]
+
+TEST[[
+local <!t!>
+local _ = {
+ _ = <?t?>
+}
+]]
+
+TEST[[
+local <!t!>
+t {
+ _ = <?t?>.x
+}
+]]
+
+TEST[[
+local t = {
+ <!insert!> = 1,
+}
+t.<?insert?>()
+]]
+
+TEST[[
+local t = {
+ [<!'insert'!>] = 1,
+}
+t.<?insert?>()
+]]
+
+TEST[[
+local t;t = {
+ <!insert!> = 1,
+}
+t.<?insert?>()
+]]
+
+TEST[[
+local t;t = {
+ <!insert!> = 1,
+}
+t.<?insert?>()
+]]
+
+--TEST[[
+--local t = {
+-- <!insert!> = 1,
+--}
+--y.<?insert?>()
+--]]
+
+--TEST[[
+--local t = {
+-- <!insert!> = 1,
+--}
+--local y = {
+-- insert = 1,
+--}
+--t.<?insert?>()
+--]]
diff --git a/script-beta/test/diagnostics/init.lua b/script-beta/test/diagnostics/init.lua
new file mode 100644
index 00000000..0a38bce9
--- /dev/null
+++ b/script-beta/test/diagnostics/init.lua
@@ -0,0 +1,689 @@
+local core = require 'core.diagnostics'
+local files = require 'files'
+local config = require 'config'
+local util = require 'utility'
+
+rawset(_G, 'TEST', true)
+
+local function catch_target(script, ...)
+ local list = {}
+ local function catch(buf)
+ local cur = 1
+ local cut = 0
+ while true do
+ local start, finish = buf:find('<!.-!>', cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start - cut, finish - 4 - cut }
+ cur = finish + 1
+ cut = cut + 4
+ end
+ end
+ catch(script)
+ if ... then
+ for _, buf in ipairs {...} do
+ catch(buf)
+ end
+ end
+ local new_script = script:gsub('<!(.-)!>', '%1')
+ return new_script, list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1] and target[2] == result[2] then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(script, ...)
+ files.removeAll()
+ local new_script, target = catch_target(script, ...)
+ files.setText('', new_script)
+ local datas = core('') or {}
+ local results = {}
+ for i, data in ipairs(datas) do
+ results[i] = { data.start, data.finish }
+ end
+
+ if results[1] then
+ if not founded(target, results) then
+ error(('%s\n%s'):format(util.dump(target), util.dump(results)))
+ end
+ else
+ assert(#target == 0)
+ end
+end
+
+TEST [[
+local <!x!>
+]]
+
+TEST [[
+local function x()
+end
+x()
+]]
+
+TEST([[
+<!local function x()
+end!>
+]],
+[[
+local function <!x!>()
+end
+]]
+)
+
+TEST [[
+local <!x!> = <!function () end!>
+]]
+
+TEST [[
+local <!x!>
+x = <!function () end!>
+]]
+
+
+TEST [[
+print(<!x!>)
+print(<!log!>)
+print(<!X!>)
+print(<!Log!>)
+print(_VERSION)
+print(<!y!>)
+print(Z)
+Z = 1
+]]
+
+TEST [[
+::<!LABEL!>::
+]]
+
+TEST [[
+<! !>
+]]
+
+TEST [[
+X = 1<! !>
+]]
+
+TEST [[
+X = [=[
+ ]=]
+]]
+
+TEST [[
+local x
+print(x)
+local <!x!>
+print(x)
+]]
+
+TEST [[
+local x
+print(x)
+local <!x!>
+print(x)
+local <!x!>
+print(x)
+]]
+
+TEST [[
+local _
+print(_)
+local _
+print(_)
+local _ENV
+<!print!>(_ENV) -- 由于重定义了_ENV,因此print变为了未定义全局变量
+]]
+
+TEST [[
+local x
+return x, function (<!x!>)
+ return x
+end
+]]
+
+TEST [[
+print(1)
+_ENV = nil
+]]
+
+TEST [[
+local _ENV = { print = print }
+print(1)
+]]
+
+config.config.diagnostics.disable['undefined-env-child'] = true
+TEST [[
+_ENV = nil
+<!GLOBAL!> = 1 --> _ENV.GLOBAL = 1
+]]
+
+TEST [[
+_ENV = nil
+local _ = <!print!> --> local _ = _ENV.print
+]]
+
+TEST [[
+_ENV = {}
+GLOBAL = 1 --> _ENV.GLOBAL = 1
+]]
+
+TEST [[
+_ENV = {}
+local _ = print --> local _ = _ENV.print
+]]
+
+TEST [[
+GLOBAL = 1
+_ENV = nil
+]]
+
+config.config.diagnostics.disable['undefined-env-child'] = nil
+TEST [[
+print()
+<!('string')!>:sub(1, 1)
+]]
+
+TEST [[
+print()
+('string')
+]]
+
+TEST [[
+local x
+return x
+ : f(1)
+ : f(1)
+]]
+
+TEST [[
+return {
+ <!print
+ 'string'!>
+}
+]]
+
+TEST [[
+return {
+ <!print
+ {
+ x = 1,
+ }!>
+}
+]]
+
+TEST [[
+print()
+'string'
+]]
+
+TEST [[
+print
+{
+ x = 1,
+}
+]]
+
+TEST [[
+local function x(a, b)
+ return a, b
+end
+x(1, 2, <!3!>)
+]]
+
+TEST [[
+local function x(a, b, ...)
+ return a, b, ...
+end
+x(1, 2, 3, 4, 5)
+]]
+
+TEST [[
+local m = {}
+function m:x(a, b)
+ return a, b
+end
+m:x(1, 2, <!3!>)
+]]
+
+TEST [[
+local m = {}
+function m:x(a, b)
+ return a, b
+end
+m.x(1, 2, 3, <!4!>)
+]]
+
+TEST [[
+local m = {}
+function m.x(a, b)
+ return a, b
+end
+m:x(1, <!2!>, <!3!>, <!4!>)
+]]
+
+TEST [[
+local m = {}
+function m.x()
+end
+m:x()
+]]
+
+TEST [[
+InstanceName = 1
+Instance = _G[InstanceName]
+]]
+
+TEST [[
+(''):sub(1, 2)
+]]
+
+TEST [=[
+return [[
+
+]]
+]=]
+
+config.config.diagnostics.disable['unused-local'] = true
+TEST [[
+local f = <!function () end!>
+]]
+
+TEST [[
+local f;f = <!function () end!>
+]]
+
+TEST [[
+<!local function f() end!>
+]]
+
+TEST [[
+F = <!function () end!>
+]]
+
+TEST [[
+<!function F() end!>
+]]
+
+config.config.diagnostics.disable['unused-local'] = false
+config.config.diagnostics.disable['unused-function'] = true
+TEST [[
+local mt, x
+function mt:m()
+ function x:m()
+ end
+end
+return mt, x
+]]
+
+TEST [[
+local mt = {}
+function mt:f()
+end
+return mt
+]]
+
+TEST [[
+local <!mt!> = {}
+function mt:f()
+end
+]]
+
+TEST [[
+local <!x!> = {}
+x.a = 1
+]]
+
+TEST [[
+local <!x!> = {}
+x['a'] = 1
+]]
+
+TEST [[
+local function f(<!self!>)
+end
+f()
+]]
+
+TEST [[
+local function f(<!...!>)
+end
+f()
+]]
+
+TEST [[
+local function f(var)
+ print(var)
+end
+local var
+f(var)
+]]
+
+TEST [[
+local function f(a, b)
+ return a, b
+end
+f(1, 2, <!3!>, <!4!>)
+]]
+
+TEST [[
+local mt = {}
+function mt:f(a, b)
+ return a, b
+end
+mt.f(1, 2, 3, <!4!>)
+]]
+
+
+TEST [[
+local mt = {}
+function mt.f(a, b)
+ return a, b
+end
+mt:f(1, <!2!>, <!3!>, <!4!>)
+]]
+
+TEST [[
+local mt = {}
+function mt:f(a, b)
+ return a, b
+end
+mt:f(1, 2, <!3!>, <!4!>)
+]]
+
+TEST [[
+local function f(a, b, ...)
+ return a, b, ...
+end
+f(1, 2, 3, 4)
+]]
+
+TEST [[
+next({}, 1, <!2!>)
+print(1, 2, 3, 4, 5)
+]]
+
+TEST [[
+local function f(callback)
+ callback(1, 2, 3)
+end
+f(function () end)
+]]
+
+--TEST [[
+--local realTostring = tostring
+--tostring = function () end
+--tostring(<!1!>)
+--tostring = realTostring
+--tostring(1)
+--]]
+
+TEST [[
+<!aa!> = 1
+tostring = 1
+ROOT = 1
+_G.bb = 1
+]]
+
+TEST [[
+local f = load('')
+f(1, 2, 3)
+]]
+
+require 'config' .config.runtime.version = 'Lua 5.3'
+TEST [[
+<!warn!>(1)
+]]
+
+TEST [[
+X = table[<!x!>]
+]]
+
+TEST [[
+return {
+ <!x!> = 1,
+ y = 2,
+ <!x!> = 3,
+}
+]]
+
+TEST [[
+return {
+ x = 1,
+ y = 2,
+}, {
+ x = 1,
+ y = 2,
+}
+]]
+
+TEST [[
+local m = {}
+function m.open()
+end
+
+m:open()
+]]
+
+TEST [[
+<!if true then
+end!>
+]]
+
+TEST [[
+<!if true then
+else
+end!>
+]]
+
+TEST [[
+if true then
+else
+ return
+end
+]]
+
+TEST [[
+while true do
+end
+]]
+
+TEST [[
+<!for _ = 1, 10 do
+end!>
+]]
+
+TEST [[
+<!for _ in pairs(_VERSION) do
+end!>
+]]
+
+TEST [[
+local _ = 1, <!2!>
+]]
+
+TEST [[
+_ = 1, <!2!>
+]]
+
+TEST [[
+local function x()
+ do
+ local k
+ print(k)
+ x()
+ end
+ local k = 1
+ print(k)
+end
+]]
+
+TEST [[
+local function x()
+ local loc
+ x()
+ print(loc)
+end
+]]
+
+TEST [[
+local <!t!> = {}
+t[1] = 1
+]]
+
+--TEST [[
+-----@class <!Class!>
+-----@class <!Class!>
+--]]
+--
+--TEST [[
+-----@class A : <!B!>
+--]]
+--
+--TEST [[
+-----@class <!A : B!>
+-----@class <!B : C!>
+-----@class <!C : D!>
+-----@class <!D : A!>
+--]]
+--
+--TEST [[
+-----@class A : B
+-----@class B : C
+-----@class C : D
+-----@class D
+--]]
+--
+--TEST [[
+-----@type <!A!>
+--]]
+--
+--TEST [[
+-----@class A
+-----@type A|<!B!>|<!C!>
+--]]
+--
+--TEST [[
+-----@class AAA
+-----@alias B AAA
+--
+-----@type B
+--]]
+--
+--TEST [[
+-----@alias B <!AAA!>
+--]]
+--
+--TEST [[
+-----@class <!A!>
+-----@class B
+-----@alias <!A B!>
+--]]
+--
+--TEST [[
+-----@param x <!Class!>
+--]]
+--
+--TEST [[
+-----@class Class
+-----@param <!y!> Class
+--local function f(x)
+-- return x
+--end
+--f()
+--]]
+--
+--TEST [[
+-----@class Class
+-----@param <!y!> Class
+--function F(x)
+-- return x
+--end
+--F()
+--]]
+--
+--TEST [[
+-----@class Class
+-----@param <!x!> Class
+-----@param y Class
+-----@param <!x!> Class
+--local function f(x, y)
+-- return x, y
+--end
+--f()
+--]]
+--
+--TEST [[
+-----@field <!x Class!>
+-----@class Class
+--]]
+--
+--TEST [[
+-----@class Class
+-----@field <!x!> Class
+-----@field <!x!> Class
+--]]
+--
+--TEST [[
+-----@class Class : any
+--]]
+--
+--TEST [[
+-----@type fun(a: integer)
+--local f
+--f()
+--]]
+
+TEST [[
+local x
+x = <!x or 0 + 1!>
+]]
+
+TEST [[
+local x, y
+x = <!x + y or 0!>
+]]
+
+TEST [[
+local x, y, z
+x = x and y or '' .. z
+]]
+
+TEST [[
+local x
+x = x or -1
+]]
+
+TEST [[
+local x
+x = x or (0 + 1)
+]]
+
+TEST [[
+local x, y
+x = (x + y) or 0
+]]
+
+TEST [[
+local t = {}
+t.a = 1
+t.a = 2
+return t
+]]
+
+TEST [[
+table.insert({}, 1, 2, <!3!>)
+]]
diff --git a/script-beta/test/document_symbol/init.lua b/script-beta/test/document_symbol/init.lua
new file mode 100644
index 00000000..f677d857
--- /dev/null
+++ b/script-beta/test/document_symbol/init.lua
@@ -0,0 +1,478 @@
+local parser = require 'parser'
+local core = require 'core'
+local buildVM = require 'vm'
+
+local SymbolKind = {
+ File = 1,
+ Module = 2,
+ Namespace = 3,
+ Package = 4,
+ Class = 5,
+ Method = 6,
+ Property = 7,
+ Field = 8,
+ Constructor = 9,
+ Enum = 10,
+ Interface = 11,
+ Function = 12,
+ Variable = 13,
+ Constant = 14,
+ String = 15,
+ Number = 16,
+ Boolean = 17,
+ Array = 18,
+ Object = 19,
+ Key = 20,
+ Null = 21,
+ EnumMember = 22,
+ Struct = 23,
+ Event = 24,
+ Operator = 25,
+ TypeParameter = 26,
+}
+
+rawset(_G, 'TEST', true)
+
+local EXISTS = {}
+
+local function eq(a, b)
+ if a == EXISTS and b ~= nil then
+ return true
+ end
+ local tp1, tp2 = type(a), type(b)
+ if tp1 ~= tp2 then
+ return false
+ end
+ if tp1 == 'table' then
+ local mark = {}
+ for k in pairs(a) do
+ if not eq(a[k], b[k]) then
+ return false
+ end
+ mark[k] = true
+ end
+ for k in pairs(b) do
+ if not mark[k] then
+ return false
+ end
+ end
+ return true
+ end
+ return a == b
+end
+
+local function checkArcoss(symbols)
+ local lastFinish = 0
+ for _, symbol in ipairs(symbols) do
+ assert(symbol.range[1] <= symbol.selectionRange[1])
+ assert(symbol.range[2] >= symbol.selectionRange[2])
+ assert(symbol.range[2] > lastFinish)
+ lastFinish = symbol.range[2]
+ if symbol.children then
+ checkArcoss(symbol.children)
+ end
+ end
+end
+
+function TEST(script)
+ return function (expect)
+ local ast = parser:parse(script, 'lua', 'Lua 5.3')
+ local vm = buildVM(ast)
+ assert(vm)
+ local result = core.documentSymbol(vm)
+ assert(eq(expect, result))
+ checkArcoss(result)
+ end
+end
+
+TEST [[
+local function f()
+end
+]]
+{
+ [1] = {
+ name = 'f',
+ detail = 'function f()',
+ kind = SymbolKind.Function,
+ range = {1, 22},
+ selectionRange = {16, 16},
+ valueRange = {1, 22},
+ }
+}
+
+TEST [[
+function f()
+end
+]]
+{
+ [1] = {
+ name = 'f',
+ detail = 'function f()',
+ kind = SymbolKind.Function,
+ range = {1, 16},
+ selectionRange = {10, 10},
+ valueRange = {1, 16},
+ }
+}
+
+TEST [[
+return function ()
+end
+]]
+{
+ [1] = {
+ name = '',
+ detail = 'function ()',
+ kind = SymbolKind.Function,
+ range = {8, 22},
+ selectionRange = {8, 8},
+ valueRange = {8, 22},
+ }
+}
+
+TEST [[
+f = function ()
+end
+]]
+{
+ [1] = {
+ name = 'f',
+ detail = 'function f()',
+ kind = SymbolKind.Function,
+ range = {1, 1},
+ selectionRange = {1, 1},
+ valueRange = {5, 19},
+ }
+}
+
+TEST [[
+local f = function ()
+end
+]]
+{
+ [1] = {
+ name = 'f',
+ detail = 'function f()',
+ kind = SymbolKind.Function,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {11, 25},
+ }
+}
+
+TEST [[
+function mt:add()
+end
+]]
+{
+ [1] = {
+ name = 'mt:add',
+ detail = 'function mt:add()',
+ kind = SymbolKind.Field,
+ range = {1, 21},
+ selectionRange = {10, 15},
+ valueRange = {1, 21},
+ }
+}
+
+TEST [[
+function A()
+ function A1()
+ end
+ function A2()
+ end
+end
+function B()
+end
+]]
+{
+ [1] = {
+ name = 'A',
+ detail = 'function A()',
+ kind = SymbolKind.Function,
+ range = {1, 68},
+ selectionRange = {10, 10},
+ valueRange = {1, 68},
+ children = {
+ [1] = {
+ name = 'A1',
+ detail = 'function A1()',
+ kind = SymbolKind.Function,
+ range = {18, 38},
+ selectionRange = {27, 28},
+ valueRange = {18, 38},
+ },
+ [2] = {
+ name = 'A2',
+ detail = 'function A2()',
+ kind = SymbolKind.Function,
+ range = {44, 64},
+ selectionRange = {53, 54},
+ valueRange = {44, 64},
+ },
+ },
+ },
+ [2] = {
+ name = 'B',
+ detail = 'function B()',
+ kind = SymbolKind.Function,
+ range = {70, 85},
+ selectionRange = {79, 79},
+ valueRange = {70, 85},
+ },
+}
+
+TEST [[
+local x = 1
+local function f()
+ local x = 'x'
+ local y = {}
+ --= 1
+end
+local y = true
+local z
+]]
+{
+ [1] = {
+ name = 'x',
+ detail = 'local x: number = 1',
+ kind = SymbolKind.Variable,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {11, 11},
+ },
+ [2] = {
+ name = 'f',
+ detail = 'function f()',
+ kind = SymbolKind.Function,
+ range = {13, 79},
+ selectionRange = {28, 28},
+ valueRange = {13, 79},
+ children = {
+ [1] = {
+ name = 'x',
+ detail = 'local x: string = "x"',
+ kind = SymbolKind.Variable,
+ range = {42, 42},
+ selectionRange = {42, 42},
+ valueRange = {46, 48},
+ },
+ [2] = {
+ name = 'y',
+ detail = 'local y: {}',
+ kind = SymbolKind.Variable,
+ range = {60, 60},
+ selectionRange = {60, 60},
+ valueRange = {64, 65},
+ },
+ --[3] = {
+ -- name = 'z',
+ -- detail = 'global z: number = 1',
+ -- kind = SymbolKind.Object,
+ -- range = {71, 71},
+ -- selectionRange = {71, 71},
+ -- valueRange = {75, 75},
+ --},
+ },
+ },
+ [3] = {
+ name = 'y',
+ detail = 'local y: boolean = true',
+ kind = SymbolKind.Variable,
+ range = {87, 87},
+ selectionRange = {87, 87},
+ valueRange = {91, 94},
+ },
+ [4] = {
+ name = 'z',
+ detail = '',
+ kind = SymbolKind.Variable,
+ range = {102, 102},
+ selectionRange = {102, 102},
+ valueRange = {102, 102},
+ },
+}
+
+TEST [[
+local t = {
+ a = 1,
+ b = 2,
+ c = 3,
+}
+]]
+{
+ [1] = {
+ name = 't',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {11, 46},
+ children = {
+ [1] = {
+ name = 'a',
+ detail = 'field a: number = 1',
+ kind = SymbolKind.Class,
+ range = {17, 17},
+ selectionRange = {17, 17},
+ valueRange = {21, 21},
+ },
+ [2] = {
+ name = 'b',
+ detail = 'field b: number = 2',
+ kind = SymbolKind.Class,
+ range = {28, 28},
+ selectionRange = {28, 28},
+ valueRange = {32, 32},
+ },
+ [3] = {
+ name = 'c',
+ detail = 'field c: number = 3',
+ kind = SymbolKind.Class,
+ range = {39, 39},
+ selectionRange = {39, 39},
+ valueRange = {43, 43},
+ },
+ }
+ }
+}
+
+TEST [[
+local t = {
+ a = {
+ b = 1,
+ }
+}
+]]
+{
+ [1] = {
+ name = 't',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {11, 44},
+ children = {
+ [1] = {
+ name = 'a',
+ detail = EXISTS,
+ kind = SymbolKind.Class,
+ range = {17, 17},
+ selectionRange = {17, 17},
+ valueRange = {21, 42},
+ children = {
+ [1] = {
+ name = 'b',
+ detail = EXISTS,
+ kind = SymbolKind.Class,
+ range = {31, 31},
+ selectionRange = {31, 31},
+ valueRange = {35, 35},
+ }
+ }
+ },
+ }
+ }
+}
+
+TEST[[
+local function g()
+end
+
+g = 1
+]]{
+ [1] = {
+ name = 'g',
+ detail = 'function g()',
+ kind = SymbolKind.Function,
+ range = {1, 22},
+ selectionRange = {16, 16},
+ valueRange = {1, 22},
+ }
+}
+
+TEST[[
+function f(...)
+ local x = ...
+ print(x.a)
+end
+]]{
+ [1] = {
+ name = 'f',
+ detail = 'function f(...)',
+ kind = SymbolKind.Function,
+ range = {1, 52},
+ selectionRange = {10, 10},
+ valueRange = {1, 52},
+ children = {
+ [1] = {
+ name = 'x',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {27, 27},
+ selectionRange = {27, 27},
+ valueRange = {31, 33},
+ }
+ }
+ },
+}
+
+TEST [[
+local t = {
+ a = 1,
+ b = 2,
+}
+
+local v = t
+]]{
+ [1] = {
+ name = 't',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {11, 35},
+ children = EXISTS,
+ },
+ [2] = {
+ name = 'v',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {44, 44},
+ selectionRange = {44, 44},
+ valueRange = {48, 48},
+ },
+}
+
+TEST [[
+local x
+local function
+]]{
+ [1] = {
+ name = 'x',
+ detail = EXISTS,
+ kind = SymbolKind.Variable,
+ range = {7, 7},
+ selectionRange = {7, 7},
+ valueRange = {7, 7},
+ },
+ [2] = {
+ name = '',
+ detail = EXISTS,
+ kind = SymbolKind.Function,
+ range = {9, 22},
+ selectionRange = {22, 22},
+ valueRange = {9, 22},
+ }
+}
+
+-- 临时
+local fs = require 'bee.filesystem'
+local function testIfExit(path)
+ local buf = io.load(fs.path(path))
+ if buf then
+ TEST(buf)(EXISTS)
+ end
+end
+testIfExit[[D:\Github\lua\testes\coroutine.lua]]
+testIfExit[[D:\Github\War3-lua-map\scripts\game\init.lua]]
diff --git a/script-beta/test/example/largeGlobal.txt b/script-beta/test/example/largeGlobal.txt
new file mode 100644
index 00000000..23c93d6a
--- /dev/null
+++ b/script-beta/test/example/largeGlobal.txt
@@ -0,0 +1,28101 @@
+--Generated By protoc-gen-lua Do not Edit
+local protobuf = require "protobuf.protobuf"
+local config_predefine_pb = require("Protol.config_predefine_pb")
+module('Protol.config_pb')
+
+ARENA_DATA_CFG = protobuf.Descriptor();
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_DAY_LIST_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_SPAN_TIME_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_MIN_RATIO_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_MAX_RATIO_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD = protobuf.FieldDescriptor();
+ARENA_DATA_CFGS = protobuf.Descriptor();
+ARENA_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFG = protobuf.Descriptor();
+ARENA_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+ARENA_REWARD_CFGS = protobuf.Descriptor();
+ARENA_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOWINFO_CFG = protobuf.Descriptor();
+BOSS_SHOWINFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOWINFO_CFGS = protobuf.Descriptor();
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG = protobuf.Descriptor();
+BOSS_SHOW_UI_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_PAINT_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_UI_CFGS = protobuf.Descriptor();
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_CAM_CFG = protobuf.Descriptor();
+BOSS_SHOW_CAM_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_CAM_CFG_POS_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_CAM_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_CAM_CFG_ROLL_FIELD = protobuf.FieldDescriptor();
+BOSS_SHOW_CAM_CFGS = protobuf.Descriptor();
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG = protobuf.Descriptor();
+BUFF_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_NAME_TIPS_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DESC_TIPS_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_VISUABLE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_COUNTDOWN_TYPE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_TYPE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_EXIST_TIME_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_ATK_LV_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_AM_BEATEN_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_AM_BEATEN_EFF_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BEATEN_TIME_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BEAT_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BEAT_DIS_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_AM_DEAD_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DEAD_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DEAD_DIS_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_CRIT_EFFECT_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_WORD_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_IDLE_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_RUN_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_EFFECT_FIELD = protobuf.FieldDescriptor();
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD = protobuf.FieldDescriptor();
+BUFF_CFGS = protobuf.Descriptor();
+BUFF_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BUFF_EFFECT_CFG = protobuf.Descriptor();
+BUFF_EFFECT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
+BUFF_EFFECT_CFGS = protobuf.Descriptor();
+BUFF_EFFECT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG = protobuf.Descriptor();
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_GENDER_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_POS_DES_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_RES_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD = protobuf.FieldDescriptor();
+CHAR_DEFAULT_CFGS = protobuf.Descriptor();
+CHAR_DEFAULT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+COOLDOWN_CFG = protobuf.Descriptor();
+COOLDOWN_CFG_ID_FIELD = protobuf.FieldDescriptor();
+COOLDOWN_CFG_TATOL_TIME_FIELD = protobuf.FieldDescriptor();
+COOLDOWN_CFGS = protobuf.Descriptor();
+COOLDOWN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG = protobuf.Descriptor();
+MONSTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_SHOW_ICON_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_MONSTER_DESC_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_CAMP_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_CAMP_RELATION_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_PROPS_ID_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_SKILLS_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_AVATAR_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_AVATAR_SCALE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_IDLE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_MOVE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_BORN_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_BORN_TIME_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACT_DEAD_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_DROP_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_HEAD_PORTRAIT_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_MONSTER_TYPE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_LOCK_SIZE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_HALO_SWITCH_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD = protobuf.FieldDescriptor();
+MONSTER_CFGS = protobuf.Descriptor();
+MONSTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BUSINESS_ACTIVITY_CFG = protobuf.Descriptor();
+BUSINESS_ACTIVITY_CFG_GUID_FIELD = protobuf.FieldDescriptor();
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD = protobuf.FieldDescriptor();
+BUSINESS_ACTIVITY_CFGS = protobuf.Descriptor();
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG = protobuf.Descriptor();
+ACTIVITY_CFG_GUID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TOTAL_TIMES_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_START_WEEKS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_SIGNUP_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_BEGIN_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_DAILY_TYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_PARTAKE_MODE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TICKETITEM_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_FINDING_PATH_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_OPEN_FUNC_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TIME_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_FORM_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_TIPS_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_ITEMS_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_CUE_SHOW_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_CUE_TEXT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_CORRECT_TEXT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFG_NEGATE_TEXT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_CFGS = protobuf.Descriptor();
+ACTIVITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_CFG = protobuf.Descriptor();
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_CFG_RESET_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_CFG_DEPOSIT_LV_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_CFGS = protobuf.Descriptor();
+ACTIVATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG = protobuf.Descriptor();
+ACTIVATION_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD = protobuf.FieldDescriptor();
+ACTIVATION_REWARD_CFGS = protobuf.Descriptor();
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRADE_TOP_TABS_CFG = protobuf.Descriptor();
+TRADE_TOP_TABS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TRADE_TOP_TABS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+TRADE_TOP_TABS_CFG_TABS_FIELD = protobuf.FieldDescriptor();
+TRADE_TOP_TABS_CFGS = protobuf.Descriptor();
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG = protobuf.Descriptor();
+TRADE_SUB_TABS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_RULES_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD = protobuf.FieldDescriptor();
+TRADE_SUB_TABS_CFGS = protobuf.Descriptor();
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRADE_FILTER_RULES_CFG = protobuf.Descriptor();
+TRADE_FILTER_RULES_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TRADE_FILTER_RULES_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD = protobuf.FieldDescriptor();
+TRADE_FILTER_RULES_CFG_VALUES_FIELD = protobuf.FieldDescriptor();
+TRADE_FILTER_RULES_CFGS = protobuf.Descriptor();
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRADE_SORT_RULES_CFG = protobuf.Descriptor();
+TRADE_SORT_RULES_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TRADE_SORT_RULES_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+TRADE_SORT_RULES_CFG_PROP_FIELD = protobuf.FieldDescriptor();
+TRADE_SORT_RULES_CFG_UP_FIELD = protobuf.FieldDescriptor();
+TRADE_SORT_RULES_CFGS = protobuf.Descriptor();
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG = protobuf.Descriptor();
+BASE_PROP_CFG_PROF_TYPE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HP_MAX_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MP_MAX_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ATTACK_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DEFENSE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HIT_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DODGE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CRITICAL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CRITICAL_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_XP_MAX_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HIT_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DODGE_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CRITICAL_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_SLEEP_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HOLD_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CHARM_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_SILENCE_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_SPEED_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MAUD_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_MIND_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_CONSTITUTION_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_INTENSITY_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DEADLY_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_BLOCK_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD = protobuf.FieldDescriptor();
+BASE_PROP_CFGS = protobuf.Descriptor();
+BASE_PROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG = protobuf.Descriptor();
+LEVEL_EXP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_NEED_EXP_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_CAMP_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_EXP_MAX_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD = protobuf.FieldDescriptor();
+LEVEL_EXP_CFGS = protobuf.Descriptor();
+LEVEL_EXP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+LANGUAGE_CFG = protobuf.Descriptor();
+LANGUAGE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+LANGUAGE_CFG_TEXT_FIELD = protobuf.FieldDescriptor();
+LANGUAGE_CFGS = protobuf.Descriptor();
+LANGUAGE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG = protobuf.Descriptor();
+MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_GROUPID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_COLOUR_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_NAME_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TEXT_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TARGET1_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TARGET2_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TARGET3_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TYPE_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TARGETTYPE_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_OCCUPATION_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_REPEAT_WHETHER_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_AUTO_WHETHER_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_AUTO_COMMIT_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_FRONTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_TRIGGERLV_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_GIVEUP_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSIONNODE_LIST_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_DAILY_TIMES_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_RESET_TIME_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_DURATION_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPT_SCENEID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPT_NPCID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_CONDUCT_SCENEID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_CONDUCT_NPCID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUBMIT_SCENEID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUBMIT_NPCID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_NPCID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_NPCNUM_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_NPCDROP_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_TALK_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_COLLECT_ITEMID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_COLLECT_ITEMNUM_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_COLLECTION_NPCID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_COLLECTION_NPCNUM_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_USED_ITEMID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_INTO_BATTLEID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_TARGET_GRADE_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_FUNCTION_SCRIPT_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_CONDUCT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUBMIT_PLOTID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_TRIGGER_BLUR_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPT_BLUR_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_CONDUCT_BLUR_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_REWARD_ITEMID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_FAILED_ITEMID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_DISPLAY_WHETHER_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPT_DELIVERY_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_MISSION_CONVOYS_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_BIAOCHE_MOUNT_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SCENE_IS_COPY_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ALLOW_SHOW_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPTED_SHOW_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_COMMIT_SHOW_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_OPEN_FUNC_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_BTN_NAME_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_PLAYER_NUM_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_KILL_PLAYER_MAP_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUPPORT_PAUSE_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_SUBMISSION_HEAD_FIELD = protobuf.FieldDescriptor();
+MISSION_CFG_ROUTE_MARK_ID_FIELD = protobuf.FieldDescriptor();
+MISSION_CFGS = protobuf.Descriptor();
+MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MISSION_GROUP_CFG = protobuf.Descriptor();
+MISSION_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD = protobuf.FieldDescriptor();
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD = protobuf.FieldDescriptor();
+MISSION_GROUP_CFGS = protobuf.Descriptor();
+MISSION_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG = protobuf.Descriptor();
+NPC_SPAWN_METHOD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD = protobuf.FieldDescriptor();
+NPC_SPAWN_METHOD_CFGS = protobuf.Descriptor();
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG = protobuf.Descriptor();
+NPC_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_BUTTONS_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD = protobuf.FieldDescriptor();
+NPC_FUNCTION_CFGS = protobuf.Descriptor();
+NPC_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PLAYSCG_CFG = protobuf.Descriptor();
+PLAYSCG_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PLAYSCG_CFG_STATE_FIELD = protobuf.FieldDescriptor();
+PLAYSCG_CFGS = protobuf.Descriptor();
+PLAYSCG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG = protobuf.Descriptor();
+PLOT_DATA_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_NEXT_PLOT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_CONTENT_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_CAN_SKIP_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_STAY_TIME_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_AUDIORES_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_POS_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_SCALE_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFG_INSERT_NAME_FIELD = protobuf.FieldDescriptor();
+PLOT_DATA_CFGS = protobuf.Descriptor();
+PLOT_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GLOBAL_PARAM_CFG = protobuf.Descriptor();
+GLOBAL_PARAM_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GLOBAL_PARAM_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+GLOBAL_PARAM_CFG_VALUE_FIELD = protobuf.FieldDescriptor();
+GLOBAL_PARAM_CFGS = protobuf.Descriptor();
+GLOBAL_PARAM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PROP_TYPE_CFG = protobuf.Descriptor();
+PROP_TYPE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PROP_TYPE_CFG_IS_RATE_FIELD = protobuf.FieldDescriptor();
+PROP_TYPE_CFG_ATTRIBUTE_FIELD = protobuf.FieldDescriptor();
+PROP_TYPE_CFGS = protobuf.Descriptor();
+PROP_TYPE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ATTRIBUTE_SHOW_CFG = protobuf.Descriptor();
+ATTRIBUTE_SHOW_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+ATTRIBUTE_SHOW_CFGS = protobuf.Descriptor();
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RES_PATH_CFG = protobuf.Descriptor();
+RES_PATH_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RES_PATH_CFG_RES_PATH_FIELD = protobuf.FieldDescriptor();
+RES_PATH_CFG_ONE_BUNDLE_FIELD = protobuf.FieldDescriptor();
+RES_PATH_CFGS = protobuf.Descriptor();
+RES_PATH_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG = protobuf.Descriptor();
+SCENE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_MAPID_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_IS_SAME_SCENE_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SCENE_ROUTE_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_CAMERA_PATH_RES_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SCENE_RECAST_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SCENE_LENGTH_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SCENE_WIDTH_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_REFRESH_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_REFRESH_PARAMETER_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_PARTNER_CARRY_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SHOW_CG_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_RES_PATH_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_BORN_X_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_BORN_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_BORN_Z_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_BORN_ROTATION_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_GOAL_X_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_GOAL_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_GOAL_Z_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_CAN_TEAM_CALL_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_IS_BATTLE_FIELD_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_CAM_OPTIONS_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD = protobuf.FieldDescriptor();
+SCENE_CFGS = protobuf.Descriptor();
+SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG = protobuf.Descriptor();
+SKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NAME_TIP_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_SKILL_LEVEL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LEVELUP_COST_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NEXT_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_SKILL_ICON_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_SKILL_PROF_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TIPS_PARA6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NEXT_SKILL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_AUTO_SKILL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_NEXT_SKILL_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_SKILL_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ENERGY_COST_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_RET_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_RET_HP_EFFECT_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_SHOW_PROGRESS_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_PROGRESS_WORD_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_IS_PASSIVE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TRIGGER_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ACCELERATE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_IS_CONCURRENCY_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_IS_CHANNEL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CHANNEL_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CAN_CANCEL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_BASE_POS_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_TARGET_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_WORK_WHEN_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CD_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CD_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CD_NUM_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CAST_DISTANCE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOCKED_BY_SERVER_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOCK_MAX_COUNT_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CAST_SWING_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CAST_STIFF_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_HIT_EFFECT_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_HIT_EFFECT_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TYPE8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_POINT8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ADJUST_DISTANCE8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_DISTANCE8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_MOVE_TIME8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_3_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_4_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_5_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_6_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_7_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_8_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_9_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_9_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_9_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_10_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_10_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_10_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_11_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_11_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_11_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TYPE_12_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_TIME_12_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_LOGIC_ID_12_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ART_PARA1_FIELD = protobuf.FieldDescriptor();
+SKILL_CFG_ART_PARA2_FIELD = protobuf.FieldDescriptor();
+SKILL_CFGS = protobuf.Descriptor();
+SKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SKILL_ID_CFG = protobuf.Descriptor();
+SKILL_ID_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD = protobuf.FieldDescriptor();
+SKILL_ID_CFGS = protobuf.Descriptor();
+SKILL_ID_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG = protobuf.Descriptor();
+SKILL_CONDITION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_RATE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_ATK_LV_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_AM_DEAD_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD = protobuf.FieldDescriptor();
+SKILL_CONDITION_CFGS = protobuf.Descriptor();
+SKILL_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TEST_CFG = protobuf.Descriptor();
+TEST_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TEST_CFG_TESTSTRUCT1_FIELD = protobuf.FieldDescriptor();
+TEST_CFG_TES_FIELD = protobuf.FieldDescriptor();
+TEST_CFGS = protobuf.Descriptor();
+TEST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG = protobuf.Descriptor();
+ITEM_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_NAME_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_DESC_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_STACK_MAX_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_NEED_PROF_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_SUB_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_PART_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_DISPLAY_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_COLOR_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_ITEM_MARK_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_OWN_MAX_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_TRADE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_TRADE_COOLDOWN_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_SELL_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_SELL_COST_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_SELL_COST_NUM_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_USE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_WINDOWUSE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_WINDOWUSE_MAX_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_SHOW_USE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_USE_DELAY_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_BULK_USE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_CD_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_CD_TIME_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_IN_STORAGE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COULD_OBTAIN_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_OBTAIN_LIST_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT4_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT5_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT6_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT7_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PROP_EFFECT8_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_PRICE_GOLD_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_LUCK_VALUE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_POP_VALUE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_DROP_ID_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COST_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_COST_COUNT_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_HOLE_NUM_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_INLAY_TYPE_FIELD = protobuf.FieldDescriptor();
+ITEM_CFG_INLAY_LEVEL_FIELD = protobuf.FieldDescriptor();
+ITEM_CFGS = protobuf.Descriptor();
+ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG = protobuf.Descriptor();
+FIGHTCRIME_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_VALUE_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_COLOR_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_IMGBG_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_IMGICON_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_IMGFRAME_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFG_IMGNUMBER_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_CFGS = protobuf.Descriptor();
+FIGHTCRIME_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FIGHTCIRME_REWARD_CFG = protobuf.Descriptor();
+FIGHTCIRME_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD = protobuf.FieldDescriptor();
+FIGHTCIRME_REWARD_CFGS = protobuf.Descriptor();
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_MONSTER_CFG = protobuf.Descriptor();
+FIGHTCRIME_MONSTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD = protobuf.FieldDescriptor();
+FIGHTCRIME_MONSTER_CFGS = protobuf.Descriptor();
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG = protobuf.Descriptor();
+EQUIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_UPGRADE_ID_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_REFINE_MATERIAL_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_REFINE_COUNT_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_REFINE_COST_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFG_ACTIVE_COST_FIELD = protobuf.FieldDescriptor();
+EQUIP_CFGS = protobuf.Descriptor();
+EQUIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_CFG = protobuf.Descriptor();
+EQUIP_SET_CFG_ID_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_CFG_EQUIP_IDS_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_CFG_SET_NAME_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_CFGS = protobuf.Descriptor();
+EQUIP_SET_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_PROP_CFG = protobuf.Descriptor();
+EQUIP_SET_PROP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD = protobuf.FieldDescriptor();
+EQUIP_SET_PROP_CFGS = protobuf.Descriptor();
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG = protobuf.Descriptor();
+STRENGTHEN_CFG_ID_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_SEG_LIMIT_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_RATE_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_REQ_LEVEL_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_MAT_ID_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_MAT_NUM_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+STRENGTHEN_CFGS = protobuf.Descriptor();
+STRENGTHEN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG = protobuf.Descriptor();
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG_HEAD_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFG_SHOES_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_LIST_CFGS = protobuf.Descriptor();
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG = protobuf.Descriptor();
+RUNE_MAKE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_COST_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_PROP_COUNT_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_SPELL_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_MAKE_CFGS = protobuf.Descriptor();
+RUNE_MAKE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG = protobuf.Descriptor();
+RUNE_PROP_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_GROUP_CFGS = protobuf.Descriptor();
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EQUIP_LIST_CFG = protobuf.Descriptor();
+EQUIP_LIST_CFG_ID_FIELD = protobuf.FieldDescriptor();
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD = protobuf.FieldDescriptor();
+EQUIP_LIST_CFGS = protobuf.Descriptor();
+EQUIP_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG = protobuf.Descriptor();
+RUNE_SKILL_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_GROUP_CFGS = protobuf.Descriptor();
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG = protobuf.Descriptor();
+RUNE_DECOMPOSE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_SILVER_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_GOLD_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD = protobuf.FieldDescriptor();
+RUNE_DECOMPOSE_CFGS = protobuf.Descriptor();
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+JEWELRY_MAKE_CFG = protobuf.Descriptor();
+JEWELRY_MAKE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+JEWELRY_MAKE_CFG_POP_COST_FIELD = protobuf.FieldDescriptor();
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD = protobuf.FieldDescriptor();
+JEWELRY_MAKE_CFGS = protobuf.Descriptor();
+JEWELRY_MAKE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG = protobuf.Descriptor();
+WORLD_MAP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_SCENE_NAME_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_OPEN_LV_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFG_SCENE_ICON_FIELD = protobuf.FieldDescriptor();
+WORLD_MAP_CFGS = protobuf.Descriptor();
+WORLD_MAP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_CURRENCY_CFG = protobuf.Descriptor();
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD = protobuf.FieldDescriptor();
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_CURRENCY_CFGS = protobuf.Descriptor();
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG = protobuf.Descriptor();
+PARTNER_ACTIVATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_GITS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD = protobuf.FieldDescriptor();
+PARTNER_ACTIVATION_CFGS = protobuf.Descriptor();
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_MOOD_CFG = protobuf.Descriptor();
+PARTNER_MOOD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_MOOD_CFG_GIFTID_FIELD = protobuf.FieldDescriptor();
+PARTNER_MOOD_CFG_MOODTEXT_FIELD = protobuf.FieldDescriptor();
+PARTNER_MOOD_CFG_MULTIPLE_FIELD = protobuf.FieldDescriptor();
+PARTNER_MOOD_CFGS = protobuf.Descriptor();
+PARTNER_MOOD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRESSION_CFG = protobuf.Descriptor();
+PARTNER_IMPRESSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRESSION_CFGS = protobuf.Descriptor();
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRE_LEVELUP_CFG = protobuf.Descriptor();
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD = protobuf.FieldDescriptor();
+PARTNER_IMPRE_LEVELUP_CFGS = protobuf.Descriptor();
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_MULTIPLE_CFG = protobuf.Descriptor();
+PARTNER_MULTIPLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD = protobuf.FieldDescriptor();
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD = protobuf.FieldDescriptor();
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD = protobuf.FieldDescriptor();
+PARTNER_MULTIPLE_CFGS = protobuf.Descriptor();
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG = protobuf.Descriptor();
+PARTNER_STAR_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STAR_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STUDY_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STUDY_COST_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STAR_PROP1_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STAR_PROP2_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_STAR_PROP3_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFG_REBUILD_COST_FIELD = protobuf.FieldDescriptor();
+PARTNER_STAR_CFGS = protobuf.Descriptor();
+PARTNER_STAR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_STUDY_CFG = protobuf.Descriptor();
+PARTNER_STUDY_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD = protobuf.FieldDescriptor();
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD = protobuf.FieldDescriptor();
+PARTNER_STUDY_CFGS = protobuf.Descriptor();
+PARTNER_STUDY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFG = protobuf.Descriptor();
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_ITEM_COMPOUND_CFGS = protobuf.Descriptor();
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG = protobuf.Descriptor();
+PARTENR_EXPERIENCE_CFG_KEY_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTENR_EXPERIENCE_CFGS = protobuf.Descriptor();
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG = protobuf.Descriptor();
+PARTNER_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_LOCK_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_HEAD_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_DRAW_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_POKEDEX_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_SKILLS_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_AVATAR_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ACT_IDLE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ACT_MOVE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ACT_BORN_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ACT_DEAD_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_RESURRECTION_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_END_SKILLS_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ITEMS_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_IS_RARE_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD = protobuf.FieldDescriptor();
+PARTNER_BASE_CFGS = protobuf.Descriptor();
+PARTNER_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_ATTRIBUTE_CFG = protobuf.Descriptor();
+PARTNER_ATTRIBUTE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD = protobuf.FieldDescriptor();
+PARTNER_ATTRIBUTE_CFGS = protobuf.Descriptor();
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG = protobuf.Descriptor();
+PARTNER_PASSIVESKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD = protobuf.FieldDescriptor();
+PARTNER_PASSIVESKILL_CFGS = protobuf.Descriptor();
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG = protobuf.Descriptor();
+PARTNER_CHIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD = protobuf.FieldDescriptor();
+PARTNER_CHIP_CFGS = protobuf.Descriptor();
+PARTNER_CHIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FETTER_CFG = protobuf.Descriptor();
+FETTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FETTER_CFG_TID_FIELD = protobuf.FieldDescriptor();
+FETTER_CFG_FETTER_NAME_FIELD = protobuf.FieldDescriptor();
+FETTER_CFG_FETTER_DESC_FIELD = protobuf.FieldDescriptor();
+FETTER_CFG_FETTER_OBJECT_FIELD = protobuf.FieldDescriptor();
+FETTER_CFGS = protobuf.Descriptor();
+FETTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFG = protobuf.Descriptor();
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD = protobuf.FieldDescriptor();
+PARTNER_EQUIPHECHENG_CFGS = protobuf.Descriptor();
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+PARTNER_FORMATION_CFG = protobuf.Descriptor();
+PARTNER_FORMATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD = protobuf.FieldDescriptor();
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD = protobuf.FieldDescriptor();
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD = protobuf.FieldDescriptor();
+PARTNER_FORMATION_CFGS = protobuf.Descriptor();
+PARTNER_FORMATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG = protobuf.Descriptor();
+GUILD_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_CFGS = protobuf.Descriptor();
+GUILD_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_BUILDING_MISSION_CFG = protobuf.Descriptor();
+GUILD_BUILDING_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD = protobuf.FieldDescriptor();
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD = protobuf.FieldDescriptor();
+GUILD_BUILDING_MISSION_CFGS = protobuf.Descriptor();
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG = protobuf.Descriptor();
+BUILDING_MISSION_POOL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD = protobuf.FieldDescriptor();
+BUILDING_MISSION_POOL_CFGS = protobuf.Descriptor();
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG = protobuf.Descriptor();
+GUILD_MISSION_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD = protobuf.FieldDescriptor();
+GUILD_MISSION_BASE_CFGS = protobuf.Descriptor();
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG = protobuf.Descriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CONT_CFGS = protobuf.Descriptor();
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CFG = protobuf.Descriptor();
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD = protobuf.FieldDescriptor();
+GUILD_PRACTICE_GROUP_CFGS = protobuf.Descriptor();
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG = protobuf.Descriptor();
+GUILD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD = protobuf.FieldDescriptor();
+GUILD_BASE_CFGS = protobuf.Descriptor();
+GUILD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUILD_FLAG_CFG = protobuf.Descriptor();
+GUILD_FLAG_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD = protobuf.FieldDescriptor();
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD = protobuf.FieldDescriptor();
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD = protobuf.FieldDescriptor();
+GUILD_FLAG_CFGS = protobuf.Descriptor();
+GUILD_FLAG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG = protobuf.Descriptor();
+GUIL_POST_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_REMOVE_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_MAIL_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_EXPEL_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_INVITATION_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_TEAM_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_CALL_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFG_GUILD_NOTICE_FIELD = protobuf.FieldDescriptor();
+GUIL_POST_CFGS = protobuf.Descriptor();
+GUIL_POST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG = protobuf.Descriptor();
+INNER_ALCHEMY_CFG_ID_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_CFGS = protobuf.Descriptor();
+INNER_ALCHEMY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG = protobuf.Descriptor();
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD = protobuf.FieldDescriptor();
+INNER_ALCHEMY_GROUP_CFGS = protobuf.Descriptor();
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG = protobuf.Descriptor();
+MEDAL_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD = protobuf.FieldDescriptor();
+MEDAL_GROUP_CFGS = protobuf.Descriptor();
+MEDAL_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG = protobuf.Descriptor();
+MEDAL_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD = protobuf.FieldDescriptor();
+MEDAL_BASE_CFGS = protobuf.Descriptor();
+MEDAL_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG = protobuf.Descriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD = protobuf.FieldDescriptor();
+MEDAL_COMPOSITE_ADDITION_CFGS = protobuf.Descriptor();
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MEDAL_OPEN_LEVEL_CFG = protobuf.Descriptor();
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+MEDAL_OPEN_LEVEL_CFGS = protobuf.Descriptor();
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MEDAL_STAR_OPEN_LEVEL_CFG = protobuf.Descriptor();
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD = protobuf.FieldDescriptor();
+MEDAL_STAR_OPEN_LEVEL_CFGS = protobuf.Descriptor();
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFG = protobuf.Descriptor();
+FORMULA_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFG_COST_IDS_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFG_COST_COUNTS_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFG_ITEM_IDS_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFG_ITEM_COUNTS_FIELD = protobuf.FieldDescriptor();
+FORMULA_CFGS = protobuf.Descriptor();
+FORMULA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG = protobuf.Descriptor();
+MALL_ITEM_CFG_GUID_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG_REAL_GUID_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG_COST_TYPE_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFG_COST_CURRENT_FIELD = protobuf.FieldDescriptor();
+MALL_ITEM_CFGS = protobuf.Descriptor();
+MALL_ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG = protobuf.Descriptor();
+SHOP_TYPE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_SHOP_NAME_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_OPEN_LVL_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_ISTAB_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_NAME1_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_NAME2_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_NAME3_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD = protobuf.FieldDescriptor();
+SHOP_TYPE_CFGS = protobuf.Descriptor();
+SHOP_TYPE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG = protobuf.Descriptor();
+SCENE_EVENT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_STEP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_CONDIDITON1_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_CONDIDITON2_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_CONDIDITON3_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_CONDIDITON4_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_RESULT1_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_RESULT2_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_RESULT3_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFG_RESULT4_FIELD = protobuf.FieldDescriptor();
+SCENE_EVENT_CFGS = protobuf.Descriptor();
+SCENE_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG = protobuf.Descriptor();
+SCENE_PORTAL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_ENABLED_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFG_RESID_FIELD = protobuf.FieldDescriptor();
+SCENE_PORTAL_CFGS = protobuf.Descriptor();
+SCENE_PORTAL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG = protobuf.Descriptor();
+SCENE_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD = protobuf.FieldDescriptor();
+SCENE_FUNCTION_CFGS = protobuf.Descriptor();
+SCENE_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG = protobuf.Descriptor();
+SCENE_AREA_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_AREA_TYPE_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_HEIGHT_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_ACTION_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+SCENE_AREA_CFGS = protobuf.Descriptor();
+SCENE_AREA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG = protobuf.Descriptor();
+CLIENT_TRIGGER_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_EVENTS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CFGS = protobuf.Descriptor();
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG = protobuf.Descriptor();
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_EVENT_CFGS = protobuf.Descriptor();
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG = protobuf.Descriptor();
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_CONDITION_CFGS = protobuf.Descriptor();
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG = protobuf.Descriptor();
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_ACTION_CFGS = protobuf.Descriptor();
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG = protobuf.Descriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+CLIENT_TRIGGER_VARIABLE_CFGS = protobuf.Descriptor();
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG = protobuf.Descriptor();
+SCENE_ORGAN_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_SKILL_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_ENABLED_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
+SCENE_ORGAN_CFGS = protobuf.Descriptor();
+SCENE_ORGAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG = protobuf.Descriptor();
+MAP_SIGNS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_SUB_TYPE_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_AUTO_ID_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_IS_AUTO_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFG_IS_SHOW_FIELD = protobuf.FieldDescriptor();
+MAP_SIGNS_CFGS = protobuf.Descriptor();
+MAP_SIGNS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG = protobuf.Descriptor();
+SCENE_TRIGGER_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG_EVENTS_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
+SCENE_TRIGGER_CFGS = protobuf.Descriptor();
+SCENE_TRIGGER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG = protobuf.Descriptor();
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+TRIGGER_EVENT_CFGS = protobuf.Descriptor();
+TRIGGER_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG = protobuf.Descriptor();
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+TRIGGER_CONDITION_CFGS = protobuf.Descriptor();
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG = protobuf.Descriptor();
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
+TRIGGER_ACTION_CFGS = protobuf.Descriptor();
+TRIGGER_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG = protobuf.Descriptor();
+TRIGGER_VARIABLE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+TRIGGER_VARIABLE_CFGS = protobuf.Descriptor();
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG = protobuf.Descriptor();
+SCENE_DOOR_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFG_RESID_FIELD = protobuf.FieldDescriptor();
+SCENE_DOOR_CFGS = protobuf.Descriptor();
+SCENE_DOOR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+REVIVE_SHOW_CFG = protobuf.Descriptor();
+REVIVE_SHOW_CFG_ID_FIELD = protobuf.FieldDescriptor();
+REVIVE_SHOW_CFG_INDEX_FIELD = protobuf.FieldDescriptor();
+REVIVE_SHOW_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+REVIVE_SHOW_CFGS = protobuf.Descriptor();
+REVIVE_SHOW_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG = protobuf.Descriptor();
+FASHION_APPRECIATION_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+FASHION_APPRECIATION_CFGS = protobuf.Descriptor();
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG = protobuf.Descriptor();
+FASHION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_ID_GROUP_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_COST_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_TYPE_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_VOCATION_LIMIT_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_NAME_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_ICON_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_PARTS_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_COLOUR_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_FASHION_TIPS_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_ATTRIBUTE_MODE_FIELD = protobuf.FieldDescriptor();
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_CFGS = protobuf.Descriptor();
+FASHION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG = protobuf.Descriptor();
+FASHION_COST_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_FASHION_TIME_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_FASHION_POINT_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFG_UNLOCK_POWER_FIELD = protobuf.FieldDescriptor();
+FASHION_COST_CFGS = protobuf.Descriptor();
+FASHION_COST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG = protobuf.Descriptor();
+MOUNTEQUIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
+MOUNTEQUIP_CFGS = protobuf.Descriptor();
+MOUNTEQUIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+INDEPENDENT_RANDOM_REWARD_CFG = protobuf.Descriptor();
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD = protobuf.FieldDescriptor();
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+INDEPENDENT_RANDOM_REWARD_CFGS = protobuf.Descriptor();
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG = protobuf.Descriptor();
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD = protobuf.FieldDescriptor();
+WEIGHT_RANDOM_REWARD_CFGS = protobuf.Descriptor();
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG = protobuf.Descriptor();
+REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_SOUL_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
+REWARD_CFGS = protobuf.Descriptor();
+REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FUNC_TYPE_WEIGHT_CFG = protobuf.Descriptor();
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD = protobuf.FieldDescriptor();
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD = protobuf.FieldDescriptor();
+FUNC_TYPE_WEIGHT_CFGS = protobuf.Descriptor();
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFG = protobuf.Descriptor();
+ZONE_LOCATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFG_CITY_ID_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
+ZONE_LOCATION_CFGS = protobuf.Descriptor();
+ZONE_LOCATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG = protobuf.Descriptor();
+GIFT_GIVING_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD = protobuf.FieldDescriptor();
+GIFT_GIVING_CFGS = protobuf.Descriptor();
+GIFT_GIVING_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FRIEND_TITLE_CFG = protobuf.Descriptor();
+FRIEND_TITLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD = protobuf.FieldDescriptor();
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD = protobuf.FieldDescriptor();
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD = protobuf.FieldDescriptor();
+FRIEND_TITLE_CFGS = protobuf.Descriptor();
+FRIEND_TITLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+FATE_VALUE_REWARD_CFG = protobuf.Descriptor();
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD = protobuf.FieldDescriptor();
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD = protobuf.FieldDescriptor();
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
+FATE_VALUE_REWARD_CFGS = protobuf.Descriptor();
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG = protobuf.Descriptor();
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_INLAY_CFGS = protobuf.Descriptor();
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_LIST_CFG = protobuf.Descriptor();
+GEMSTONE_LIST_CFG_GEM_ID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD = protobuf.FieldDescriptor();
+GEMSTONE_LIST_CFGS = protobuf.Descriptor();
+GEMSTONE_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG = protobuf.Descriptor();
+CHEST_DROP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_COUNT_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_SPACE_ROWS_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_SPACE_COLS_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_LIVE_TIME_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFG_REFRESH_TIME_FIELD = protobuf.FieldDescriptor();
+CHEST_DROP_CFGS = protobuf.Descriptor();
+CHEST_DROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG = protobuf.Descriptor();
+MINIMAP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_HEIGHT_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_TEX_WIDTH_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_TEX_HEIGHT_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_ROTATION_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD = protobuf.FieldDescriptor();
+MINIMAP_CFGS = protobuf.Descriptor();
+MINIMAP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG = protobuf.Descriptor();
+TREASURE_ROOMS_CFG_GROUPID_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
+TREASURE_ROOMS_CFGS = protobuf.Descriptor();
+TREASURE_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFG = protobuf.Descriptor();
+CRUSADE_BASE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_BASE_CFGS = protobuf.Descriptor();
+CRUSADE_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG = protobuf.Descriptor();
+CRUSADE_DUNGON_CFG_NPCID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD = protobuf.FieldDescriptor();
+CRUSADE_DUNGON_CFGS = protobuf.Descriptor();
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+STRENGTH_CONVERT_CFG = protobuf.Descriptor();
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+STRENGTH_CONVERT_CFG_FACTOR_FIELD = protobuf.FieldDescriptor();
+STRENGTH_CONVERT_CFGS = protobuf.Descriptor();
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_NPC_CFG = protobuf.Descriptor();
+SKILL_SUMMONED_NPC_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_NPC_CFGS = protobuf.Descriptor();
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG = protobuf.Descriptor();
+SKILL_SUMMONED_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_RING_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_SPEED_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_START_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD = protobuf.FieldDescriptor();
+SKILL_SUMMONED_CFGS = protobuf.Descriptor();
+SKILL_SUMMONED_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG = protobuf.Descriptor();
+CLUE_CFG_CLUE_ID_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_POS_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_BOXES_POS_X_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_BOXES_POS_Z_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_COST_ID_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_CORE_COORDINATE_FIELD = protobuf.FieldDescriptor();
+CLUE_CFG_MAP_RANGE_FIELD = protobuf.FieldDescriptor();
+CLUE_CFGS = protobuf.Descriptor();
+CLUE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BOXS_CFG = protobuf.Descriptor();
+BOXS_CFG_BOXES_ID_FIELD = protobuf.FieldDescriptor();
+BOXS_CFG_BOX_ID_FIELD = protobuf.FieldDescriptor();
+BOXS_CFG_BOX_RATE_FIELD = protobuf.FieldDescriptor();
+BOXS_CFGS = protobuf.Descriptor();
+BOXS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG = protobuf.Descriptor();
+BOX_COLLECT_CFG_BOX_ID_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_BOX_RES_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_ITEM_RATE_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD = protobuf.FieldDescriptor();
+BOX_COLLECT_CFGS = protobuf.Descriptor();
+BOX_COLLECT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG = protobuf.Descriptor();
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD = protobuf.FieldDescriptor();
+DIG_TREASURE_EVENT_CFGS = protobuf.Descriptor();
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG = protobuf.Descriptor();
+DROP_POINT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG_MINDISTANCE_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG_PICKTYPE_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG_BSHOW_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFG_TEXTID_FIELD = protobuf.FieldDescriptor();
+DROP_POINT_CFGS = protobuf.Descriptor();
+DROP_POINT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG = protobuf.Descriptor();
+RANK_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD = protobuf.FieldDescriptor();
+RANK_FUNCTION_CFGS = protobuf.Descriptor();
+RANK_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG = protobuf.Descriptor();
+RANK_FIELD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_FIELD_NAME_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_CHILD_NAMES_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_CHILD_TYPES_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_CHILD_VALUES_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFG_HOST_FIELD_FIELD = protobuf.FieldDescriptor();
+RANK_FIELD_CFGS = protobuf.Descriptor();
+RANK_FIELD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EDN_CFG = protobuf.Descriptor();
+EDN_CFG_LVL_FIELD = protobuf.FieldDescriptor();
+EDN_CFG_LVLUP_EXP_FIELD = protobuf.FieldDescriptor();
+EDN_CFGS = protobuf.Descriptor();
+EDN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG = protobuf.Descriptor();
+EDN_SCENE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG_OPEN_LVL_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG_MAPNAME_ID_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG_MAP_IMGID_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD = protobuf.FieldDescriptor();
+EDN_SCENE_CFGS = protobuf.Descriptor();
+EDN_SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG = protobuf.Descriptor();
+EDN_RELIC_CFG_ID_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG_NAME_ID_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG_NAME_STRING_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG_REWARDS_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFG_TIPS_ID_FIELD = protobuf.FieldDescriptor();
+EDN_RELIC_CFGS = protobuf.Descriptor();
+EDN_RELIC_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG = protobuf.Descriptor();
+TOWER_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_RAID_ITEMID_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_MONEYTYPE_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_MONEYCOUNT_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_EXP_CROSS_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_BIRTH_X_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_BIRTH_Y_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFG_BIRTH_Z_FIELD = protobuf.FieldDescriptor();
+TOWER_BASE_CFGS = protobuf.Descriptor();
+TOWER_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG = protobuf.Descriptor();
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+STARSPIRIT_DUNGOEN_CFGS = protobuf.Descriptor();
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFG = protobuf.Descriptor();
+RUNE_QUALITY_CFG_RUNE_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD = protobuf.FieldDescriptor();
+RUNE_QUALITY_CFGS = protobuf.Descriptor();
+RUNE_QUALITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG = protobuf.Descriptor();
+RUNE_PROP_REFINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD = protobuf.FieldDescriptor();
+RUNE_PROP_REFINE_CFGS = protobuf.Descriptor();
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_REFINE_CFG = protobuf.Descriptor();
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD = protobuf.FieldDescriptor();
+RUNE_SKILL_REFINE_CFGS = protobuf.Descriptor();
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG = protobuf.Descriptor();
+MONTHCARD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG_PRICE_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD = protobuf.FieldDescriptor();
+MONTHCARD_BASE_CFGS = protobuf.Descriptor();
+MONTHCARD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG = protobuf.Descriptor();
+SIGNUP_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD = protobuf.FieldDescriptor();
+SIGNUP_BASE_CFGS = protobuf.Descriptor();
+SIGNUP_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SIGNUP_ACCUMULATION_CFG = protobuf.Descriptor();
+SIGNUP_ACCUMULATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD = protobuf.FieldDescriptor();
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD = protobuf.FieldDescriptor();
+SIGNUP_ACCUMULATION_CFGS = protobuf.Descriptor();
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG = protobuf.Descriptor();
+SERVICE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_SERVICE_ID_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
+SERVICE_CFGS = protobuf.Descriptor();
+SERVICE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MATERIAL_ITEM_CFG = protobuf.Descriptor();
+MATERIAL_ITEM_CFG_NUM_FIELD = protobuf.FieldDescriptor();
+MATERIAL_ITEM_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MATERIAL_ITEM_CFG_WEIGHT_FIELD = protobuf.FieldDescriptor();
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+MATERIAL_ITEM_CFGS = protobuf.Descriptor();
+MATERIAL_ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+STATE_CFG = protobuf.Descriptor();
+STATE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+STATE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+STATE_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
+STATE_CFGS = protobuf.Descriptor();
+STATE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG = protobuf.Descriptor();
+CAM_OPTIONS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_DEF_YAW_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_OFFSET_X_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFG_FOV_FIELD = protobuf.FieldDescriptor();
+CAM_OPTIONS_CFGS = protobuf.Descriptor();
+CAM_OPTIONS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG = protobuf.Descriptor();
+LEVEL_PACKAGE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD = protobuf.FieldDescriptor();
+LEVEL_PACKAGE_CFGS = protobuf.Descriptor();
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG = protobuf.Descriptor();
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_INFO_CFGS = protobuf.Descriptor();
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFG = protobuf.Descriptor();
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
+BATTLE_CRYSTAL_ROOMS_CFGS = protobuf.Descriptor();
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BATTLE_COLLECT_CRYSTAL_CFG = protobuf.Descriptor();
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD = protobuf.FieldDescriptor();
+BATTLE_COLLECT_CRYSTAL_CFGS = protobuf.Descriptor();
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFG = protobuf.Descriptor();
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD = protobuf.FieldDescriptor();
+ELITE_LEVEL_CFGS = protobuf.Descriptor();
+ELITE_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG = protobuf.Descriptor();
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_NODE_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_GRADE_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_COMMON_INFO_CFGS = protobuf.Descriptor();
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG = protobuf.Descriptor();
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_NODE_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_GRADE_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD = protobuf.FieldDescriptor();
+ELITE_HELL_INFO_CFGS = protobuf.Descriptor();
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ELITE_REWARD_CFG = protobuf.Descriptor();
+ELITE_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_REWARD_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
+ELITE_REWARD_CFGS = protobuf.Descriptor();
+ELITE_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG = protobuf.Descriptor();
+SUBSYS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG_TITLE_ID_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG_DESC_ID_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG_UI_STYLE_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFG_NOTES_FIELD = protobuf.FieldDescriptor();
+SUBSYS_CFGS = protobuf.Descriptor();
+SUBSYS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFG = protobuf.Descriptor();
+BAG_ROUTINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFG_BAG_MAX_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD = protobuf.FieldDescriptor();
+BAG_ROUTINE_CFGS = protobuf.Descriptor();
+BAG_ROUTINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+DEPOT_UNLOCK_CFG = protobuf.Descriptor();
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD = protobuf.FieldDescriptor();
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD = protobuf.FieldDescriptor();
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD = protobuf.FieldDescriptor();
+DEPOT_UNLOCK_CFGS = protobuf.Descriptor();
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ROLE_PARTS_CFG = protobuf.Descriptor();
+ROLE_PARTS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ROLE_PARTS_CFG_NAME_ID_FIELD = protobuf.FieldDescriptor();
+ROLE_PARTS_CFG_SLOT_FIELD = protobuf.FieldDescriptor();
+ROLE_PARTS_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
+ROLE_PARTS_CFGS = protobuf.Descriptor();
+ROLE_PARTS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFG = protobuf.Descriptor();
+SUPPRESS_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFG_FIT_LVL_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFG_GROUP_COUNT_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_CFGS = protobuf.Descriptor();
+SUPPRESS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_GROUP_CFG = protobuf.Descriptor();
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD = protobuf.FieldDescriptor();
+SUPPRESS_GROUP_CFGS = protobuf.Descriptor();
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG = protobuf.Descriptor();
+UI_CONTRIBUTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_TITLEID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_ATLASID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFG_TIPSID_FIELD = protobuf.FieldDescriptor();
+UI_CONTRIBUTION_CFGS = protobuf.Descriptor();
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG = protobuf.Descriptor();
+ACTIVITY_DUNGEON_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_DUNGEON_CFGS = protobuf.Descriptor();
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RESOURCE_COMPUND_CFG = protobuf.Descriptor();
+RESOURCE_COMPUND_CFG_ID_FIELD = protobuf.FieldDescriptor();
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+RESOURCE_COMPUND_CFGS = protobuf.Descriptor();
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG = protobuf.Descriptor();
+ROUTE_MARK_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG_MODEL_ID_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+ROUTE_MARK_CFGS = protobuf.Descriptor();
+ROUTE_MARK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+JUMP_CFG = protobuf.Descriptor();
+JUMP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+JUMP_CFG_WAY_POINTS_FIELD = protobuf.FieldDescriptor();
+JUMP_CFG_JUMP_ACTION_ID_FIELD = protobuf.FieldDescriptor();
+JUMP_CFGS = protobuf.Descriptor();
+JUMP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+JUMP_ACTION_CFG = protobuf.Descriptor();
+JUMP_ACTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD = protobuf.FieldDescriptor();
+JUMP_ACTION_CFG_SPLITES_FIELD = protobuf.FieldDescriptor();
+JUMP_ACTION_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
+JUMP_ACTION_CFGS = protobuf.Descriptor();
+JUMP_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG = protobuf.Descriptor();
+MAGIC_ATT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+MAGIC_ATT_CFGS = protobuf.Descriptor();
+MAGIC_ATT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG = protobuf.Descriptor();
+MAGIC_OSTIOLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_POS_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD = protobuf.FieldDescriptor();
+MAGIC_OSTIOLE_CFGS = protobuf.Descriptor();
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG = protobuf.Descriptor();
+MAGIC_LEVELUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+MAGIC_LEVELUP_CFGS = protobuf.Descriptor();
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG = protobuf.Descriptor();
+MAGIC_COMBINATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD = protobuf.FieldDescriptor();
+MAGIC_COMBINATION_CFGS = protobuf.Descriptor();
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG = protobuf.Descriptor();
+CONVOY_BIAOCHE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_CFGS = protobuf.Descriptor();
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG = protobuf.Descriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD = protobuf.FieldDescriptor();
+CONVOY_BIAOCHE_SCENE_CFGS = protobuf.Descriptor();
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG = protobuf.Descriptor();
+ACTIVITY_INFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_START_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_INFO_CFGS = protobuf.Descriptor();
+ACTIVITY_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG = protobuf.Descriptor();
+ACTIVITY_ROOMS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
+ACTIVITY_ROOMS_CFGS = protobuf.Descriptor();
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG = protobuf.Descriptor();
+GROW_POINT_CFG_ID_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_MAX_COUNT_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_SHOW_COUNT_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFG_SKILL_INDEX_FIELD = protobuf.FieldDescriptor();
+GROW_POINT_CFGS = protobuf.Descriptor();
+GROW_POINT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+ERRORCODE_NOTIFY_CFG = protobuf.Descriptor();
+ERRORCODE_NOTIFY_CFG_ID_FIELD = protobuf.FieldDescriptor();
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
+ERRORCODE_NOTIFY_CFGS = protobuf.Descriptor();
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG = protobuf.Descriptor();
+OPEN_RULES_DATA_CFG_ID_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFG_END_MIN_FIELD = protobuf.FieldDescriptor();
+OPEN_RULES_DATA_CFGS = protobuf.Descriptor();
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG = protobuf.Descriptor();
+CAMPBOSS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_X_POINT_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_Y_POINT_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFG_Z_POINT_FIELD = protobuf.FieldDescriptor();
+CAMPBOSS_CFGS = protobuf.Descriptor();
+CAMPBOSS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+TIPS_CFG = protobuf.Descriptor();
+TIPS_CFG_ID_FIELD = protobuf.FieldDescriptor();
+TIPS_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+TIPS_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
+TIPS_CFGS = protobuf.Descriptor();
+TIPS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG = protobuf.Descriptor();
+CAMP_RELATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_SCRIP_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE0_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE1_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE2_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE3_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE4_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE5_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE6_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE7_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE8_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE9_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE10_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE11_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE12_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE13_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE14_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFG_TYPE15_FIELD = protobuf.FieldDescriptor();
+CAMP_RELATION_CFGS = protobuf.Descriptor();
+CAMP_RELATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+CAMP_CHANGE_COST_CFG = protobuf.Descriptor();
+CAMP_CHANGE_COST_CFG_ID_FIELD = protobuf.FieldDescriptor();
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD = protobuf.FieldDescriptor();
+CAMP_CHANGE_COST_CFGS = protobuf.Descriptor();
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RANDOMMAN_CFG = protobuf.Descriptor();
+RANDOMMAN_CFG_NAME0_FIELD = protobuf.FieldDescriptor();
+RANDOMMAN_CFG_NAME1_FIELD = protobuf.FieldDescriptor();
+RANDOMMAN_CFGS = protobuf.Descriptor();
+RANDOMMAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+RANDOMWOMAN_CFG = protobuf.Descriptor();
+RANDOMWOMAN_CFG_NAME0_FIELD = protobuf.FieldDescriptor();
+RANDOMWOMAN_CFG_NAME1_FIELD = protobuf.FieldDescriptor();
+RANDOMWOMAN_CFGS = protobuf.Descriptor();
+RANDOMWOMAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG = protobuf.Descriptor();
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_MAUD_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_MIND_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD = protobuf.FieldDescriptor();
+SOUL_BASE_ATTR_CFGS = protobuf.Descriptor();
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ATTR_CFG = protobuf.Descriptor();
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ATTR_CFGS = protobuf.Descriptor();
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG = protobuf.Descriptor();
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD = protobuf.FieldDescriptor();
+SOUL_SUIT_ATTR_CFGS = protobuf.Descriptor();
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG = protobuf.Descriptor();
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD = protobuf.FieldDescriptor();
+SOUL_LEVEL_UP_CFGS = protobuf.Descriptor();
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG = protobuf.Descriptor();
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+SOUL_MAGIC_ROCK_CFGS = protobuf.Descriptor();
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG = protobuf.Descriptor();
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_ICON_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_DESC_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD = protobuf.FieldDescriptor();
+SOUL_REFINE_ROCK_CFGS = protobuf.Descriptor();
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+WIZARD_TASK_CFG = protobuf.Descriptor();
+WIZARD_TASK_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+WIZARD_TASK_CFGS = protobuf.Descriptor();
+WIZARD_TASK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG = protobuf.Descriptor();
+WIZARD_LEVEL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG_ICON_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD = protobuf.FieldDescriptor();
+WIZARD_LEVEL_CFGS = protobuf.Descriptor();
+WIZARD_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+WIZARD_BASE_CFG = protobuf.Descriptor();
+WIZARD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+WIZARD_BASE_CFG_DATA_FIELD = protobuf.FieldDescriptor();
+WIZARD_BASE_CFGS = protobuf.Descriptor();
+WIZARD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG = protobuf.Descriptor();
+MAGIC_DIVINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_PROP_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_DIVINE_CFGS = protobuf.Descriptor();
+MAGIC_DIVINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG = protobuf.Descriptor();
+DIVINE_SECTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_GROUP_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_SECTION_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_MISSION_ID_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
+DIVINE_SECTION_CFGS = protobuf.Descriptor();
+DIVINE_SECTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG = protobuf.Descriptor();
+DIVINE_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG_MISSION_ID_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD = protobuf.FieldDescriptor();
+DIVINE_MISSION_CFGS = protobuf.Descriptor();
+DIVINE_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG = protobuf.Descriptor();
+MAGIC_SKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_LAYERID_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_CFGS = protobuf.Descriptor();
+MAGIC_SKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG = protobuf.Descriptor();
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_UPLEVEL_CFGS = protobuf.Descriptor();
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_LAYER_CFG = protobuf.Descriptor();
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_SKILL_LAYER_CFGS = protobuf.Descriptor();
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG = protobuf.Descriptor();
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD = protobuf.FieldDescriptor();
+MAGIC_POINT_REFINE_CFGS = protobuf.Descriptor();
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
+
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.name = "activity_level"
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.full_name = ".ftcfg.arena_data_cfg.activity_level"
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.number = 1
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.index = 0
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.label = 2
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.has_default_value = false
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.default_value = 0
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.type = 5
+ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.cpp_type = 1
+
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.name = "activity_cycle"
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.full_name = ".ftcfg.arena_data_cfg.activity_cycle"
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.number = 2
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.index = 1
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.label = 2
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.has_default_value = false
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.default_value = 0
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.type = 5
+ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.cpp_type = 1
+
+ARENA_DATA_CFG_DURATION_FIELD.name = "duration"
+ARENA_DATA_CFG_DURATION_FIELD.full_name = ".ftcfg.arena_data_cfg.duration"
+ARENA_DATA_CFG_DURATION_FIELD.number = 3
+ARENA_DATA_CFG_DURATION_FIELD.index = 2
+ARENA_DATA_CFG_DURATION_FIELD.label = 2
+ARENA_DATA_CFG_DURATION_FIELD.has_default_value = false
+ARENA_DATA_CFG_DURATION_FIELD.default_value = 0
+ARENA_DATA_CFG_DURATION_FIELD.type = 5
+ARENA_DATA_CFG_DURATION_FIELD.cpp_type = 1
+
+ARENA_DATA_CFG_DAY_LIST_FIELD.name = "day_list"
+ARENA_DATA_CFG_DAY_LIST_FIELD.full_name = ".ftcfg.arena_data_cfg.day_list"
+ARENA_DATA_CFG_DAY_LIST_FIELD.number = 4
+ARENA_DATA_CFG_DAY_LIST_FIELD.index = 3
+ARENA_DATA_CFG_DAY_LIST_FIELD.label = 3
+ARENA_DATA_CFG_DAY_LIST_FIELD.has_default_value = false
+ARENA_DATA_CFG_DAY_LIST_FIELD.default_value = {}
+ARENA_DATA_CFG_DAY_LIST_FIELD.type = 2
+ARENA_DATA_CFG_DAY_LIST_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG_MAP_ID_FIELD.name = "map_id"
+ARENA_DATA_CFG_MAP_ID_FIELD.full_name = ".ftcfg.arena_data_cfg.map_id"
+ARENA_DATA_CFG_MAP_ID_FIELD.number = 5
+ARENA_DATA_CFG_MAP_ID_FIELD.index = 4
+ARENA_DATA_CFG_MAP_ID_FIELD.label = 2
+ARENA_DATA_CFG_MAP_ID_FIELD.has_default_value = false
+ARENA_DATA_CFG_MAP_ID_FIELD.default_value = 0
+ARENA_DATA_CFG_MAP_ID_FIELD.type = 5
+ARENA_DATA_CFG_MAP_ID_FIELD.cpp_type = 1
+
+ARENA_DATA_CFG_SPAN_TIME_FIELD.name = "span_time"
+ARENA_DATA_CFG_SPAN_TIME_FIELD.full_name = ".ftcfg.arena_data_cfg.span_time"
+ARENA_DATA_CFG_SPAN_TIME_FIELD.number = 6
+ARENA_DATA_CFG_SPAN_TIME_FIELD.index = 5
+ARENA_DATA_CFG_SPAN_TIME_FIELD.label = 2
+ARENA_DATA_CFG_SPAN_TIME_FIELD.has_default_value = false
+ARENA_DATA_CFG_SPAN_TIME_FIELD.default_value = 0
+ARENA_DATA_CFG_SPAN_TIME_FIELD.type = 5
+ARENA_DATA_CFG_SPAN_TIME_FIELD.cpp_type = 1
+
+ARENA_DATA_CFG_MIN_RATIO_FIELD.name = "min_ratio"
+ARENA_DATA_CFG_MIN_RATIO_FIELD.full_name = ".ftcfg.arena_data_cfg.min_ratio"
+ARENA_DATA_CFG_MIN_RATIO_FIELD.number = 7
+ARENA_DATA_CFG_MIN_RATIO_FIELD.index = 6
+ARENA_DATA_CFG_MIN_RATIO_FIELD.label = 2
+ARENA_DATA_CFG_MIN_RATIO_FIELD.has_default_value = false
+ARENA_DATA_CFG_MIN_RATIO_FIELD.default_value = 0.0
+ARENA_DATA_CFG_MIN_RATIO_FIELD.type = 2
+ARENA_DATA_CFG_MIN_RATIO_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.name = "ratio_addition"
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.full_name = ".ftcfg.arena_data_cfg.ratio_addition"
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.number = 8
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.index = 7
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.label = 2
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.has_default_value = false
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.default_value = 0.0
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.type = 2
+ARENA_DATA_CFG_RATIO_ADDITION_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG_MAX_RATIO_FIELD.name = "max_ratio"
+ARENA_DATA_CFG_MAX_RATIO_FIELD.full_name = ".ftcfg.arena_data_cfg.max_ratio"
+ARENA_DATA_CFG_MAX_RATIO_FIELD.number = 9
+ARENA_DATA_CFG_MAX_RATIO_FIELD.index = 8
+ARENA_DATA_CFG_MAX_RATIO_FIELD.label = 2
+ARENA_DATA_CFG_MAX_RATIO_FIELD.has_default_value = false
+ARENA_DATA_CFG_MAX_RATIO_FIELD.default_value = 0.0
+ARENA_DATA_CFG_MAX_RATIO_FIELD.type = 2
+ARENA_DATA_CFG_MAX_RATIO_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.name = "diff_teammate"
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.full_name = ".ftcfg.arena_data_cfg.diff_teammate"
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.number = 10
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.index = 9
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.label = 2
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.has_default_value = false
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.default_value = 0.0
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.type = 2
+ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.name = "diff_opponent"
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.full_name = ".ftcfg.arena_data_cfg.diff_opponent"
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.number = 11
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.index = 10
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.label = 2
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.has_default_value = false
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.default_value = 0.0
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.type = 2
+ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.cpp_type = 6
+
+ARENA_DATA_CFG.name = "arena_data_cfg"
+ARENA_DATA_CFG.full_name = ".ftcfg.arena_data_cfg"
+ARENA_DATA_CFG.nested_types = {}
+ARENA_DATA_CFG.enum_types = {}
+ARENA_DATA_CFG.fields = {ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD, ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD, ARENA_DATA_CFG_DURATION_FIELD, ARENA_DATA_CFG_DAY_LIST_FIELD, ARENA_DATA_CFG_MAP_ID_FIELD, ARENA_DATA_CFG_SPAN_TIME_FIELD, ARENA_DATA_CFG_MIN_RATIO_FIELD, ARENA_DATA_CFG_RATIO_ADDITION_FIELD, ARENA_DATA_CFG_MAX_RATIO_FIELD, ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD, ARENA_DATA_CFG_DIFF_OPPONENT_FIELD}
+ARENA_DATA_CFG.is_extendable = false
+ARENA_DATA_CFG.extensions = {}
+ARENA_DATA_CFGS_ITEMS_FIELD.name = "items"
+ARENA_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.arena_data_cfgs.items"
+ARENA_DATA_CFGS_ITEMS_FIELD.number = 1
+ARENA_DATA_CFGS_ITEMS_FIELD.index = 0
+ARENA_DATA_CFGS_ITEMS_FIELD.label = 3
+ARENA_DATA_CFGS_ITEMS_FIELD.has_default_value = false
+ARENA_DATA_CFGS_ITEMS_FIELD.default_value = {}
+ARENA_DATA_CFGS_ITEMS_FIELD.message_type = ARENA_DATA_CFG
+ARENA_DATA_CFGS_ITEMS_FIELD.type = 11
+ARENA_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ARENA_DATA_CFGS.name = "arena_data_cfgs"
+ARENA_DATA_CFGS.full_name = ".ftcfg.arena_data_cfgs"
+ARENA_DATA_CFGS.nested_types = {}
+ARENA_DATA_CFGS.enum_types = {}
+ARENA_DATA_CFGS.fields = {ARENA_DATA_CFGS_ITEMS_FIELD}
+ARENA_DATA_CFGS.is_extendable = false
+ARENA_DATA_CFGS.extensions = {}
+ARENA_REWARD_CFG_ID_FIELD.name = "id"
+ARENA_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.arena_reward_cfg.id"
+ARENA_REWARD_CFG_ID_FIELD.number = 1
+ARENA_REWARD_CFG_ID_FIELD.index = 0
+ARENA_REWARD_CFG_ID_FIELD.label = 2
+ARENA_REWARD_CFG_ID_FIELD.has_default_value = false
+ARENA_REWARD_CFG_ID_FIELD.default_value = 0
+ARENA_REWARD_CFG_ID_FIELD.type = 5
+ARENA_REWARD_CFG_ID_FIELD.cpp_type = 1
+
+ARENA_REWARD_CFG_ITEM_ID_FIELD.name = "item_id"
+ARENA_REWARD_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.arena_reward_cfg.item_id"
+ARENA_REWARD_CFG_ITEM_ID_FIELD.number = 2
+ARENA_REWARD_CFG_ITEM_ID_FIELD.index = 1
+ARENA_REWARD_CFG_ITEM_ID_FIELD.label = 3
+ARENA_REWARD_CFG_ITEM_ID_FIELD.has_default_value = false
+ARENA_REWARD_CFG_ITEM_ID_FIELD.default_value = {}
+ARENA_REWARD_CFG_ITEM_ID_FIELD.type = 13
+ARENA_REWARD_CFG_ITEM_ID_FIELD.cpp_type = 3
+
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.name = "item_count"
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.arena_reward_cfg.item_count"
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.number = 3
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.index = 2
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.label = 3
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.has_default_value = false
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.default_value = {}
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.type = 5
+ARENA_REWARD_CFG_ITEM_COUNT_FIELD.cpp_type = 1
+
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.arena_reward_cfg.attribute_type"
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.number = 4
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.index = 3
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
+ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
+
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.arena_reward_cfg.attribute_count"
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.number = 5
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.index = 4
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.type = 5
+ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+ARENA_REWARD_CFG.name = "arena_reward_cfg"
+ARENA_REWARD_CFG.full_name = ".ftcfg.arena_reward_cfg"
+ARENA_REWARD_CFG.nested_types = {}
+ARENA_REWARD_CFG.enum_types = {}
+ARENA_REWARD_CFG.fields = {ARENA_REWARD_CFG_ID_FIELD, ARENA_REWARD_CFG_ITEM_ID_FIELD, ARENA_REWARD_CFG_ITEM_COUNT_FIELD, ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD, ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD}
+ARENA_REWARD_CFG.is_extendable = false
+ARENA_REWARD_CFG.extensions = {}
+ARENA_REWARD_CFGS_ITEMS_FIELD.name = "items"
+ARENA_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.arena_reward_cfgs.items"
+ARENA_REWARD_CFGS_ITEMS_FIELD.number = 1
+ARENA_REWARD_CFGS_ITEMS_FIELD.index = 0
+ARENA_REWARD_CFGS_ITEMS_FIELD.label = 3
+ARENA_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+ARENA_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+ARENA_REWARD_CFGS_ITEMS_FIELD.message_type = ARENA_REWARD_CFG
+ARENA_REWARD_CFGS_ITEMS_FIELD.type = 11
+ARENA_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ARENA_REWARD_CFGS.name = "arena_reward_cfgs"
+ARENA_REWARD_CFGS.full_name = ".ftcfg.arena_reward_cfgs"
+ARENA_REWARD_CFGS.nested_types = {}
+ARENA_REWARD_CFGS.enum_types = {}
+ARENA_REWARD_CFGS.fields = {ARENA_REWARD_CFGS_ITEMS_FIELD}
+ARENA_REWARD_CFGS.is_extendable = false
+ARENA_REWARD_CFGS.extensions = {}
+BOSS_SHOWINFO_CFG_ID_FIELD.name = "id"
+BOSS_SHOWINFO_CFG_ID_FIELD.full_name = ".ftcfg.boss_showinfo_cfg.id"
+BOSS_SHOWINFO_CFG_ID_FIELD.number = 1
+BOSS_SHOWINFO_CFG_ID_FIELD.index = 0
+BOSS_SHOWINFO_CFG_ID_FIELD.label = 2
+BOSS_SHOWINFO_CFG_ID_FIELD.has_default_value = false
+BOSS_SHOWINFO_CFG_ID_FIELD.default_value = 0
+BOSS_SHOWINFO_CFG_ID_FIELD.type = 5
+BOSS_SHOWINFO_CFG_ID_FIELD.cpp_type = 1
+
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.name = "show_equ"
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.full_name = ".ftcfg.boss_showinfo_cfg.show_equ"
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.number = 2
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.index = 1
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.label = 3
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.has_default_value = false
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.default_value = {}
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.type = 9
+BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.cpp_type = 9
+
+BOSS_SHOWINFO_CFG.name = "boss_showinfo_cfg"
+BOSS_SHOWINFO_CFG.full_name = ".ftcfg.boss_showinfo_cfg"
+BOSS_SHOWINFO_CFG.nested_types = {}
+BOSS_SHOWINFO_CFG.enum_types = {}
+BOSS_SHOWINFO_CFG.fields = {BOSS_SHOWINFO_CFG_ID_FIELD, BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD}
+BOSS_SHOWINFO_CFG.is_extendable = false
+BOSS_SHOWINFO_CFG.extensions = {}
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.name = "items"
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_showinfo_cfgs.items"
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.number = 1
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.index = 0
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.label = 3
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.has_default_value = false
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.default_value = {}
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.message_type = BOSS_SHOWINFO_CFG
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.type = 11
+BOSS_SHOWINFO_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BOSS_SHOWINFO_CFGS.name = "boss_showinfo_cfgs"
+BOSS_SHOWINFO_CFGS.full_name = ".ftcfg.boss_showinfo_cfgs"
+BOSS_SHOWINFO_CFGS.nested_types = {}
+BOSS_SHOWINFO_CFGS.enum_types = {}
+BOSS_SHOWINFO_CFGS.fields = {BOSS_SHOWINFO_CFGS_ITEMS_FIELD}
+BOSS_SHOWINFO_CFGS.is_extendable = false
+BOSS_SHOWINFO_CFGS.extensions = {}
+BOSS_SHOW_UI_CFG_ID_FIELD.name = "id"
+BOSS_SHOW_UI_CFG_ID_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.id"
+BOSS_SHOW_UI_CFG_ID_FIELD.number = 1
+BOSS_SHOW_UI_CFG_ID_FIELD.index = 0
+BOSS_SHOW_UI_CFG_ID_FIELD.label = 2
+BOSS_SHOW_UI_CFG_ID_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_ID_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_ID_FIELD.type = 5
+BOSS_SHOW_UI_CFG_ID_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_NAME_FIELD.name = "name"
+BOSS_SHOW_UI_CFG_NAME_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.name"
+BOSS_SHOW_UI_CFG_NAME_FIELD.number = 2
+BOSS_SHOW_UI_CFG_NAME_FIELD.index = 1
+BOSS_SHOW_UI_CFG_NAME_FIELD.label = 2
+BOSS_SHOW_UI_CFG_NAME_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_NAME_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_NAME_FIELD.type = 5
+BOSS_SHOW_UI_CFG_NAME_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.name = "level"
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.level"
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.number = 3
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.index = 2
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.label = 2
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.type = 5
+BOSS_SHOW_UI_CFG_LEVEL_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_DESC_FIELD.name = "desc"
+BOSS_SHOW_UI_CFG_DESC_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.desc"
+BOSS_SHOW_UI_CFG_DESC_FIELD.number = 4
+BOSS_SHOW_UI_CFG_DESC_FIELD.index = 3
+BOSS_SHOW_UI_CFG_DESC_FIELD.label = 2
+BOSS_SHOW_UI_CFG_DESC_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_DESC_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_DESC_FIELD.type = 5
+BOSS_SHOW_UI_CFG_DESC_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_PAINT_FIELD.name = "paint"
+BOSS_SHOW_UI_CFG_PAINT_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.paint"
+BOSS_SHOW_UI_CFG_PAINT_FIELD.number = 5
+BOSS_SHOW_UI_CFG_PAINT_FIELD.index = 4
+BOSS_SHOW_UI_CFG_PAINT_FIELD.label = 2
+BOSS_SHOW_UI_CFG_PAINT_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_PAINT_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_PAINT_FIELD.type = 5
+BOSS_SHOW_UI_CFG_PAINT_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.name = "close_timer"
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.close_timer"
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.number = 6
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.index = 5
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.label = 2
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.type = 5
+BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.name = "cam_motion"
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.cam_motion"
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.number = 7
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.index = 6
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.label = 2
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.default_value = 0
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.type = 5
+BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.cpp_type = 1
+
+BOSS_SHOW_UI_CFG.name = "boss_show_ui_cfg"
+BOSS_SHOW_UI_CFG.full_name = ".ftcfg.boss_show_ui_cfg"
+BOSS_SHOW_UI_CFG.nested_types = {}
+BOSS_SHOW_UI_CFG.enum_types = {}
+BOSS_SHOW_UI_CFG.fields = {BOSS_SHOW_UI_CFG_ID_FIELD, BOSS_SHOW_UI_CFG_NAME_FIELD, BOSS_SHOW_UI_CFG_LEVEL_FIELD, BOSS_SHOW_UI_CFG_DESC_FIELD, BOSS_SHOW_UI_CFG_PAINT_FIELD, BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD, BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD}
+BOSS_SHOW_UI_CFG.is_extendable = false
+BOSS_SHOW_UI_CFG.extensions = {}
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.name = "items"
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_show_ui_cfgs.items"
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.number = 1
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.index = 0
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.label = 3
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.has_default_value = false
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.default_value = {}
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.message_type = BOSS_SHOW_UI_CFG
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.type = 11
+BOSS_SHOW_UI_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BOSS_SHOW_UI_CFGS.name = "boss_show_ui_cfgs"
+BOSS_SHOW_UI_CFGS.full_name = ".ftcfg.boss_show_ui_cfgs"
+BOSS_SHOW_UI_CFGS.nested_types = {}
+BOSS_SHOW_UI_CFGS.enum_types = {}
+BOSS_SHOW_UI_CFGS.fields = {BOSS_SHOW_UI_CFGS_ITEMS_FIELD}
+BOSS_SHOW_UI_CFGS.is_extendable = false
+BOSS_SHOW_UI_CFGS.extensions = {}
+BOSS_SHOW_CAM_CFG_ID_FIELD.name = "id"
+BOSS_SHOW_CAM_CFG_ID_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.id"
+BOSS_SHOW_CAM_CFG_ID_FIELD.number = 1
+BOSS_SHOW_CAM_CFG_ID_FIELD.index = 0
+BOSS_SHOW_CAM_CFG_ID_FIELD.label = 2
+BOSS_SHOW_CAM_CFG_ID_FIELD.has_default_value = false
+BOSS_SHOW_CAM_CFG_ID_FIELD.default_value = 0
+BOSS_SHOW_CAM_CFG_ID_FIELD.type = 5
+BOSS_SHOW_CAM_CFG_ID_FIELD.cpp_type = 1
+
+BOSS_SHOW_CAM_CFG_POS_FIELD.name = "pos"
+BOSS_SHOW_CAM_CFG_POS_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.pos"
+BOSS_SHOW_CAM_CFG_POS_FIELD.number = 2
+BOSS_SHOW_CAM_CFG_POS_FIELD.index = 1
+BOSS_SHOW_CAM_CFG_POS_FIELD.label = 3
+BOSS_SHOW_CAM_CFG_POS_FIELD.has_default_value = false
+BOSS_SHOW_CAM_CFG_POS_FIELD.default_value = {}
+BOSS_SHOW_CAM_CFG_POS_FIELD.type = 2
+BOSS_SHOW_CAM_CFG_POS_FIELD.cpp_type = 6
+
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.name = "duration"
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.duration"
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.number = 3
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.index = 2
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.label = 2
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.has_default_value = false
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.default_value = 0.0
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.type = 2
+BOSS_SHOW_CAM_CFG_DURATION_FIELD.cpp_type = 6
+
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.name = "roll"
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.roll"
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.number = 4
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.index = 3
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.label = 2
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.has_default_value = false
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.default_value = 0.0
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.type = 2
+BOSS_SHOW_CAM_CFG_ROLL_FIELD.cpp_type = 6
+
+BOSS_SHOW_CAM_CFG.name = "boss_show_cam_cfg"
+BOSS_SHOW_CAM_CFG.full_name = ".ftcfg.boss_show_cam_cfg"
+BOSS_SHOW_CAM_CFG.nested_types = {}
+BOSS_SHOW_CAM_CFG.enum_types = {}
+BOSS_SHOW_CAM_CFG.fields = {BOSS_SHOW_CAM_CFG_ID_FIELD, BOSS_SHOW_CAM_CFG_POS_FIELD, BOSS_SHOW_CAM_CFG_DURATION_FIELD, BOSS_SHOW_CAM_CFG_ROLL_FIELD}
+BOSS_SHOW_CAM_CFG.is_extendable = false
+BOSS_SHOW_CAM_CFG.extensions = {}
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.name = "items"
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_show_cam_cfgs.items"
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.number = 1
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.index = 0
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.label = 3
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.has_default_value = false
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.default_value = {}
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.message_type = BOSS_SHOW_CAM_CFG
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.type = 11
+BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BOSS_SHOW_CAM_CFGS.name = "boss_show_cam_cfgs"
+BOSS_SHOW_CAM_CFGS.full_name = ".ftcfg.boss_show_cam_cfgs"
+BOSS_SHOW_CAM_CFGS.nested_types = {}
+BOSS_SHOW_CAM_CFGS.enum_types = {}
+BOSS_SHOW_CAM_CFGS.fields = {BOSS_SHOW_CAM_CFGS_ITEMS_FIELD}
+BOSS_SHOW_CAM_CFGS.is_extendable = false
+BOSS_SHOW_CAM_CFGS.extensions = {}
+BUFF_CFG_ID_FIELD.name = "id"
+BUFF_CFG_ID_FIELD.full_name = ".ftcfg.buff_cfg.id"
+BUFF_CFG_ID_FIELD.number = 1
+BUFF_CFG_ID_FIELD.index = 0
+BUFF_CFG_ID_FIELD.label = 2
+BUFF_CFG_ID_FIELD.has_default_value = false
+BUFF_CFG_ID_FIELD.default_value = 0
+BUFF_CFG_ID_FIELD.type = 5
+BUFF_CFG_ID_FIELD.cpp_type = 1
+
+BUFF_CFG_NAME_TIPS_FIELD.name = "name_tips"
+BUFF_CFG_NAME_TIPS_FIELD.full_name = ".ftcfg.buff_cfg.name_tips"
+BUFF_CFG_NAME_TIPS_FIELD.number = 2
+BUFF_CFG_NAME_TIPS_FIELD.index = 1
+BUFF_CFG_NAME_TIPS_FIELD.label = 2
+BUFF_CFG_NAME_TIPS_FIELD.has_default_value = false
+BUFF_CFG_NAME_TIPS_FIELD.default_value = ""
+BUFF_CFG_NAME_TIPS_FIELD.type = 9
+BUFF_CFG_NAME_TIPS_FIELD.cpp_type = 9
+
+BUFF_CFG_DESC_TIPS_FIELD.name = "desc_tips"
+BUFF_CFG_DESC_TIPS_FIELD.full_name = ".ftcfg.buff_cfg.desc_tips"
+BUFF_CFG_DESC_TIPS_FIELD.number = 3
+BUFF_CFG_DESC_TIPS_FIELD.index = 2
+BUFF_CFG_DESC_TIPS_FIELD.label = 2
+BUFF_CFG_DESC_TIPS_FIELD.has_default_value = false
+BUFF_CFG_DESC_TIPS_FIELD.default_value = ""
+BUFF_CFG_DESC_TIPS_FIELD.type = 9
+BUFF_CFG_DESC_TIPS_FIELD.cpp_type = 9
+
+BUFF_CFG_NAME_FIELD.name = "name"
+BUFF_CFG_NAME_FIELD.full_name = ".ftcfg.buff_cfg.name"
+BUFF_CFG_NAME_FIELD.number = 4
+BUFF_CFG_NAME_FIELD.index = 3
+BUFF_CFG_NAME_FIELD.label = 2
+BUFF_CFG_NAME_FIELD.has_default_value = false
+BUFF_CFG_NAME_FIELD.default_value = 0
+BUFF_CFG_NAME_FIELD.type = 5
+BUFF_CFG_NAME_FIELD.cpp_type = 1
+
+BUFF_CFG_DESC_FIELD.name = "desc"
+BUFF_CFG_DESC_FIELD.full_name = ".ftcfg.buff_cfg.desc"
+BUFF_CFG_DESC_FIELD.number = 5
+BUFF_CFG_DESC_FIELD.index = 4
+BUFF_CFG_DESC_FIELD.label = 2
+BUFF_CFG_DESC_FIELD.has_default_value = false
+BUFF_CFG_DESC_FIELD.default_value = 0
+BUFF_CFG_DESC_FIELD.type = 5
+BUFF_CFG_DESC_FIELD.cpp_type = 1
+
+BUFF_CFG_ICON_FIELD.name = "icon"
+BUFF_CFG_ICON_FIELD.full_name = ".ftcfg.buff_cfg.icon"
+BUFF_CFG_ICON_FIELD.number = 6
+BUFF_CFG_ICON_FIELD.index = 5
+BUFF_CFG_ICON_FIELD.label = 2
+BUFF_CFG_ICON_FIELD.has_default_value = false
+BUFF_CFG_ICON_FIELD.default_value = 0
+BUFF_CFG_ICON_FIELD.type = 5
+BUFF_CFG_ICON_FIELD.cpp_type = 1
+
+BUFF_CFG_VISUABLE_FIELD.name = "visuable"
+BUFF_CFG_VISUABLE_FIELD.full_name = ".ftcfg.buff_cfg.visuable"
+BUFF_CFG_VISUABLE_FIELD.number = 7
+BUFF_CFG_VISUABLE_FIELD.index = 6
+BUFF_CFG_VISUABLE_FIELD.label = 2
+BUFF_CFG_VISUABLE_FIELD.has_default_value = false
+BUFF_CFG_VISUABLE_FIELD.default_value = false
+BUFF_CFG_VISUABLE_FIELD.type = 8
+BUFF_CFG_VISUABLE_FIELD.cpp_type = 7
+
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.name = "countdown_type"
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.countdown_type"
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.number = 8
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.index = 7
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.label = 2
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.has_default_value = false
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.default_value = 0
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.type = 5
+BUFF_CFG_COUNTDOWN_TYPE_FIELD.cpp_type = 1
+
+BUFF_CFG_BUFF_TYPE_FIELD.name = "buff_type"
+BUFF_CFG_BUFF_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.buff_type"
+BUFF_CFG_BUFF_TYPE_FIELD.number = 9
+BUFF_CFG_BUFF_TYPE_FIELD.index = 8
+BUFF_CFG_BUFF_TYPE_FIELD.label = 2
+BUFF_CFG_BUFF_TYPE_FIELD.has_default_value = false
+BUFF_CFG_BUFF_TYPE_FIELD.default_value = 0
+BUFF_CFG_BUFF_TYPE_FIELD.type = 5
+BUFF_CFG_BUFF_TYPE_FIELD.cpp_type = 1
+
+BUFF_CFG_EXIST_TIME_FIELD.name = "exist_time"
+BUFF_CFG_EXIST_TIME_FIELD.full_name = ".ftcfg.buff_cfg.exist_time"
+BUFF_CFG_EXIST_TIME_FIELD.number = 10
+BUFF_CFG_EXIST_TIME_FIELD.index = 9
+BUFF_CFG_EXIST_TIME_FIELD.label = 2
+BUFF_CFG_EXIST_TIME_FIELD.has_default_value = false
+BUFF_CFG_EXIST_TIME_FIELD.default_value = 0
+BUFF_CFG_EXIST_TIME_FIELD.type = 5
+BUFF_CFG_EXIST_TIME_FIELD.cpp_type = 1
+
+BUFF_CFG_ATK_LV_FIELD.name = "atk_lv"
+BUFF_CFG_ATK_LV_FIELD.full_name = ".ftcfg.buff_cfg.atk_lv"
+BUFF_CFG_ATK_LV_FIELD.number = 11
+BUFF_CFG_ATK_LV_FIELD.index = 10
+BUFF_CFG_ATK_LV_FIELD.label = 2
+BUFF_CFG_ATK_LV_FIELD.has_default_value = false
+BUFF_CFG_ATK_LV_FIELD.default_value = 0
+BUFF_CFG_ATK_LV_FIELD.type = 5
+BUFF_CFG_ATK_LV_FIELD.cpp_type = 1
+
+BUFF_CFG_AM_BEATEN_FIELD.name = "am_beaten"
+BUFF_CFG_AM_BEATEN_FIELD.full_name = ".ftcfg.buff_cfg.am_beaten"
+BUFF_CFG_AM_BEATEN_FIELD.number = 12
+BUFF_CFG_AM_BEATEN_FIELD.index = 11
+BUFF_CFG_AM_BEATEN_FIELD.label = 2
+BUFF_CFG_AM_BEATEN_FIELD.has_default_value = false
+BUFF_CFG_AM_BEATEN_FIELD.default_value = ""
+BUFF_CFG_AM_BEATEN_FIELD.type = 9
+BUFF_CFG_AM_BEATEN_FIELD.cpp_type = 9
+
+BUFF_CFG_AM_BEATEN_EFF_FIELD.name = "am_beaten_eff"
+BUFF_CFG_AM_BEATEN_EFF_FIELD.full_name = ".ftcfg.buff_cfg.am_beaten_eff"
+BUFF_CFG_AM_BEATEN_EFF_FIELD.number = 13
+BUFF_CFG_AM_BEATEN_EFF_FIELD.index = 12
+BUFF_CFG_AM_BEATEN_EFF_FIELD.label = 2
+BUFF_CFG_AM_BEATEN_EFF_FIELD.has_default_value = false
+BUFF_CFG_AM_BEATEN_EFF_FIELD.default_value = ""
+BUFF_CFG_AM_BEATEN_EFF_FIELD.type = 9
+BUFF_CFG_AM_BEATEN_EFF_FIELD.cpp_type = 9
+
+BUFF_CFG_BEATEN_TIME_FIELD.name = "beaten_time"
+BUFF_CFG_BEATEN_TIME_FIELD.full_name = ".ftcfg.buff_cfg.beaten_time"
+BUFF_CFG_BEATEN_TIME_FIELD.number = 14
+BUFF_CFG_BEATEN_TIME_FIELD.index = 13
+BUFF_CFG_BEATEN_TIME_FIELD.label = 2
+BUFF_CFG_BEATEN_TIME_FIELD.has_default_value = false
+BUFF_CFG_BEATEN_TIME_FIELD.default_value = 0
+BUFF_CFG_BEATEN_TIME_FIELD.type = 5
+BUFF_CFG_BEATEN_TIME_FIELD.cpp_type = 1
+
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.name = "beat_back_type"
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.beat_back_type"
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.number = 15
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.index = 14
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.label = 2
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.has_default_value = false
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.default_value = 0
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.type = 5
+BUFF_CFG_BEAT_BACK_TYPE_FIELD.cpp_type = 1
+
+BUFF_CFG_BEAT_DIS_FIELD.name = "beat_dis"
+BUFF_CFG_BEAT_DIS_FIELD.full_name = ".ftcfg.buff_cfg.beat_dis"
+BUFF_CFG_BEAT_DIS_FIELD.number = 16
+BUFF_CFG_BEAT_DIS_FIELD.index = 15
+BUFF_CFG_BEAT_DIS_FIELD.label = 2
+BUFF_CFG_BEAT_DIS_FIELD.has_default_value = false
+BUFF_CFG_BEAT_DIS_FIELD.default_value = 0.0
+BUFF_CFG_BEAT_DIS_FIELD.type = 2
+BUFF_CFG_BEAT_DIS_FIELD.cpp_type = 6
+
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.name = "beat_back_move_time"
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.buff_cfg.beat_back_move_time"
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.number = 17
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.index = 16
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.label = 2
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.has_default_value = false
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.default_value = 0
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.type = 5
+BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.cpp_type = 1
+
+BUFF_CFG_AM_DEAD_FIELD.name = "am_dead"
+BUFF_CFG_AM_DEAD_FIELD.full_name = ".ftcfg.buff_cfg.am_dead"
+BUFF_CFG_AM_DEAD_FIELD.number = 18
+BUFF_CFG_AM_DEAD_FIELD.index = 17
+BUFF_CFG_AM_DEAD_FIELD.label = 2
+BUFF_CFG_AM_DEAD_FIELD.has_default_value = false
+BUFF_CFG_AM_DEAD_FIELD.default_value = 0
+BUFF_CFG_AM_DEAD_FIELD.type = 5
+BUFF_CFG_AM_DEAD_FIELD.cpp_type = 1
+
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.name = "dead_back_type"
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.dead_back_type"
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.number = 19
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.index = 18
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.label = 2
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.has_default_value = false
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.default_value = 0
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.type = 5
+BUFF_CFG_DEAD_BACK_TYPE_FIELD.cpp_type = 1
+
+BUFF_CFG_DEAD_DIS_FIELD.name = "dead_dis"
+BUFF_CFG_DEAD_DIS_FIELD.full_name = ".ftcfg.buff_cfg.dead_dis"
+BUFF_CFG_DEAD_DIS_FIELD.number = 20
+BUFF_CFG_DEAD_DIS_FIELD.index = 19
+BUFF_CFG_DEAD_DIS_FIELD.label = 2
+BUFF_CFG_DEAD_DIS_FIELD.has_default_value = false
+BUFF_CFG_DEAD_DIS_FIELD.default_value = 0.0
+BUFF_CFG_DEAD_DIS_FIELD.type = 2
+BUFF_CFG_DEAD_DIS_FIELD.cpp_type = 6
+
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.name = "dead_back_move_time"
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.buff_cfg.dead_back_move_time"
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.number = 21
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.index = 20
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.label = 2
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.has_default_value = false
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.default_value = 0
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.type = 5
+BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.cpp_type = 1
+
+BUFF_CFG_CRIT_EFFECT_FIELD.name = "crit_effect"
+BUFF_CFG_CRIT_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.crit_effect"
+BUFF_CFG_CRIT_EFFECT_FIELD.number = 22
+BUFF_CFG_CRIT_EFFECT_FIELD.index = 21
+BUFF_CFG_CRIT_EFFECT_FIELD.label = 2
+BUFF_CFG_CRIT_EFFECT_FIELD.has_default_value = false
+BUFF_CFG_CRIT_EFFECT_FIELD.default_value = 0
+BUFF_CFG_CRIT_EFFECT_FIELD.type = 5
+BUFF_CFG_CRIT_EFFECT_FIELD.cpp_type = 1
+
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.name = "dead_strike_effect"
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.dead_strike_effect"
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.number = 23
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.index = 22
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.label = 2
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.has_default_value = false
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.default_value = 0
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.type = 5
+BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.cpp_type = 1
+
+BUFF_CFG_BUFF_WORD_FIELD.name = "buff_word"
+BUFF_CFG_BUFF_WORD_FIELD.full_name = ".ftcfg.buff_cfg.buff_word"
+BUFF_CFG_BUFF_WORD_FIELD.number = 24
+BUFF_CFG_BUFF_WORD_FIELD.index = 23
+BUFF_CFG_BUFF_WORD_FIELD.label = 2
+BUFF_CFG_BUFF_WORD_FIELD.has_default_value = false
+BUFF_CFG_BUFF_WORD_FIELD.default_value = 0
+BUFF_CFG_BUFF_WORD_FIELD.type = 5
+BUFF_CFG_BUFF_WORD_FIELD.cpp_type = 1
+
+BUFF_CFG_BUFF_IDLE_FIELD.name = "buff_idle"
+BUFF_CFG_BUFF_IDLE_FIELD.full_name = ".ftcfg.buff_cfg.buff_idle"
+BUFF_CFG_BUFF_IDLE_FIELD.number = 25
+BUFF_CFG_BUFF_IDLE_FIELD.index = 24
+BUFF_CFG_BUFF_IDLE_FIELD.label = 2
+BUFF_CFG_BUFF_IDLE_FIELD.has_default_value = false
+BUFF_CFG_BUFF_IDLE_FIELD.default_value = ""
+BUFF_CFG_BUFF_IDLE_FIELD.type = 9
+BUFF_CFG_BUFF_IDLE_FIELD.cpp_type = 9
+
+BUFF_CFG_BUFF_RUN_FIELD.name = "buff_run"
+BUFF_CFG_BUFF_RUN_FIELD.full_name = ".ftcfg.buff_cfg.buff_run"
+BUFF_CFG_BUFF_RUN_FIELD.number = 26
+BUFF_CFG_BUFF_RUN_FIELD.index = 25
+BUFF_CFG_BUFF_RUN_FIELD.label = 2
+BUFF_CFG_BUFF_RUN_FIELD.has_default_value = false
+BUFF_CFG_BUFF_RUN_FIELD.default_value = ""
+BUFF_CFG_BUFF_RUN_FIELD.type = 9
+BUFF_CFG_BUFF_RUN_FIELD.cpp_type = 9
+
+BUFF_CFG_BUFF_EFFECT_FIELD.name = "buff_effect"
+BUFF_CFG_BUFF_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.buff_effect"
+BUFF_CFG_BUFF_EFFECT_FIELD.number = 27
+BUFF_CFG_BUFF_EFFECT_FIELD.index = 26
+BUFF_CFG_BUFF_EFFECT_FIELD.label = 2
+BUFF_CFG_BUFF_EFFECT_FIELD.has_default_value = false
+BUFF_CFG_BUFF_EFFECT_FIELD.default_value = ""
+BUFF_CFG_BUFF_EFFECT_FIELD.type = 9
+BUFF_CFG_BUFF_EFFECT_FIELD.cpp_type = 9
+
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.name = "buff_trigger_effect"
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.buff_trigger_effect"
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.number = 28
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.index = 27
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.label = 2
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.has_default_value = false
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.default_value = ""
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.type = 9
+BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.cpp_type = 9
+
+BUFF_CFG.name = "buff_cfg"
+BUFF_CFG.full_name = ".ftcfg.buff_cfg"
+BUFF_CFG.nested_types = {}
+BUFF_CFG.enum_types = {}
+BUFF_CFG.fields = {BUFF_CFG_ID_FIELD, BUFF_CFG_NAME_TIPS_FIELD, BUFF_CFG_DESC_TIPS_FIELD, BUFF_CFG_NAME_FIELD, BUFF_CFG_DESC_FIELD, BUFF_CFG_ICON_FIELD, BUFF_CFG_VISUABLE_FIELD, BUFF_CFG_COUNTDOWN_TYPE_FIELD, BUFF_CFG_BUFF_TYPE_FIELD, BUFF_CFG_EXIST_TIME_FIELD, BUFF_CFG_ATK_LV_FIELD, BUFF_CFG_AM_BEATEN_FIELD, BUFF_CFG_AM_BEATEN_EFF_FIELD, BUFF_CFG_BEATEN_TIME_FIELD, BUFF_CFG_BEAT_BACK_TYPE_FIELD, BUFF_CFG_BEAT_DIS_FIELD, BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD, BUFF_CFG_AM_DEAD_FIELD, BUFF_CFG_DEAD_BACK_TYPE_FIELD, BUFF_CFG_DEAD_DIS_FIELD, BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD, BUFF_CFG_CRIT_EFFECT_FIELD, BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD, BUFF_CFG_BUFF_WORD_FIELD, BUFF_CFG_BUFF_IDLE_FIELD, BUFF_CFG_BUFF_RUN_FIELD, BUFF_CFG_BUFF_EFFECT_FIELD, BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD}
+BUFF_CFG.is_extendable = false
+BUFF_CFG.extensions = {}
+BUFF_CFGS_ITEMS_FIELD.name = "items"
+BUFF_CFGS_ITEMS_FIELD.full_name = ".ftcfg.buff_cfgs.items"
+BUFF_CFGS_ITEMS_FIELD.number = 1
+BUFF_CFGS_ITEMS_FIELD.index = 0
+BUFF_CFGS_ITEMS_FIELD.label = 3
+BUFF_CFGS_ITEMS_FIELD.has_default_value = false
+BUFF_CFGS_ITEMS_FIELD.default_value = {}
+BUFF_CFGS_ITEMS_FIELD.message_type = BUFF_CFG
+BUFF_CFGS_ITEMS_FIELD.type = 11
+BUFF_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BUFF_CFGS.name = "buff_cfgs"
+BUFF_CFGS.full_name = ".ftcfg.buff_cfgs"
+BUFF_CFGS.nested_types = {}
+BUFF_CFGS.enum_types = {}
+BUFF_CFGS.fields = {BUFF_CFGS_ITEMS_FIELD}
+BUFF_CFGS.is_extendable = false
+BUFF_CFGS.extensions = {}
+BUFF_EFFECT_CFG_ID_FIELD.name = "id"
+BUFF_EFFECT_CFG_ID_FIELD.full_name = ".ftcfg.buff_effect_cfg.id"
+BUFF_EFFECT_CFG_ID_FIELD.number = 1
+BUFF_EFFECT_CFG_ID_FIELD.index = 0
+BUFF_EFFECT_CFG_ID_FIELD.label = 2
+BUFF_EFFECT_CFG_ID_FIELD.has_default_value = false
+BUFF_EFFECT_CFG_ID_FIELD.default_value = 0
+BUFF_EFFECT_CFG_ID_FIELD.type = 5
+BUFF_EFFECT_CFG_ID_FIELD.cpp_type = 1
+
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.name = "formula_id"
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.buff_effect_cfg.formula_id"
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.number = 2
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.index = 1
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.label = 2
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.has_default_value = false
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.default_value = nil
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.enum_type = config_predefine_pb.EEFFECTFORMULATYPE
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.type = 14
+BUFF_EFFECT_CFG_FORMULA_ID_FIELD.cpp_type = 8
+
+BUFF_EFFECT_CFG.name = "buff_effect_cfg"
+BUFF_EFFECT_CFG.full_name = ".ftcfg.buff_effect_cfg"
+BUFF_EFFECT_CFG.nested_types = {}
+BUFF_EFFECT_CFG.enum_types = {}
+BUFF_EFFECT_CFG.fields = {BUFF_EFFECT_CFG_ID_FIELD, BUFF_EFFECT_CFG_FORMULA_ID_FIELD}
+BUFF_EFFECT_CFG.is_extendable = false
+BUFF_EFFECT_CFG.extensions = {}
+BUFF_EFFECT_CFGS_ITEMS_FIELD.name = "items"
+BUFF_EFFECT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.buff_effect_cfgs.items"
+BUFF_EFFECT_CFGS_ITEMS_FIELD.number = 1
+BUFF_EFFECT_CFGS_ITEMS_FIELD.index = 0
+BUFF_EFFECT_CFGS_ITEMS_FIELD.label = 3
+BUFF_EFFECT_CFGS_ITEMS_FIELD.has_default_value = false
+BUFF_EFFECT_CFGS_ITEMS_FIELD.default_value = {}
+BUFF_EFFECT_CFGS_ITEMS_FIELD.message_type = BUFF_EFFECT_CFG
+BUFF_EFFECT_CFGS_ITEMS_FIELD.type = 11
+BUFF_EFFECT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BUFF_EFFECT_CFGS.name = "buff_effect_cfgs"
+BUFF_EFFECT_CFGS.full_name = ".ftcfg.buff_effect_cfgs"
+BUFF_EFFECT_CFGS.nested_types = {}
+BUFF_EFFECT_CFGS.enum_types = {}
+BUFF_EFFECT_CFGS.fields = {BUFF_EFFECT_CFGS_ITEMS_FIELD}
+BUFF_EFFECT_CFGS.is_extendable = false
+BUFF_EFFECT_CFGS.extensions = {}
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.name = "prof_type"
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.full_name = ".ftcfg.char_default_cfg.prof_type"
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.number = 1
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.index = 0
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.default_value = nil
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.enum_type = config_predefine_pb.EPROFTYPE
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.type = 14
+CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.cpp_type = 8
+
+CHAR_DEFAULT_CFG_GENDER_FIELD.name = "gender"
+CHAR_DEFAULT_CFG_GENDER_FIELD.full_name = ".ftcfg.char_default_cfg.gender"
+CHAR_DEFAULT_CFG_GENDER_FIELD.number = 2
+CHAR_DEFAULT_CFG_GENDER_FIELD.index = 1
+CHAR_DEFAULT_CFG_GENDER_FIELD.label = 2
+CHAR_DEFAULT_CFG_GENDER_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_GENDER_FIELD.default_value = nil
+CHAR_DEFAULT_CFG_GENDER_FIELD.enum_type = config_predefine_pb.EGENDERTYPE
+CHAR_DEFAULT_CFG_GENDER_FIELD.type = 14
+CHAR_DEFAULT_CFG_GENDER_FIELD.cpp_type = 8
+
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.name = "show_index"
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.full_name = ".ftcfg.char_default_cfg.show_index"
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.number = 3
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.index = 2
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.label = 2
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.type = 5
+CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.name = "prof_icon"
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.full_name = ".ftcfg.char_default_cfg.prof_icon"
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.number = 4
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.index = 3
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.type = 9
+CHAR_DEFAULT_CFG_PROF_ICON_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.name = "model_path"
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.full_name = ".ftcfg.char_default_cfg.model_path"
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.number = 5
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.index = 4
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.label = 2
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.type = 5
+CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.name = "profname_icon"
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.full_name = ".ftcfg.char_default_cfg.profname_icon"
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.number = 6
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.index = 5
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.type = 9
+CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.name = "prop_stars"
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.full_name = ".ftcfg.char_default_cfg.prop_stars"
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.number = 7
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.index = 6
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.label = 3
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.default_value = {}
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.type = 5
+CHAR_DEFAULT_CFG_PROP_STARS_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.name = "prof_head"
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.full_name = ".ftcfg.char_default_cfg.prof_head"
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.number = 8
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.index = 7
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.type = 9
+CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_POS_DES_FIELD.name = "pos_des"
+CHAR_DEFAULT_CFG_POS_DES_FIELD.full_name = ".ftcfg.char_default_cfg.pos_des"
+CHAR_DEFAULT_CFG_POS_DES_FIELD.number = 9
+CHAR_DEFAULT_CFG_POS_DES_FIELD.index = 8
+CHAR_DEFAULT_CFG_POS_DES_FIELD.label = 2
+CHAR_DEFAULT_CFG_POS_DES_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_POS_DES_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_POS_DES_FIELD.type = 5
+CHAR_DEFAULT_CFG_POS_DES_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.name = "prof_name"
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.full_name = ".ftcfg.char_default_cfg.prof_name"
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.number = 10
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.index = 9
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.type = 5
+CHAR_DEFAULT_CFG_PROF_NAME_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.name = "prof_res"
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.full_name = ".ftcfg.char_default_cfg.prof_res"
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.number = 11
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.index = 10
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.type = 5
+CHAR_DEFAULT_CFG_PROF_RES_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.name = "prof_anim1"
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.full_name = ".ftcfg.char_default_cfg.prof_anim1"
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.number = 12
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.index = 11
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.type = 9
+CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.name = "prof_anim2"
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.full_name = ".ftcfg.char_default_cfg.prof_anim2"
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.number = 13
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.index = 12
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.label = 2
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.type = 9
+CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.name = "skill_res"
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.full_name = ".ftcfg.char_default_cfg.skill_res"
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.number = 14
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.index = 13
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.label = 2
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.type = 5
+CHAR_DEFAULT_CFG_SKILL_RES_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.name = "random_cfg"
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.full_name = ".ftcfg.char_default_cfg.random_cfg"
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.number = 15
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.index = 14
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.label = 2
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.default_value = ""
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.type = 9
+CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.cpp_type = 9
+
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.name = "is_open"
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.full_name = ".ftcfg.char_default_cfg.is_open"
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.number = 16
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.index = 15
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.label = 2
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.default_value = false
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.type = 8
+CHAR_DEFAULT_CFG_IS_OPEN_FIELD.cpp_type = 7
+
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.name = "default_parts"
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.full_name = ".ftcfg.char_default_cfg.default_parts"
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.number = 17
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.index = 16
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.label = 3
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.default_value = {}
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.type = 5
+CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.name = "mp_type"
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.full_name = ".ftcfg.char_default_cfg.mp_type"
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.number = 18
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.index = 17
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.label = 2
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.default_value = 0
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.type = 5
+CHAR_DEFAULT_CFG_MP_TYPE_FIELD.cpp_type = 1
+
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.name = "is_minister"
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.full_name = ".ftcfg.char_default_cfg.is_minister"
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.number = 19
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.index = 18
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.label = 2
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.has_default_value = false
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.default_value = false
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.type = 8
+CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.cpp_type = 7
+
+CHAR_DEFAULT_CFG.name = "char_default_cfg"
+CHAR_DEFAULT_CFG.full_name = ".ftcfg.char_default_cfg"
+CHAR_DEFAULT_CFG.nested_types = {}
+CHAR_DEFAULT_CFG.enum_types = {}
+CHAR_DEFAULT_CFG.fields = {CHAR_DEFAULT_CFG_PROF_TYPE_FIELD, CHAR_DEFAULT_CFG_GENDER_FIELD, CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD, CHAR_DEFAULT_CFG_PROF_ICON_FIELD, CHAR_DEFAULT_CFG_MODEL_PATH_FIELD, CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD, CHAR_DEFAULT_CFG_PROP_STARS_FIELD, CHAR_DEFAULT_CFG_PROF_HEAD_FIELD, CHAR_DEFAULT_CFG_POS_DES_FIELD, CHAR_DEFAULT_CFG_PROF_NAME_FIELD, CHAR_DEFAULT_CFG_PROF_RES_FIELD, CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD, CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD, CHAR_DEFAULT_CFG_SKILL_RES_FIELD, CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD, CHAR_DEFAULT_CFG_IS_OPEN_FIELD, CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD, CHAR_DEFAULT_CFG_MP_TYPE_FIELD, CHAR_DEFAULT_CFG_IS_MINISTER_FIELD}
+CHAR_DEFAULT_CFG.is_extendable = false
+CHAR_DEFAULT_CFG.extensions = {}
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.name = "items"
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.char_default_cfgs.items"
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.number = 1
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.index = 0
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.label = 3
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.has_default_value = false
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.default_value = {}
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.message_type = CHAR_DEFAULT_CFG
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.type = 11
+CHAR_DEFAULT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CHAR_DEFAULT_CFGS.name = "char_default_cfgs"
+CHAR_DEFAULT_CFGS.full_name = ".ftcfg.char_default_cfgs"
+CHAR_DEFAULT_CFGS.nested_types = {}
+CHAR_DEFAULT_CFGS.enum_types = {}
+CHAR_DEFAULT_CFGS.fields = {CHAR_DEFAULT_CFGS_ITEMS_FIELD}
+CHAR_DEFAULT_CFGS.is_extendable = false
+CHAR_DEFAULT_CFGS.extensions = {}
+COOLDOWN_CFG_ID_FIELD.name = "id"
+COOLDOWN_CFG_ID_FIELD.full_name = ".ftcfg.cooldown_cfg.id"
+COOLDOWN_CFG_ID_FIELD.number = 1
+COOLDOWN_CFG_ID_FIELD.index = 0
+COOLDOWN_CFG_ID_FIELD.label = 2
+COOLDOWN_CFG_ID_FIELD.has_default_value = false
+COOLDOWN_CFG_ID_FIELD.default_value = 0
+COOLDOWN_CFG_ID_FIELD.type = 5
+COOLDOWN_CFG_ID_FIELD.cpp_type = 1
+
+COOLDOWN_CFG_TATOL_TIME_FIELD.name = "tatol_time"
+COOLDOWN_CFG_TATOL_TIME_FIELD.full_name = ".ftcfg.cooldown_cfg.tatol_time"
+COOLDOWN_CFG_TATOL_TIME_FIELD.number = 2
+COOLDOWN_CFG_TATOL_TIME_FIELD.index = 1
+COOLDOWN_CFG_TATOL_TIME_FIELD.label = 2
+COOLDOWN_CFG_TATOL_TIME_FIELD.has_default_value = false
+COOLDOWN_CFG_TATOL_TIME_FIELD.default_value = 0
+COOLDOWN_CFG_TATOL_TIME_FIELD.type = 5
+COOLDOWN_CFG_TATOL_TIME_FIELD.cpp_type = 1
+
+COOLDOWN_CFG.name = "cooldown_cfg"
+COOLDOWN_CFG.full_name = ".ftcfg.cooldown_cfg"
+COOLDOWN_CFG.nested_types = {}
+COOLDOWN_CFG.enum_types = {}
+COOLDOWN_CFG.fields = {COOLDOWN_CFG_ID_FIELD, COOLDOWN_CFG_TATOL_TIME_FIELD}
+COOLDOWN_CFG.is_extendable = false
+COOLDOWN_CFG.extensions = {}
+COOLDOWN_CFGS_ITEMS_FIELD.name = "items"
+COOLDOWN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.cooldown_cfgs.items"
+COOLDOWN_CFGS_ITEMS_FIELD.number = 1
+COOLDOWN_CFGS_ITEMS_FIELD.index = 0
+COOLDOWN_CFGS_ITEMS_FIELD.label = 3
+COOLDOWN_CFGS_ITEMS_FIELD.has_default_value = false
+COOLDOWN_CFGS_ITEMS_FIELD.default_value = {}
+COOLDOWN_CFGS_ITEMS_FIELD.message_type = COOLDOWN_CFG
+COOLDOWN_CFGS_ITEMS_FIELD.type = 11
+COOLDOWN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+COOLDOWN_CFGS.name = "cooldown_cfgs"
+COOLDOWN_CFGS.full_name = ".ftcfg.cooldown_cfgs"
+COOLDOWN_CFGS.nested_types = {}
+COOLDOWN_CFGS.enum_types = {}
+COOLDOWN_CFGS.fields = {COOLDOWN_CFGS_ITEMS_FIELD}
+COOLDOWN_CFGS.is_extendable = false
+COOLDOWN_CFGS.extensions = {}
+MONSTER_CFG_ID_FIELD.name = "id"
+MONSTER_CFG_ID_FIELD.full_name = ".ftcfg.monster_cfg.id"
+MONSTER_CFG_ID_FIELD.number = 1
+MONSTER_CFG_ID_FIELD.index = 0
+MONSTER_CFG_ID_FIELD.label = 2
+MONSTER_CFG_ID_FIELD.has_default_value = false
+MONSTER_CFG_ID_FIELD.default_value = 0
+MONSTER_CFG_ID_FIELD.type = 13
+MONSTER_CFG_ID_FIELD.cpp_type = 3
+
+MONSTER_CFG_SHOW_NAME_FIELD.name = "show_name"
+MONSTER_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.monster_cfg.show_name"
+MONSTER_CFG_SHOW_NAME_FIELD.number = 2
+MONSTER_CFG_SHOW_NAME_FIELD.index = 1
+MONSTER_CFG_SHOW_NAME_FIELD.label = 2
+MONSTER_CFG_SHOW_NAME_FIELD.has_default_value = false
+MONSTER_CFG_SHOW_NAME_FIELD.default_value = 0
+MONSTER_CFG_SHOW_NAME_FIELD.type = 5
+MONSTER_CFG_SHOW_NAME_FIELD.cpp_type = 1
+
+MONSTER_CFG_SHOW_ICON_FIELD.name = "show_icon"
+MONSTER_CFG_SHOW_ICON_FIELD.full_name = ".ftcfg.monster_cfg.show_icon"
+MONSTER_CFG_SHOW_ICON_FIELD.number = 3
+MONSTER_CFG_SHOW_ICON_FIELD.index = 2
+MONSTER_CFG_SHOW_ICON_FIELD.label = 2
+MONSTER_CFG_SHOW_ICON_FIELD.has_default_value = false
+MONSTER_CFG_SHOW_ICON_FIELD.default_value = 0
+MONSTER_CFG_SHOW_ICON_FIELD.type = 5
+MONSTER_CFG_SHOW_ICON_FIELD.cpp_type = 1
+
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.name = "whether_showname"
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.full_name = ".ftcfg.monster_cfg.whether_showname"
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.number = 4
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.index = 3
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.label = 2
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.has_default_value = false
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.default_value = 0
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.type = 5
+MONSTER_CFG_WHETHER_SHOWNAME_FIELD.cpp_type = 1
+
+MONSTER_CFG_MONSTER_DESC_FIELD.name = "monster_desc"
+MONSTER_CFG_MONSTER_DESC_FIELD.full_name = ".ftcfg.monster_cfg.monster_desc"
+MONSTER_CFG_MONSTER_DESC_FIELD.number = 5
+MONSTER_CFG_MONSTER_DESC_FIELD.index = 4
+MONSTER_CFG_MONSTER_DESC_FIELD.label = 2
+MONSTER_CFG_MONSTER_DESC_FIELD.has_default_value = false
+MONSTER_CFG_MONSTER_DESC_FIELD.default_value = 0
+MONSTER_CFG_MONSTER_DESC_FIELD.type = 5
+MONSTER_CFG_MONSTER_DESC_FIELD.cpp_type = 1
+
+MONSTER_CFG_TYPE_FIELD.name = "type"
+MONSTER_CFG_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.type"
+MONSTER_CFG_TYPE_FIELD.number = 6
+MONSTER_CFG_TYPE_FIELD.index = 5
+MONSTER_CFG_TYPE_FIELD.label = 2
+MONSTER_CFG_TYPE_FIELD.has_default_value = false
+MONSTER_CFG_TYPE_FIELD.default_value = 0
+MONSTER_CFG_TYPE_FIELD.type = 5
+MONSTER_CFG_TYPE_FIELD.cpp_type = 1
+
+MONSTER_CFG_CAMP_FIELD.name = "camp"
+MONSTER_CFG_CAMP_FIELD.full_name = ".ftcfg.monster_cfg.camp"
+MONSTER_CFG_CAMP_FIELD.number = 7
+MONSTER_CFG_CAMP_FIELD.index = 6
+MONSTER_CFG_CAMP_FIELD.label = 2
+MONSTER_CFG_CAMP_FIELD.has_default_value = false
+MONSTER_CFG_CAMP_FIELD.default_value = 0
+MONSTER_CFG_CAMP_FIELD.type = 5
+MONSTER_CFG_CAMP_FIELD.cpp_type = 1
+
+MONSTER_CFG_CAMP_RELATION_FIELD.name = "camp_relation"
+MONSTER_CFG_CAMP_RELATION_FIELD.full_name = ".ftcfg.monster_cfg.camp_relation"
+MONSTER_CFG_CAMP_RELATION_FIELD.number = 8
+MONSTER_CFG_CAMP_RELATION_FIELD.index = 7
+MONSTER_CFG_CAMP_RELATION_FIELD.label = 2
+MONSTER_CFG_CAMP_RELATION_FIELD.has_default_value = false
+MONSTER_CFG_CAMP_RELATION_FIELD.default_value = 0
+MONSTER_CFG_CAMP_RELATION_FIELD.type = 5
+MONSTER_CFG_CAMP_RELATION_FIELD.cpp_type = 1
+
+MONSTER_CFG_PROPS_ID_FIELD.name = "props_id"
+MONSTER_CFG_PROPS_ID_FIELD.full_name = ".ftcfg.monster_cfg.props_id"
+MONSTER_CFG_PROPS_ID_FIELD.number = 9
+MONSTER_CFG_PROPS_ID_FIELD.index = 8
+MONSTER_CFG_PROPS_ID_FIELD.label = 2
+MONSTER_CFG_PROPS_ID_FIELD.has_default_value = false
+MONSTER_CFG_PROPS_ID_FIELD.default_value = 0
+MONSTER_CFG_PROPS_ID_FIELD.type = 5
+MONSTER_CFG_PROPS_ID_FIELD.cpp_type = 1
+
+MONSTER_CFG_LEVEL_FIELD.name = "level"
+MONSTER_CFG_LEVEL_FIELD.full_name = ".ftcfg.monster_cfg.level"
+MONSTER_CFG_LEVEL_FIELD.number = 10
+MONSTER_CFG_LEVEL_FIELD.index = 9
+MONSTER_CFG_LEVEL_FIELD.label = 2
+MONSTER_CFG_LEVEL_FIELD.has_default_value = false
+MONSTER_CFG_LEVEL_FIELD.default_value = 0
+MONSTER_CFG_LEVEL_FIELD.type = 5
+MONSTER_CFG_LEVEL_FIELD.cpp_type = 1
+
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.name = "attack_level_limit"
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.monster_cfg.attack_level_limit"
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.number = 11
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.index = 10
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.label = 2
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.has_default_value = false
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.default_value = 0
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.type = 5
+MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.cpp_type = 1
+
+MONSTER_CFG_SKILLS_FIELD.name = "skills"
+MONSTER_CFG_SKILLS_FIELD.full_name = ".ftcfg.monster_cfg.skills"
+MONSTER_CFG_SKILLS_FIELD.number = 12
+MONSTER_CFG_SKILLS_FIELD.index = 11
+MONSTER_CFG_SKILLS_FIELD.label = 3
+MONSTER_CFG_SKILLS_FIELD.has_default_value = false
+MONSTER_CFG_SKILLS_FIELD.default_value = {}
+MONSTER_CFG_SKILLS_FIELD.type = 5
+MONSTER_CFG_SKILLS_FIELD.cpp_type = 1
+
+MONSTER_CFG_AVATAR_FIELD.name = "avatar"
+MONSTER_CFG_AVATAR_FIELD.full_name = ".ftcfg.monster_cfg.avatar"
+MONSTER_CFG_AVATAR_FIELD.number = 13
+MONSTER_CFG_AVATAR_FIELD.index = 12
+MONSTER_CFG_AVATAR_FIELD.label = 2
+MONSTER_CFG_AVATAR_FIELD.has_default_value = false
+MONSTER_CFG_AVATAR_FIELD.default_value = 0
+MONSTER_CFG_AVATAR_FIELD.type = 5
+MONSTER_CFG_AVATAR_FIELD.cpp_type = 1
+
+MONSTER_CFG_AVATAR_SCALE_FIELD.name = "avatar_scale"
+MONSTER_CFG_AVATAR_SCALE_FIELD.full_name = ".ftcfg.monster_cfg.avatar_scale"
+MONSTER_CFG_AVATAR_SCALE_FIELD.number = 14
+MONSTER_CFG_AVATAR_SCALE_FIELD.index = 13
+MONSTER_CFG_AVATAR_SCALE_FIELD.label = 2
+MONSTER_CFG_AVATAR_SCALE_FIELD.has_default_value = false
+MONSTER_CFG_AVATAR_SCALE_FIELD.default_value = 0.0
+MONSTER_CFG_AVATAR_SCALE_FIELD.type = 2
+MONSTER_CFG_AVATAR_SCALE_FIELD.cpp_type = 6
+
+MONSTER_CFG_ACT_IDLE_FIELD.name = "act_idle"
+MONSTER_CFG_ACT_IDLE_FIELD.full_name = ".ftcfg.monster_cfg.act_idle"
+MONSTER_CFG_ACT_IDLE_FIELD.number = 15
+MONSTER_CFG_ACT_IDLE_FIELD.index = 14
+MONSTER_CFG_ACT_IDLE_FIELD.label = 2
+MONSTER_CFG_ACT_IDLE_FIELD.has_default_value = false
+MONSTER_CFG_ACT_IDLE_FIELD.default_value = ""
+MONSTER_CFG_ACT_IDLE_FIELD.type = 9
+MONSTER_CFG_ACT_IDLE_FIELD.cpp_type = 9
+
+MONSTER_CFG_ACT_MOVE_FIELD.name = "act_move"
+MONSTER_CFG_ACT_MOVE_FIELD.full_name = ".ftcfg.monster_cfg.act_move"
+MONSTER_CFG_ACT_MOVE_FIELD.number = 16
+MONSTER_CFG_ACT_MOVE_FIELD.index = 15
+MONSTER_CFG_ACT_MOVE_FIELD.label = 2
+MONSTER_CFG_ACT_MOVE_FIELD.has_default_value = false
+MONSTER_CFG_ACT_MOVE_FIELD.default_value = ""
+MONSTER_CFG_ACT_MOVE_FIELD.type = 9
+MONSTER_CFG_ACT_MOVE_FIELD.cpp_type = 9
+
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.name = "act_idle_battle"
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.full_name = ".ftcfg.monster_cfg.act_idle_battle"
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.number = 17
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.index = 16
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.label = 2
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.has_default_value = false
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.default_value = ""
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.type = 9
+MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.cpp_type = 9
+
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.name = "act_move_battle"
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.full_name = ".ftcfg.monster_cfg.act_move_battle"
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.number = 18
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.index = 17
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.label = 2
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.has_default_value = false
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.default_value = ""
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.type = 9
+MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.cpp_type = 9
+
+MONSTER_CFG_ACT_BORN_FIELD.name = "act_born"
+MONSTER_CFG_ACT_BORN_FIELD.full_name = ".ftcfg.monster_cfg.act_born"
+MONSTER_CFG_ACT_BORN_FIELD.number = 19
+MONSTER_CFG_ACT_BORN_FIELD.index = 18
+MONSTER_CFG_ACT_BORN_FIELD.label = 2
+MONSTER_CFG_ACT_BORN_FIELD.has_default_value = false
+MONSTER_CFG_ACT_BORN_FIELD.default_value = ""
+MONSTER_CFG_ACT_BORN_FIELD.type = 9
+MONSTER_CFG_ACT_BORN_FIELD.cpp_type = 9
+
+MONSTER_CFG_BORN_TIME_FIELD.name = "born_time"
+MONSTER_CFG_BORN_TIME_FIELD.full_name = ".ftcfg.monster_cfg.born_time"
+MONSTER_CFG_BORN_TIME_FIELD.number = 20
+MONSTER_CFG_BORN_TIME_FIELD.index = 19
+MONSTER_CFG_BORN_TIME_FIELD.label = 2
+MONSTER_CFG_BORN_TIME_FIELD.has_default_value = false
+MONSTER_CFG_BORN_TIME_FIELD.default_value = 0.0
+MONSTER_CFG_BORN_TIME_FIELD.type = 1
+MONSTER_CFG_BORN_TIME_FIELD.cpp_type = 5
+
+MONSTER_CFG_ACT_DEAD_FIELD.name = "act_dead"
+MONSTER_CFG_ACT_DEAD_FIELD.full_name = ".ftcfg.monster_cfg.act_dead"
+MONSTER_CFG_ACT_DEAD_FIELD.number = 21
+MONSTER_CFG_ACT_DEAD_FIELD.index = 20
+MONSTER_CFG_ACT_DEAD_FIELD.label = 3
+MONSTER_CFG_ACT_DEAD_FIELD.has_default_value = false
+MONSTER_CFG_ACT_DEAD_FIELD.default_value = {}
+MONSTER_CFG_ACT_DEAD_FIELD.type = 9
+MONSTER_CFG_ACT_DEAD_FIELD.cpp_type = 9
+
+MONSTER_CFG_RANGE_TYPE_FIELD.name = "range_type"
+MONSTER_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.range_type"
+MONSTER_CFG_RANGE_TYPE_FIELD.number = 22
+MONSTER_CFG_RANGE_TYPE_FIELD.index = 21
+MONSTER_CFG_RANGE_TYPE_FIELD.label = 2
+MONSTER_CFG_RANGE_TYPE_FIELD.has_default_value = false
+MONSTER_CFG_RANGE_TYPE_FIELD.default_value = nil
+MONSTER_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
+MONSTER_CFG_RANGE_TYPE_FIELD.type = 14
+MONSTER_CFG_RANGE_TYPE_FIELD.cpp_type = 8
+
+MONSTER_CFG_RANGE_PARA1_FIELD.name = "range_para1"
+MONSTER_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.monster_cfg.range_para1"
+MONSTER_CFG_RANGE_PARA1_FIELD.number = 23
+MONSTER_CFG_RANGE_PARA1_FIELD.index = 22
+MONSTER_CFG_RANGE_PARA1_FIELD.label = 2
+MONSTER_CFG_RANGE_PARA1_FIELD.has_default_value = false
+MONSTER_CFG_RANGE_PARA1_FIELD.default_value = 0.0
+MONSTER_CFG_RANGE_PARA1_FIELD.type = 2
+MONSTER_CFG_RANGE_PARA1_FIELD.cpp_type = 6
+
+MONSTER_CFG_RANGE_PARA2_FIELD.name = "range_para2"
+MONSTER_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.monster_cfg.range_para2"
+MONSTER_CFG_RANGE_PARA2_FIELD.number = 24
+MONSTER_CFG_RANGE_PARA2_FIELD.index = 23
+MONSTER_CFG_RANGE_PARA2_FIELD.label = 2
+MONSTER_CFG_RANGE_PARA2_FIELD.has_default_value = false
+MONSTER_CFG_RANGE_PARA2_FIELD.default_value = 0.0
+MONSTER_CFG_RANGE_PARA2_FIELD.type = 2
+MONSTER_CFG_RANGE_PARA2_FIELD.cpp_type = 6
+
+MONSTER_CFG_DROP_FIELD.name = "drop"
+MONSTER_CFG_DROP_FIELD.full_name = ".ftcfg.monster_cfg.drop"
+MONSTER_CFG_DROP_FIELD.number = 25
+MONSTER_CFG_DROP_FIELD.index = 24
+MONSTER_CFG_DROP_FIELD.label = 2
+MONSTER_CFG_DROP_FIELD.has_default_value = false
+MONSTER_CFG_DROP_FIELD.default_value = 0
+MONSTER_CFG_DROP_FIELD.type = 5
+MONSTER_CFG_DROP_FIELD.cpp_type = 1
+
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.name = "head_portrait"
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.full_name = ".ftcfg.monster_cfg.head_portrait"
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.number = 26
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.index = 25
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.label = 2
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.has_default_value = false
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.default_value = 0
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.type = 5
+MONSTER_CFG_HEAD_PORTRAIT_FIELD.cpp_type = 1
+
+MONSTER_CFG_RADIUS_FIELD.name = "radius"
+MONSTER_CFG_RADIUS_FIELD.full_name = ".ftcfg.monster_cfg.radius"
+MONSTER_CFG_RADIUS_FIELD.number = 27
+MONSTER_CFG_RADIUS_FIELD.index = 26
+MONSTER_CFG_RADIUS_FIELD.label = 2
+MONSTER_CFG_RADIUS_FIELD.has_default_value = false
+MONSTER_CFG_RADIUS_FIELD.default_value = 0.0
+MONSTER_CFG_RADIUS_FIELD.type = 2
+MONSTER_CFG_RADIUS_FIELD.cpp_type = 6
+
+MONSTER_CFG_MONSTER_TYPE_FIELD.name = "monster_type"
+MONSTER_CFG_MONSTER_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.monster_type"
+MONSTER_CFG_MONSTER_TYPE_FIELD.number = 28
+MONSTER_CFG_MONSTER_TYPE_FIELD.index = 27
+MONSTER_CFG_MONSTER_TYPE_FIELD.label = 2
+MONSTER_CFG_MONSTER_TYPE_FIELD.has_default_value = false
+MONSTER_CFG_MONSTER_TYPE_FIELD.default_value = 0
+MONSTER_CFG_MONSTER_TYPE_FIELD.type = 5
+MONSTER_CFG_MONSTER_TYPE_FIELD.cpp_type = 1
+
+MONSTER_CFG_LOCK_SIZE_FIELD.name = "lock_size"
+MONSTER_CFG_LOCK_SIZE_FIELD.full_name = ".ftcfg.monster_cfg.lock_size"
+MONSTER_CFG_LOCK_SIZE_FIELD.number = 29
+MONSTER_CFG_LOCK_SIZE_FIELD.index = 28
+MONSTER_CFG_LOCK_SIZE_FIELD.label = 2
+MONSTER_CFG_LOCK_SIZE_FIELD.has_default_value = false
+MONSTER_CFG_LOCK_SIZE_FIELD.default_value = 0.0
+MONSTER_CFG_LOCK_SIZE_FIELD.type = 2
+MONSTER_CFG_LOCK_SIZE_FIELD.cpp_type = 6
+
+MONSTER_CFG_HALO_SWITCH_FIELD.name = "halo_switch"
+MONSTER_CFG_HALO_SWITCH_FIELD.full_name = ".ftcfg.monster_cfg.halo_switch"
+MONSTER_CFG_HALO_SWITCH_FIELD.number = 30
+MONSTER_CFG_HALO_SWITCH_FIELD.index = 29
+MONSTER_CFG_HALO_SWITCH_FIELD.label = 2
+MONSTER_CFG_HALO_SWITCH_FIELD.has_default_value = false
+MONSTER_CFG_HALO_SWITCH_FIELD.default_value = 0.0
+MONSTER_CFG_HALO_SWITCH_FIELD.type = 2
+MONSTER_CFG_HALO_SWITCH_FIELD.cpp_type = 6
+
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.name = "activity_exclusive"
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.full_name = ".ftcfg.monster_cfg.activity_exclusive"
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.number = 31
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.index = 30
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.label = 2
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.has_default_value = false
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.default_value = 0
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.type = 5
+MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.cpp_type = 1
+
+MONSTER_CFG.name = "monster_cfg"
+MONSTER_CFG.full_name = ".ftcfg.monster_cfg"
+MONSTER_CFG.nested_types = {}
+MONSTER_CFG.enum_types = {}
+MONSTER_CFG.fields = {MONSTER_CFG_ID_FIELD, MONSTER_CFG_SHOW_NAME_FIELD, MONSTER_CFG_SHOW_ICON_FIELD, MONSTER_CFG_WHETHER_SHOWNAME_FIELD, MONSTER_CFG_MONSTER_DESC_FIELD, MONSTER_CFG_TYPE_FIELD, MONSTER_CFG_CAMP_FIELD, MONSTER_CFG_CAMP_RELATION_FIELD, MONSTER_CFG_PROPS_ID_FIELD, MONSTER_CFG_LEVEL_FIELD, MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD, MONSTER_CFG_SKILLS_FIELD, MONSTER_CFG_AVATAR_FIELD, MONSTER_CFG_AVATAR_SCALE_FIELD, MONSTER_CFG_ACT_IDLE_FIELD, MONSTER_CFG_ACT_MOVE_FIELD, MONSTER_CFG_ACT_IDLE_BATTLE_FIELD, MONSTER_CFG_ACT_MOVE_BATTLE_FIELD, MONSTER_CFG_ACT_BORN_FIELD, MONSTER_CFG_BORN_TIME_FIELD, MONSTER_CFG_ACT_DEAD_FIELD, MONSTER_CFG_RANGE_TYPE_FIELD, MONSTER_CFG_RANGE_PARA1_FIELD, MONSTER_CFG_RANGE_PARA2_FIELD, MONSTER_CFG_DROP_FIELD, MONSTER_CFG_HEAD_PORTRAIT_FIELD, MONSTER_CFG_RADIUS_FIELD, MONSTER_CFG_MONSTER_TYPE_FIELD, MONSTER_CFG_LOCK_SIZE_FIELD, MONSTER_CFG_HALO_SWITCH_FIELD, MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD}
+MONSTER_CFG.is_extendable = false
+MONSTER_CFG.extensions = {}
+MONSTER_CFGS_ITEMS_FIELD.name = "items"
+MONSTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.monster_cfgs.items"
+MONSTER_CFGS_ITEMS_FIELD.number = 1
+MONSTER_CFGS_ITEMS_FIELD.index = 0
+MONSTER_CFGS_ITEMS_FIELD.label = 3
+MONSTER_CFGS_ITEMS_FIELD.has_default_value = false
+MONSTER_CFGS_ITEMS_FIELD.default_value = {}
+MONSTER_CFGS_ITEMS_FIELD.message_type = MONSTER_CFG
+MONSTER_CFGS_ITEMS_FIELD.type = 11
+MONSTER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MONSTER_CFGS.name = "monster_cfgs"
+MONSTER_CFGS.full_name = ".ftcfg.monster_cfgs"
+MONSTER_CFGS.nested_types = {}
+MONSTER_CFGS.enum_types = {}
+MONSTER_CFGS.fields = {MONSTER_CFGS_ITEMS_FIELD}
+MONSTER_CFGS.is_extendable = false
+MONSTER_CFGS.extensions = {}
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.name = "guid"
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.full_name = ".ftcfg.business_activity_cfg.guid"
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.number = 1
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.index = 0
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.label = 2
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.has_default_value = false
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.default_value = 0
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.type = 13
+BUSINESS_ACTIVITY_CFG_GUID_FIELD.cpp_type = 3
+
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.name = "business_id"
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.full_name = ".ftcfg.business_activity_cfg.business_id"
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.number = 2
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.index = 1
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.label = 2
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.has_default_value = false
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.default_value = 0
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.type = 13
+BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.cpp_type = 3
+
+BUSINESS_ACTIVITY_CFG.name = "business_activity_cfg"
+BUSINESS_ACTIVITY_CFG.full_name = ".ftcfg.business_activity_cfg"
+BUSINESS_ACTIVITY_CFG.nested_types = {}
+BUSINESS_ACTIVITY_CFG.enum_types = {}
+BUSINESS_ACTIVITY_CFG.fields = {BUSINESS_ACTIVITY_CFG_GUID_FIELD, BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD}
+BUSINESS_ACTIVITY_CFG.is_extendable = false
+BUSINESS_ACTIVITY_CFG.extensions = {}
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.name = "items"
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.business_activity_cfgs.items"
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.number = 1
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.index = 0
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.label = 3
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.has_default_value = false
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.default_value = {}
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.message_type = BUSINESS_ACTIVITY_CFG
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.type = 11
+BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BUSINESS_ACTIVITY_CFGS.name = "business_activity_cfgs"
+BUSINESS_ACTIVITY_CFGS.full_name = ".ftcfg.business_activity_cfgs"
+BUSINESS_ACTIVITY_CFGS.nested_types = {}
+BUSINESS_ACTIVITY_CFGS.enum_types = {}
+BUSINESS_ACTIVITY_CFGS.fields = {BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD}
+BUSINESS_ACTIVITY_CFGS.is_extendable = false
+BUSINESS_ACTIVITY_CFGS.extensions = {}
+ACTIVITY_CFG_GUID_FIELD.name = "guid"
+ACTIVITY_CFG_GUID_FIELD.full_name = ".ftcfg.activity_cfg.guid"
+ACTIVITY_CFG_GUID_FIELD.number = 1
+ACTIVITY_CFG_GUID_FIELD.index = 0
+ACTIVITY_CFG_GUID_FIELD.label = 2
+ACTIVITY_CFG_GUID_FIELD.has_default_value = false
+ACTIVITY_CFG_GUID_FIELD.default_value = 0
+ACTIVITY_CFG_GUID_FIELD.type = 13
+ACTIVITY_CFG_GUID_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.name = "dactivity_name"
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.full_name = ".ftcfg.activity_cfg.dactivity_name"
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.number = 2
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.index = 1
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.label = 2
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.has_default_value = false
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.default_value = 0
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.type = 5
+ACTIVITY_CFG_DACTIVITY_NAME_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_NAME_FIELD.name = "name"
+ACTIVITY_CFG_NAME_FIELD.full_name = ".ftcfg.activity_cfg.name"
+ACTIVITY_CFG_NAME_FIELD.number = 3
+ACTIVITY_CFG_NAME_FIELD.index = 2
+ACTIVITY_CFG_NAME_FIELD.label = 2
+ACTIVITY_CFG_NAME_FIELD.has_default_value = false
+ACTIVITY_CFG_NAME_FIELD.default_value = ""
+ACTIVITY_CFG_NAME_FIELD.type = 9
+ACTIVITY_CFG_NAME_FIELD.cpp_type = 9
+
+ACTIVITY_CFG_TYPE_FIELD.name = "type"
+ACTIVITY_CFG_TYPE_FIELD.full_name = ".ftcfg.activity_cfg.type"
+ACTIVITY_CFG_TYPE_FIELD.number = 4
+ACTIVITY_CFG_TYPE_FIELD.index = 3
+ACTIVITY_CFG_TYPE_FIELD.label = 2
+ACTIVITY_CFG_TYPE_FIELD.has_default_value = false
+ACTIVITY_CFG_TYPE_FIELD.default_value = 0
+ACTIVITY_CFG_TYPE_FIELD.type = 13
+ACTIVITY_CFG_TYPE_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.name = "activity_play"
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.full_name = ".ftcfg.activity_cfg.activity_play"
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.number = 5
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.index = 4
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.label = 2
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.has_default_value = false
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.default_value = 0
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.type = 13
+ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_NEED_LEVEL_FIELD.name = "need_level"
+ACTIVITY_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.activity_cfg.need_level"
+ACTIVITY_CFG_NEED_LEVEL_FIELD.number = 6
+ACTIVITY_CFG_NEED_LEVEL_FIELD.index = 5
+ACTIVITY_CFG_NEED_LEVEL_FIELD.label = 2
+ACTIVITY_CFG_NEED_LEVEL_FIELD.has_default_value = false
+ACTIVITY_CFG_NEED_LEVEL_FIELD.default_value = 0
+ACTIVITY_CFG_NEED_LEVEL_FIELD.type = 13
+ACTIVITY_CFG_NEED_LEVEL_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.name = "total_times"
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.full_name = ".ftcfg.activity_cfg.total_times"
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.number = 7
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.index = 6
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.label = 2
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.has_default_value = false
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.default_value = 0
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.type = 13
+ACTIVITY_CFG_TOTAL_TIMES_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.name = "activation_point"
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.full_name = ".ftcfg.activity_cfg.activation_point"
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.number = 8
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.index = 7
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.label = 2
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.has_default_value = false
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.default_value = 0
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.type = 13
+ACTIVITY_CFG_ACTIVATION_POINT_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.name = "activation_toplimit"
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.full_name = ".ftcfg.activity_cfg.activation_toplimit"
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.number = 9
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.index = 8
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.label = 2
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.has_default_value = false
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.default_value = 0
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.type = 13
+ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.name = "activation_mode"
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.full_name = ".ftcfg.activity_cfg.activation_mode"
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.number = 10
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.index = 9
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.label = 2
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.has_default_value = false
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.default_value = 0
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.type = 13
+ACTIVITY_CFG_ACTIVATION_MODE_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_START_WEEKS_FIELD.name = "start_weeks"
+ACTIVITY_CFG_START_WEEKS_FIELD.full_name = ".ftcfg.activity_cfg.start_weeks"
+ACTIVITY_CFG_START_WEEKS_FIELD.number = 11
+ACTIVITY_CFG_START_WEEKS_FIELD.index = 10
+ACTIVITY_CFG_START_WEEKS_FIELD.label = 3
+ACTIVITY_CFG_START_WEEKS_FIELD.has_default_value = false
+ACTIVITY_CFG_START_WEEKS_FIELD.default_value = {}
+ACTIVITY_CFG_START_WEEKS_FIELD.type = 13
+ACTIVITY_CFG_START_WEEKS_FIELD.cpp_type = 3
+
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.name = "signup_time"
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.full_name = ".ftcfg.activity_cfg.signup_time"
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.number = 12
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.index = 11
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.label = 3
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.has_default_value = false
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.default_value = {}
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.type = 9
+ACTIVITY_CFG_SIGNUP_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.name = "signdown_time"
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.full_name = ".ftcfg.activity_cfg.signdown_time"
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.number = 13
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.index = 12
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.label = 3
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.has_default_value = false
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.default_value = {}
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.type = 9
+ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_CFG_BEGIN_TIME_FIELD.name = "begin_time"
+ACTIVITY_CFG_BEGIN_TIME_FIELD.full_name = ".ftcfg.activity_cfg.begin_time"
+ACTIVITY_CFG_BEGIN_TIME_FIELD.number = 14
+ACTIVITY_CFG_BEGIN_TIME_FIELD.index = 13
+ACTIVITY_CFG_BEGIN_TIME_FIELD.label = 3
+ACTIVITY_CFG_BEGIN_TIME_FIELD.has_default_value = false
+ACTIVITY_CFG_BEGIN_TIME_FIELD.default_value = {}
+ACTIVITY_CFG_BEGIN_TIME_FIELD.type = 9
+ACTIVITY_CFG_BEGIN_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_CFG_END_TIME_FIELD.name = "end_time"
+ACTIVITY_CFG_END_TIME_FIELD.full_name = ".ftcfg.activity_cfg.end_time"
+ACTIVITY_CFG_END_TIME_FIELD.number = 15
+ACTIVITY_CFG_END_TIME_FIELD.index = 14
+ACTIVITY_CFG_END_TIME_FIELD.label = 3
+ACTIVITY_CFG_END_TIME_FIELD.has_default_value = false
+ACTIVITY_CFG_END_TIME_FIELD.default_value = {}
+ACTIVITY_CFG_END_TIME_FIELD.type = 9
+ACTIVITY_CFG_END_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_CFG_DAILY_TYPE_FIELD.name = "daily_type"
+ACTIVITY_CFG_DAILY_TYPE_FIELD.full_name = ".ftcfg.activity_cfg.daily_type"
+ACTIVITY_CFG_DAILY_TYPE_FIELD.number = 16
+ACTIVITY_CFG_DAILY_TYPE_FIELD.index = 15
+ACTIVITY_CFG_DAILY_TYPE_FIELD.label = 2
+ACTIVITY_CFG_DAILY_TYPE_FIELD.has_default_value = false
+ACTIVITY_CFG_DAILY_TYPE_FIELD.default_value = 0
+ACTIVITY_CFG_DAILY_TYPE_FIELD.type = 5
+ACTIVITY_CFG_DAILY_TYPE_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.name = "whether_battle"
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.full_name = ".ftcfg.activity_cfg.whether_battle"
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.number = 17
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.index = 16
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.label = 2
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.has_default_value = false
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.default_value = 0
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.type = 5
+ACTIVITY_CFG_WHETHER_BATTLE_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.name = "dactivity_icon"
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.full_name = ".ftcfg.activity_cfg.dactivity_icon"
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.number = 18
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.index = 17
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.label = 2
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.has_default_value = false
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.default_value = 0
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.type = 5
+ACTIVITY_CFG_DACTIVITY_ICON_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.name = "partake_mode"
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.full_name = ".ftcfg.activity_cfg.partake_mode"
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.number = 19
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.index = 18
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.label = 2
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.has_default_value = false
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.default_value = 0
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.type = 5
+ACTIVITY_CFG_PARTAKE_MODE_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.name = "partake_subtype"
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.full_name = ".ftcfg.activity_cfg.partake_subtype"
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.number = 20
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.index = 19
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.label = 2
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.has_default_value = false
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.default_value = 0
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.type = 5
+ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.name = "ticketitem_id"
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.full_name = ".ftcfg.activity_cfg.ticketitem_id"
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.number = 21
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.index = 20
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.label = 2
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.has_default_value = false
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.default_value = 0
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.type = 5
+ACTIVITY_CFG_TICKETITEM_ID_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.name = "ticketitem_count"
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.full_name = ".ftcfg.activity_cfg.ticketitem_count"
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.number = 22
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.index = 21
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.label = 2
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.has_default_value = false
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.default_value = 0
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.type = 5
+ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.name = "conduct_sceneid"
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.full_name = ".ftcfg.activity_cfg.conduct_sceneid"
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.number = 23
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.index = 22
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.label = 2
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.has_default_value = false
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.default_value = 0
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.type = 5
+ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_FINDING_PATH_FIELD.name = "finding_path"
+ACTIVITY_CFG_FINDING_PATH_FIELD.full_name = ".ftcfg.activity_cfg.finding_path"
+ACTIVITY_CFG_FINDING_PATH_FIELD.number = 24
+ACTIVITY_CFG_FINDING_PATH_FIELD.index = 23
+ACTIVITY_CFG_FINDING_PATH_FIELD.label = 2
+ACTIVITY_CFG_FINDING_PATH_FIELD.has_default_value = false
+ACTIVITY_CFG_FINDING_PATH_FIELD.default_value = 0
+ACTIVITY_CFG_FINDING_PATH_FIELD.type = 5
+ACTIVITY_CFG_FINDING_PATH_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_OPEN_FUNC_FIELD.name = "open_func"
+ACTIVITY_CFG_OPEN_FUNC_FIELD.full_name = ".ftcfg.activity_cfg.open_func"
+ACTIVITY_CFG_OPEN_FUNC_FIELD.number = 25
+ACTIVITY_CFG_OPEN_FUNC_FIELD.index = 24
+ACTIVITY_CFG_OPEN_FUNC_FIELD.label = 2
+ACTIVITY_CFG_OPEN_FUNC_FIELD.has_default_value = false
+ACTIVITY_CFG_OPEN_FUNC_FIELD.default_value = nil
+ACTIVITY_CFG_OPEN_FUNC_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+ACTIVITY_CFG_OPEN_FUNC_FIELD.type = 14
+ACTIVITY_CFG_OPEN_FUNC_FIELD.cpp_type = 8
+
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.name = "open_func_param"
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.full_name = ".ftcfg.activity_cfg.open_func_param"
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.number = 26
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.index = 25
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.label = 2
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.has_default_value = false
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.default_value = 0
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.type = 5
+ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_ITEM_ID_FIELD.name = "item_id"
+ACTIVITY_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.activity_cfg.item_id"
+ACTIVITY_CFG_ITEM_ID_FIELD.number = 27
+ACTIVITY_CFG_ITEM_ID_FIELD.index = 26
+ACTIVITY_CFG_ITEM_ID_FIELD.label = 2
+ACTIVITY_CFG_ITEM_ID_FIELD.has_default_value = false
+ACTIVITY_CFG_ITEM_ID_FIELD.default_value = 0
+ACTIVITY_CFG_ITEM_ID_FIELD.type = 5
+ACTIVITY_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_ITEM_COUNT_FIELD.name = "item_count"
+ACTIVITY_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.activity_cfg.item_count"
+ACTIVITY_CFG_ITEM_COUNT_FIELD.number = 28
+ACTIVITY_CFG_ITEM_COUNT_FIELD.index = 27
+ACTIVITY_CFG_ITEM_COUNT_FIELD.label = 2
+ACTIVITY_CFG_ITEM_COUNT_FIELD.has_default_value = false
+ACTIVITY_CFG_ITEM_COUNT_FIELD.default_value = 0
+ACTIVITY_CFG_ITEM_COUNT_FIELD.type = 5
+ACTIVITY_CFG_ITEM_COUNT_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_TIME_SHOW_FIELD.name = "time_show"
+ACTIVITY_CFG_TIME_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.time_show"
+ACTIVITY_CFG_TIME_SHOW_FIELD.number = 29
+ACTIVITY_CFG_TIME_SHOW_FIELD.index = 28
+ACTIVITY_CFG_TIME_SHOW_FIELD.label = 2
+ACTIVITY_CFG_TIME_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_TIME_SHOW_FIELD.default_value = 0
+ACTIVITY_CFG_TIME_SHOW_FIELD.type = 5
+ACTIVITY_CFG_TIME_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_FORM_SHOW_FIELD.name = "form_show"
+ACTIVITY_CFG_FORM_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.form_show"
+ACTIVITY_CFG_FORM_SHOW_FIELD.number = 30
+ACTIVITY_CFG_FORM_SHOW_FIELD.index = 29
+ACTIVITY_CFG_FORM_SHOW_FIELD.label = 2
+ACTIVITY_CFG_FORM_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_FORM_SHOW_FIELD.default_value = 0
+ACTIVITY_CFG_FORM_SHOW_FIELD.type = 5
+ACTIVITY_CFG_FORM_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_TIPS_SHOW_FIELD.name = "tips_show"
+ACTIVITY_CFG_TIPS_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.tips_show"
+ACTIVITY_CFG_TIPS_SHOW_FIELD.number = 31
+ACTIVITY_CFG_TIPS_SHOW_FIELD.index = 30
+ACTIVITY_CFG_TIPS_SHOW_FIELD.label = 2
+ACTIVITY_CFG_TIPS_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_TIPS_SHOW_FIELD.default_value = 0
+ACTIVITY_CFG_TIPS_SHOW_FIELD.type = 5
+ACTIVITY_CFG_TIPS_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.name = "crystal_show"
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.crystal_show"
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.number = 32
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.index = 31
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.label = 3
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.default_value = {}
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.type = 5
+ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.name = "items_show"
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.items_show"
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.number = 33
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.index = 32
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.label = 3
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.default_value = {}
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.type = 5
+ACTIVITY_CFG_ITEMS_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_CUE_SHOW_FIELD.name = "cue_show"
+ACTIVITY_CFG_CUE_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.cue_show"
+ACTIVITY_CFG_CUE_SHOW_FIELD.number = 34
+ACTIVITY_CFG_CUE_SHOW_FIELD.index = 33
+ACTIVITY_CFG_CUE_SHOW_FIELD.label = 2
+ACTIVITY_CFG_CUE_SHOW_FIELD.has_default_value = false
+ACTIVITY_CFG_CUE_SHOW_FIELD.default_value = 0
+ACTIVITY_CFG_CUE_SHOW_FIELD.type = 5
+ACTIVITY_CFG_CUE_SHOW_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_CUE_TEXT_FIELD.name = "cue_text"
+ACTIVITY_CFG_CUE_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.cue_text"
+ACTIVITY_CFG_CUE_TEXT_FIELD.number = 35
+ACTIVITY_CFG_CUE_TEXT_FIELD.index = 34
+ACTIVITY_CFG_CUE_TEXT_FIELD.label = 2
+ACTIVITY_CFG_CUE_TEXT_FIELD.has_default_value = false
+ACTIVITY_CFG_CUE_TEXT_FIELD.default_value = 0
+ACTIVITY_CFG_CUE_TEXT_FIELD.type = 5
+ACTIVITY_CFG_CUE_TEXT_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.name = "correct_text"
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.correct_text"
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.number = 36
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.index = 35
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.label = 2
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.has_default_value = false
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.default_value = 0
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.type = 5
+ACTIVITY_CFG_CORRECT_TEXT_FIELD.cpp_type = 1
+
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.name = "negate_text"
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.negate_text"
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.number = 37
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.index = 36
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.label = 2
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.has_default_value = false
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.default_value = 0
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.type = 5
+ACTIVITY_CFG_NEGATE_TEXT_FIELD.cpp_type = 1
+
+ACTIVITY_CFG.name = "activity_cfg"
+ACTIVITY_CFG.full_name = ".ftcfg.activity_cfg"
+ACTIVITY_CFG.nested_types = {}
+ACTIVITY_CFG.enum_types = {}
+ACTIVITY_CFG.fields = {ACTIVITY_CFG_GUID_FIELD, ACTIVITY_CFG_DACTIVITY_NAME_FIELD, ACTIVITY_CFG_NAME_FIELD, ACTIVITY_CFG_TYPE_FIELD, ACTIVITY_CFG_ACTIVITY_PLAY_FIELD, ACTIVITY_CFG_NEED_LEVEL_FIELD, ACTIVITY_CFG_TOTAL_TIMES_FIELD, ACTIVITY_CFG_ACTIVATION_POINT_FIELD, ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD, ACTIVITY_CFG_ACTIVATION_MODE_FIELD, ACTIVITY_CFG_START_WEEKS_FIELD, ACTIVITY_CFG_SIGNUP_TIME_FIELD, ACTIVITY_CFG_SIGNDOWN_TIME_FIELD, ACTIVITY_CFG_BEGIN_TIME_FIELD, ACTIVITY_CFG_END_TIME_FIELD, ACTIVITY_CFG_DAILY_TYPE_FIELD, ACTIVITY_CFG_WHETHER_BATTLE_FIELD, ACTIVITY_CFG_DACTIVITY_ICON_FIELD, ACTIVITY_CFG_PARTAKE_MODE_FIELD, ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD, ACTIVITY_CFG_TICKETITEM_ID_FIELD, ACTIVITY_CFG_TICKETITEM_COUNT_FIELD, ACTIVITY_CFG_CONDUCT_SCENEID_FIELD, ACTIVITY_CFG_FINDING_PATH_FIELD, ACTIVITY_CFG_OPEN_FUNC_FIELD, ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD, ACTIVITY_CFG_ITEM_ID_FIELD, ACTIVITY_CFG_ITEM_COUNT_FIELD, ACTIVITY_CFG_TIME_SHOW_FIELD, ACTIVITY_CFG_FORM_SHOW_FIELD, ACTIVITY_CFG_TIPS_SHOW_FIELD, ACTIVITY_CFG_CRYSTAL_SHOW_FIELD, ACTIVITY_CFG_ITEMS_SHOW_FIELD, ACTIVITY_CFG_CUE_SHOW_FIELD, ACTIVITY_CFG_CUE_TEXT_FIELD, ACTIVITY_CFG_CORRECT_TEXT_FIELD, ACTIVITY_CFG_NEGATE_TEXT_FIELD}
+ACTIVITY_CFG.is_extendable = false
+ACTIVITY_CFG.extensions = {}
+ACTIVITY_CFGS_ITEMS_FIELD.name = "items"
+ACTIVITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_cfgs.items"
+ACTIVITY_CFGS_ITEMS_FIELD.number = 1
+ACTIVITY_CFGS_ITEMS_FIELD.index = 0
+ACTIVITY_CFGS_ITEMS_FIELD.label = 3
+ACTIVITY_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVITY_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVITY_CFGS_ITEMS_FIELD.message_type = ACTIVITY_CFG
+ACTIVITY_CFGS_ITEMS_FIELD.type = 11
+ACTIVITY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVITY_CFGS.name = "activity_cfgs"
+ACTIVITY_CFGS.full_name = ".ftcfg.activity_cfgs"
+ACTIVITY_CFGS.nested_types = {}
+ACTIVITY_CFGS.enum_types = {}
+ACTIVITY_CFGS.fields = {ACTIVITY_CFGS_ITEMS_FIELD}
+ACTIVITY_CFGS.is_extendable = false
+ACTIVITY_CFGS.extensions = {}
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.name = "everyday_toplimit"
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.full_name = ".ftcfg.activation_cfg.everyday_toplimit"
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.number = 1
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.index = 0
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.label = 2
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.has_default_value = false
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.default_value = 0
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.type = 13
+ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.cpp_type = 3
+
+ACTIVATION_CFG_RESET_TIME_FIELD.name = "reset_time"
+ACTIVATION_CFG_RESET_TIME_FIELD.full_name = ".ftcfg.activation_cfg.reset_time"
+ACTIVATION_CFG_RESET_TIME_FIELD.number = 2
+ACTIVATION_CFG_RESET_TIME_FIELD.index = 1
+ACTIVATION_CFG_RESET_TIME_FIELD.label = 3
+ACTIVATION_CFG_RESET_TIME_FIELD.has_default_value = false
+ACTIVATION_CFG_RESET_TIME_FIELD.default_value = {}
+ACTIVATION_CFG_RESET_TIME_FIELD.type = 9
+ACTIVATION_CFG_RESET_TIME_FIELD.cpp_type = 9
+
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.name = "deposit_lv"
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.full_name = ".ftcfg.activation_cfg.deposit_lv"
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.number = 3
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.index = 2
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.label = 3
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.has_default_value = false
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.default_value = {}
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.type = 13
+ACTIVATION_CFG_DEPOSIT_LV_FIELD.cpp_type = 3
+
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.name = "deposit_toplimit"
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.full_name = ".ftcfg.activation_cfg.deposit_toplimit"
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.number = 4
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.index = 3
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.label = 3
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.has_default_value = false
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.default_value = {}
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.type = 13
+ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.cpp_type = 3
+
+ACTIVATION_CFG.name = "activation_cfg"
+ACTIVATION_CFG.full_name = ".ftcfg.activation_cfg"
+ACTIVATION_CFG.nested_types = {}
+ACTIVATION_CFG.enum_types = {}
+ACTIVATION_CFG.fields = {ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD, ACTIVATION_CFG_RESET_TIME_FIELD, ACTIVATION_CFG_DEPOSIT_LV_FIELD, ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD}
+ACTIVATION_CFG.is_extendable = false
+ACTIVATION_CFG.extensions = {}
+ACTIVATION_CFGS_ITEMS_FIELD.name = "items"
+ACTIVATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activation_cfgs.items"
+ACTIVATION_CFGS_ITEMS_FIELD.number = 1
+ACTIVATION_CFGS_ITEMS_FIELD.index = 0
+ACTIVATION_CFGS_ITEMS_FIELD.label = 3
+ACTIVATION_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVATION_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVATION_CFGS_ITEMS_FIELD.message_type = ACTIVATION_CFG
+ACTIVATION_CFGS_ITEMS_FIELD.type = 11
+ACTIVATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVATION_CFGS.name = "activation_cfgs"
+ACTIVATION_CFGS.full_name = ".ftcfg.activation_cfgs"
+ACTIVATION_CFGS.nested_types = {}
+ACTIVATION_CFGS.enum_types = {}
+ACTIVATION_CFGS.fields = {ACTIVATION_CFGS_ITEMS_FIELD}
+ACTIVATION_CFGS.is_extendable = false
+ACTIVATION_CFGS.extensions = {}
+ACTIVATION_REWARD_CFG_ID_FIELD.name = "id"
+ACTIVATION_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.id"
+ACTIVATION_REWARD_CFG_ID_FIELD.number = 1
+ACTIVATION_REWARD_CFG_ID_FIELD.index = 0
+ACTIVATION_REWARD_CFG_ID_FIELD.label = 2
+ACTIVATION_REWARD_CFG_ID_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_ID_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_ID_FIELD.type = 13
+ACTIVATION_REWARD_CFG_ID_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.name = "activation_stage"
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.full_name = ".ftcfg.activation_reward_cfg.activation_stage"
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.number = 2
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.index = 1
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.label = 2
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.type = 13
+ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.name = "reward_attribute_id"
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_attribute_id"
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.number = 3
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.index = 2
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.label = 2
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.type = 13
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_attribute_count"
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 4
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 3
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 2
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 13
+ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.name = "reward_item_id"
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_item_id"
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.number = 5
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.index = 4
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.label = 2
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.type = 13
+ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.name = "reward_item_count"
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_item_count"
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.number = 6
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.index = 5
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.label = 2
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.type = 13
+ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.name = "reward_plus"
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_plus"
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.number = 7
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.index = 6
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.label = 2
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.default_value = 0
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.type = 13
+ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.cpp_type = 3
+
+ACTIVATION_REWARD_CFG.name = "activation_reward_cfg"
+ACTIVATION_REWARD_CFG.full_name = ".ftcfg.activation_reward_cfg"
+ACTIVATION_REWARD_CFG.nested_types = {}
+ACTIVATION_REWARD_CFG.enum_types = {}
+ACTIVATION_REWARD_CFG.fields = {ACTIVATION_REWARD_CFG_ID_FIELD, ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD, ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD, ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD, ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD, ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD}
+ACTIVATION_REWARD_CFG.is_extendable = false
+ACTIVATION_REWARD_CFG.extensions = {}
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.name = "items"
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activation_reward_cfgs.items"
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.number = 1
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.index = 0
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.label = 3
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.message_type = ACTIVATION_REWARD_CFG
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.type = 11
+ACTIVATION_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVATION_REWARD_CFGS.name = "activation_reward_cfgs"
+ACTIVATION_REWARD_CFGS.full_name = ".ftcfg.activation_reward_cfgs"
+ACTIVATION_REWARD_CFGS.nested_types = {}
+ACTIVATION_REWARD_CFGS.enum_types = {}
+ACTIVATION_REWARD_CFGS.fields = {ACTIVATION_REWARD_CFGS_ITEMS_FIELD}
+ACTIVATION_REWARD_CFGS.is_extendable = false
+ACTIVATION_REWARD_CFGS.extensions = {}
+TRADE_TOP_TABS_CFG_ID_FIELD.name = "id"
+TRADE_TOP_TABS_CFG_ID_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.id"
+TRADE_TOP_TABS_CFG_ID_FIELD.number = 1
+TRADE_TOP_TABS_CFG_ID_FIELD.index = 0
+TRADE_TOP_TABS_CFG_ID_FIELD.label = 2
+TRADE_TOP_TABS_CFG_ID_FIELD.has_default_value = false
+TRADE_TOP_TABS_CFG_ID_FIELD.default_value = 0
+TRADE_TOP_TABS_CFG_ID_FIELD.type = 5
+TRADE_TOP_TABS_CFG_ID_FIELD.cpp_type = 1
+
+TRADE_TOP_TABS_CFG_NAME_FIELD.name = "name"
+TRADE_TOP_TABS_CFG_NAME_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.name"
+TRADE_TOP_TABS_CFG_NAME_FIELD.number = 2
+TRADE_TOP_TABS_CFG_NAME_FIELD.index = 1
+TRADE_TOP_TABS_CFG_NAME_FIELD.label = 2
+TRADE_TOP_TABS_CFG_NAME_FIELD.has_default_value = false
+TRADE_TOP_TABS_CFG_NAME_FIELD.default_value = ""
+TRADE_TOP_TABS_CFG_NAME_FIELD.type = 9
+TRADE_TOP_TABS_CFG_NAME_FIELD.cpp_type = 9
+
+TRADE_TOP_TABS_CFG_TABS_FIELD.name = "tabs"
+TRADE_TOP_TABS_CFG_TABS_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.tabs"
+TRADE_TOP_TABS_CFG_TABS_FIELD.number = 3
+TRADE_TOP_TABS_CFG_TABS_FIELD.index = 2
+TRADE_TOP_TABS_CFG_TABS_FIELD.label = 3
+TRADE_TOP_TABS_CFG_TABS_FIELD.has_default_value = false
+TRADE_TOP_TABS_CFG_TABS_FIELD.default_value = {}
+TRADE_TOP_TABS_CFG_TABS_FIELD.type = 5
+TRADE_TOP_TABS_CFG_TABS_FIELD.cpp_type = 1
+
+TRADE_TOP_TABS_CFG.name = "trade_top_tabs_cfg"
+TRADE_TOP_TABS_CFG.full_name = ".ftcfg.trade_top_tabs_cfg"
+TRADE_TOP_TABS_CFG.nested_types = {}
+TRADE_TOP_TABS_CFG.enum_types = {}
+TRADE_TOP_TABS_CFG.fields = {TRADE_TOP_TABS_CFG_ID_FIELD, TRADE_TOP_TABS_CFG_NAME_FIELD, TRADE_TOP_TABS_CFG_TABS_FIELD}
+TRADE_TOP_TABS_CFG.is_extendable = false
+TRADE_TOP_TABS_CFG.extensions = {}
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.name = "items"
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_top_tabs_cfgs.items"
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.number = 1
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.index = 0
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.label = 3
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.has_default_value = false
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.default_value = {}
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.message_type = TRADE_TOP_TABS_CFG
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.type = 11
+TRADE_TOP_TABS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRADE_TOP_TABS_CFGS.name = "trade_top_tabs_cfgs"
+TRADE_TOP_TABS_CFGS.full_name = ".ftcfg.trade_top_tabs_cfgs"
+TRADE_TOP_TABS_CFGS.nested_types = {}
+TRADE_TOP_TABS_CFGS.enum_types = {}
+TRADE_TOP_TABS_CFGS.fields = {TRADE_TOP_TABS_CFGS_ITEMS_FIELD}
+TRADE_TOP_TABS_CFGS.is_extendable = false
+TRADE_TOP_TABS_CFGS.extensions = {}
+TRADE_SUB_TABS_CFG_ID_FIELD.name = "id"
+TRADE_SUB_TABS_CFG_ID_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.id"
+TRADE_SUB_TABS_CFG_ID_FIELD.number = 1
+TRADE_SUB_TABS_CFG_ID_FIELD.index = 0
+TRADE_SUB_TABS_CFG_ID_FIELD.label = 2
+TRADE_SUB_TABS_CFG_ID_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_ID_FIELD.default_value = 0
+TRADE_SUB_TABS_CFG_ID_FIELD.type = 5
+TRADE_SUB_TABS_CFG_ID_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_NAME_FIELD.name = "name"
+TRADE_SUB_TABS_CFG_NAME_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.name"
+TRADE_SUB_TABS_CFG_NAME_FIELD.number = 2
+TRADE_SUB_TABS_CFG_NAME_FIELD.index = 1
+TRADE_SUB_TABS_CFG_NAME_FIELD.label = 2
+TRADE_SUB_TABS_CFG_NAME_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_NAME_FIELD.default_value = ""
+TRADE_SUB_TABS_CFG_NAME_FIELD.type = 9
+TRADE_SUB_TABS_CFG_NAME_FIELD.cpp_type = 9
+
+TRADE_SUB_TABS_CFG_RULES_FIELD.name = "rules"
+TRADE_SUB_TABS_CFG_RULES_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.rules"
+TRADE_SUB_TABS_CFG_RULES_FIELD.number = 3
+TRADE_SUB_TABS_CFG_RULES_FIELD.index = 2
+TRADE_SUB_TABS_CFG_RULES_FIELD.label = 3
+TRADE_SUB_TABS_CFG_RULES_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_RULES_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_RULES_FIELD.type = 5
+TRADE_SUB_TABS_CFG_RULES_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.name = "filter_rules1"
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules1"
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.number = 4
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.index = 3
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.label = 3
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.type = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.name = "filter_rules2"
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules2"
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.number = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.index = 4
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.label = 3
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.type = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.name = "filter_rules3"
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules3"
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.number = 6
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.index = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.label = 3
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.type = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.name = "filter_rules4"
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules4"
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.number = 7
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.index = 6
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.label = 3
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.type = 5
+TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.name = "sort_rules"
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.sort_rules"
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.number = 8
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.index = 7
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.label = 3
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.default_value = {}
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.type = 5
+TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.cpp_type = 1
+
+TRADE_SUB_TABS_CFG.name = "trade_sub_tabs_cfg"
+TRADE_SUB_TABS_CFG.full_name = ".ftcfg.trade_sub_tabs_cfg"
+TRADE_SUB_TABS_CFG.nested_types = {}
+TRADE_SUB_TABS_CFG.enum_types = {}
+TRADE_SUB_TABS_CFG.fields = {TRADE_SUB_TABS_CFG_ID_FIELD, TRADE_SUB_TABS_CFG_NAME_FIELD, TRADE_SUB_TABS_CFG_RULES_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD, TRADE_SUB_TABS_CFG_SORT_RULES_FIELD}
+TRADE_SUB_TABS_CFG.is_extendable = false
+TRADE_SUB_TABS_CFG.extensions = {}
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.name = "items"
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfgs.items"
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.number = 1
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.index = 0
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.label = 3
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.has_default_value = false
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.default_value = {}
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.message_type = TRADE_SUB_TABS_CFG
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.type = 11
+TRADE_SUB_TABS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRADE_SUB_TABS_CFGS.name = "trade_sub_tabs_cfgs"
+TRADE_SUB_TABS_CFGS.full_name = ".ftcfg.trade_sub_tabs_cfgs"
+TRADE_SUB_TABS_CFGS.nested_types = {}
+TRADE_SUB_TABS_CFGS.enum_types = {}
+TRADE_SUB_TABS_CFGS.fields = {TRADE_SUB_TABS_CFGS_ITEMS_FIELD}
+TRADE_SUB_TABS_CFGS.is_extendable = false
+TRADE_SUB_TABS_CFGS.extensions = {}
+TRADE_FILTER_RULES_CFG_ID_FIELD.name = "id"
+TRADE_FILTER_RULES_CFG_ID_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.id"
+TRADE_FILTER_RULES_CFG_ID_FIELD.number = 1
+TRADE_FILTER_RULES_CFG_ID_FIELD.index = 0
+TRADE_FILTER_RULES_CFG_ID_FIELD.label = 2
+TRADE_FILTER_RULES_CFG_ID_FIELD.has_default_value = false
+TRADE_FILTER_RULES_CFG_ID_FIELD.default_value = 0
+TRADE_FILTER_RULES_CFG_ID_FIELD.type = 5
+TRADE_FILTER_RULES_CFG_ID_FIELD.cpp_type = 1
+
+TRADE_FILTER_RULES_CFG_NAME_FIELD.name = "name"
+TRADE_FILTER_RULES_CFG_NAME_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.name"
+TRADE_FILTER_RULES_CFG_NAME_FIELD.number = 2
+TRADE_FILTER_RULES_CFG_NAME_FIELD.index = 1
+TRADE_FILTER_RULES_CFG_NAME_FIELD.label = 2
+TRADE_FILTER_RULES_CFG_NAME_FIELD.has_default_value = false
+TRADE_FILTER_RULES_CFG_NAME_FIELD.default_value = ""
+TRADE_FILTER_RULES_CFG_NAME_FIELD.type = 9
+TRADE_FILTER_RULES_CFG_NAME_FIELD.cpp_type = 9
+
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.name = "fields"
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.fields"
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.number = 3
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.index = 2
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.label = 3
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.has_default_value = false
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.default_value = {}
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.type = 9
+TRADE_FILTER_RULES_CFG_FIELDS_FIELD.cpp_type = 9
+
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.name = "values"
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.values"
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.number = 4
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.index = 3
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.label = 3
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.has_default_value = false
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.default_value = {}
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.type = 5
+TRADE_FILTER_RULES_CFG_VALUES_FIELD.cpp_type = 1
+
+TRADE_FILTER_RULES_CFG.name = "trade_filter_rules_cfg"
+TRADE_FILTER_RULES_CFG.full_name = ".ftcfg.trade_filter_rules_cfg"
+TRADE_FILTER_RULES_CFG.nested_types = {}
+TRADE_FILTER_RULES_CFG.enum_types = {}
+TRADE_FILTER_RULES_CFG.fields = {TRADE_FILTER_RULES_CFG_ID_FIELD, TRADE_FILTER_RULES_CFG_NAME_FIELD, TRADE_FILTER_RULES_CFG_FIELDS_FIELD, TRADE_FILTER_RULES_CFG_VALUES_FIELD}
+TRADE_FILTER_RULES_CFG.is_extendable = false
+TRADE_FILTER_RULES_CFG.extensions = {}
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.name = "items"
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_filter_rules_cfgs.items"
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.number = 1
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.index = 0
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.label = 3
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.has_default_value = false
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.default_value = {}
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.message_type = TRADE_FILTER_RULES_CFG
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.type = 11
+TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRADE_FILTER_RULES_CFGS.name = "trade_filter_rules_cfgs"
+TRADE_FILTER_RULES_CFGS.full_name = ".ftcfg.trade_filter_rules_cfgs"
+TRADE_FILTER_RULES_CFGS.nested_types = {}
+TRADE_FILTER_RULES_CFGS.enum_types = {}
+TRADE_FILTER_RULES_CFGS.fields = {TRADE_FILTER_RULES_CFGS_ITEMS_FIELD}
+TRADE_FILTER_RULES_CFGS.is_extendable = false
+TRADE_FILTER_RULES_CFGS.extensions = {}
+TRADE_SORT_RULES_CFG_ID_FIELD.name = "id"
+TRADE_SORT_RULES_CFG_ID_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.id"
+TRADE_SORT_RULES_CFG_ID_FIELD.number = 1
+TRADE_SORT_RULES_CFG_ID_FIELD.index = 0
+TRADE_SORT_RULES_CFG_ID_FIELD.label = 2
+TRADE_SORT_RULES_CFG_ID_FIELD.has_default_value = false
+TRADE_SORT_RULES_CFG_ID_FIELD.default_value = 0
+TRADE_SORT_RULES_CFG_ID_FIELD.type = 5
+TRADE_SORT_RULES_CFG_ID_FIELD.cpp_type = 1
+
+TRADE_SORT_RULES_CFG_NAME_FIELD.name = "name"
+TRADE_SORT_RULES_CFG_NAME_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.name"
+TRADE_SORT_RULES_CFG_NAME_FIELD.number = 2
+TRADE_SORT_RULES_CFG_NAME_FIELD.index = 1
+TRADE_SORT_RULES_CFG_NAME_FIELD.label = 2
+TRADE_SORT_RULES_CFG_NAME_FIELD.has_default_value = false
+TRADE_SORT_RULES_CFG_NAME_FIELD.default_value = ""
+TRADE_SORT_RULES_CFG_NAME_FIELD.type = 9
+TRADE_SORT_RULES_CFG_NAME_FIELD.cpp_type = 9
+
+TRADE_SORT_RULES_CFG_PROP_FIELD.name = "prop"
+TRADE_SORT_RULES_CFG_PROP_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.prop"
+TRADE_SORT_RULES_CFG_PROP_FIELD.number = 3
+TRADE_SORT_RULES_CFG_PROP_FIELD.index = 2
+TRADE_SORT_RULES_CFG_PROP_FIELD.label = 2
+TRADE_SORT_RULES_CFG_PROP_FIELD.has_default_value = false
+TRADE_SORT_RULES_CFG_PROP_FIELD.default_value = 0
+TRADE_SORT_RULES_CFG_PROP_FIELD.type = 5
+TRADE_SORT_RULES_CFG_PROP_FIELD.cpp_type = 1
+
+TRADE_SORT_RULES_CFG_UP_FIELD.name = "up"
+TRADE_SORT_RULES_CFG_UP_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.up"
+TRADE_SORT_RULES_CFG_UP_FIELD.number = 4
+TRADE_SORT_RULES_CFG_UP_FIELD.index = 3
+TRADE_SORT_RULES_CFG_UP_FIELD.label = 2
+TRADE_SORT_RULES_CFG_UP_FIELD.has_default_value = false
+TRADE_SORT_RULES_CFG_UP_FIELD.default_value = false
+TRADE_SORT_RULES_CFG_UP_FIELD.type = 8
+TRADE_SORT_RULES_CFG_UP_FIELD.cpp_type = 7
+
+TRADE_SORT_RULES_CFG.name = "trade_sort_rules_cfg"
+TRADE_SORT_RULES_CFG.full_name = ".ftcfg.trade_sort_rules_cfg"
+TRADE_SORT_RULES_CFG.nested_types = {}
+TRADE_SORT_RULES_CFG.enum_types = {}
+TRADE_SORT_RULES_CFG.fields = {TRADE_SORT_RULES_CFG_ID_FIELD, TRADE_SORT_RULES_CFG_NAME_FIELD, TRADE_SORT_RULES_CFG_PROP_FIELD, TRADE_SORT_RULES_CFG_UP_FIELD}
+TRADE_SORT_RULES_CFG.is_extendable = false
+TRADE_SORT_RULES_CFG.extensions = {}
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.name = "items"
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_sort_rules_cfgs.items"
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.number = 1
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.index = 0
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.label = 3
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.has_default_value = false
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.default_value = {}
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.message_type = TRADE_SORT_RULES_CFG
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.type = 11
+TRADE_SORT_RULES_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRADE_SORT_RULES_CFGS.name = "trade_sort_rules_cfgs"
+TRADE_SORT_RULES_CFGS.full_name = ".ftcfg.trade_sort_rules_cfgs"
+TRADE_SORT_RULES_CFGS.nested_types = {}
+TRADE_SORT_RULES_CFGS.enum_types = {}
+TRADE_SORT_RULES_CFGS.fields = {TRADE_SORT_RULES_CFGS_ITEMS_FIELD}
+TRADE_SORT_RULES_CFGS.is_extendable = false
+TRADE_SORT_RULES_CFGS.extensions = {}
+BASE_PROP_CFG_PROF_TYPE_FIELD.name = "prof_type"
+BASE_PROP_CFG_PROF_TYPE_FIELD.full_name = ".ftcfg.base_prop_cfg.prof_type"
+BASE_PROP_CFG_PROF_TYPE_FIELD.number = 1
+BASE_PROP_CFG_PROF_TYPE_FIELD.index = 0
+BASE_PROP_CFG_PROF_TYPE_FIELD.label = 2
+BASE_PROP_CFG_PROF_TYPE_FIELD.has_default_value = false
+BASE_PROP_CFG_PROF_TYPE_FIELD.default_value = nil
+BASE_PROP_CFG_PROF_TYPE_FIELD.enum_type = config_predefine_pb.EPROFTYPE
+BASE_PROP_CFG_PROF_TYPE_FIELD.type = 14
+BASE_PROP_CFG_PROF_TYPE_FIELD.cpp_type = 8
+
+BASE_PROP_CFG_LEVEL_FIELD.name = "level"
+BASE_PROP_CFG_LEVEL_FIELD.full_name = ".ftcfg.base_prop_cfg.level"
+BASE_PROP_CFG_LEVEL_FIELD.number = 2
+BASE_PROP_CFG_LEVEL_FIELD.index = 1
+BASE_PROP_CFG_LEVEL_FIELD.label = 2
+BASE_PROP_CFG_LEVEL_FIELD.has_default_value = false
+BASE_PROP_CFG_LEVEL_FIELD.default_value = 0
+BASE_PROP_CFG_LEVEL_FIELD.type = 5
+BASE_PROP_CFG_LEVEL_FIELD.cpp_type = 1
+
+BASE_PROP_CFG_HP_MAX_FIELD.name = "hp_max"
+BASE_PROP_CFG_HP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_max"
+BASE_PROP_CFG_HP_MAX_FIELD.number = 3
+BASE_PROP_CFG_HP_MAX_FIELD.index = 2
+BASE_PROP_CFG_HP_MAX_FIELD.label = 2
+BASE_PROP_CFG_HP_MAX_FIELD.has_default_value = false
+BASE_PROP_CFG_HP_MAX_FIELD.default_value = 0.0
+BASE_PROP_CFG_HP_MAX_FIELD.type = 1
+BASE_PROP_CFG_HP_MAX_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MP_MAX_FIELD.name = "mp_max"
+BASE_PROP_CFG_MP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_max"
+BASE_PROP_CFG_MP_MAX_FIELD.number = 4
+BASE_PROP_CFG_MP_MAX_FIELD.index = 3
+BASE_PROP_CFG_MP_MAX_FIELD.label = 2
+BASE_PROP_CFG_MP_MAX_FIELD.has_default_value = false
+BASE_PROP_CFG_MP_MAX_FIELD.default_value = 0.0
+BASE_PROP_CFG_MP_MAX_FIELD.type = 1
+BASE_PROP_CFG_MP_MAX_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ATTACK_FIELD.name = "attack"
+BASE_PROP_CFG_ATTACK_FIELD.full_name = ".ftcfg.base_prop_cfg.attack"
+BASE_PROP_CFG_ATTACK_FIELD.number = 5
+BASE_PROP_CFG_ATTACK_FIELD.index = 4
+BASE_PROP_CFG_ATTACK_FIELD.label = 2
+BASE_PROP_CFG_ATTACK_FIELD.has_default_value = false
+BASE_PROP_CFG_ATTACK_FIELD.default_value = 0.0
+BASE_PROP_CFG_ATTACK_FIELD.type = 1
+BASE_PROP_CFG_ATTACK_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DEFENSE_FIELD.name = "defense"
+BASE_PROP_CFG_DEFENSE_FIELD.full_name = ".ftcfg.base_prop_cfg.defense"
+BASE_PROP_CFG_DEFENSE_FIELD.number = 6
+BASE_PROP_CFG_DEFENSE_FIELD.index = 5
+BASE_PROP_CFG_DEFENSE_FIELD.label = 2
+BASE_PROP_CFG_DEFENSE_FIELD.has_default_value = false
+BASE_PROP_CFG_DEFENSE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DEFENSE_FIELD.type = 1
+BASE_PROP_CFG_DEFENSE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HIT_FIELD.name = "hit"
+BASE_PROP_CFG_HIT_FIELD.full_name = ".ftcfg.base_prop_cfg.hit"
+BASE_PROP_CFG_HIT_FIELD.number = 7
+BASE_PROP_CFG_HIT_FIELD.index = 6
+BASE_PROP_CFG_HIT_FIELD.label = 2
+BASE_PROP_CFG_HIT_FIELD.has_default_value = false
+BASE_PROP_CFG_HIT_FIELD.default_value = 0.0
+BASE_PROP_CFG_HIT_FIELD.type = 1
+BASE_PROP_CFG_HIT_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DODGE_FIELD.name = "dodge"
+BASE_PROP_CFG_DODGE_FIELD.full_name = ".ftcfg.base_prop_cfg.dodge"
+BASE_PROP_CFG_DODGE_FIELD.number = 8
+BASE_PROP_CFG_DODGE_FIELD.index = 7
+BASE_PROP_CFG_DODGE_FIELD.label = 2
+BASE_PROP_CFG_DODGE_FIELD.has_default_value = false
+BASE_PROP_CFG_DODGE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DODGE_FIELD.type = 1
+BASE_PROP_CFG_DODGE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CRITICAL_FIELD.name = "critical"
+BASE_PROP_CFG_CRITICAL_FIELD.full_name = ".ftcfg.base_prop_cfg.critical"
+BASE_PROP_CFG_CRITICAL_FIELD.number = 9
+BASE_PROP_CFG_CRITICAL_FIELD.index = 8
+BASE_PROP_CFG_CRITICAL_FIELD.label = 2
+BASE_PROP_CFG_CRITICAL_FIELD.has_default_value = false
+BASE_PROP_CFG_CRITICAL_FIELD.default_value = 0.0
+BASE_PROP_CFG_CRITICAL_FIELD.type = 1
+BASE_PROP_CFG_CRITICAL_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.name = "anti_critical"
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical"
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.number = 10
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.index = 9
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.label = 2
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.type = 1
+BASE_PROP_CFG_ANTI_CRITICAL_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.name = "critical_power"
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_power"
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.number = 11
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.index = 10
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.label = 2
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.type = 1
+BASE_PROP_CFG_CRITICAL_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.name = "anti_critical_power"
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_power"
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.number = 12
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.index = 11
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_XP_MAX_FIELD.name = "xp_max"
+BASE_PROP_CFG_XP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.xp_max"
+BASE_PROP_CFG_XP_MAX_FIELD.number = 13
+BASE_PROP_CFG_XP_MAX_FIELD.index = 12
+BASE_PROP_CFG_XP_MAX_FIELD.label = 2
+BASE_PROP_CFG_XP_MAX_FIELD.has_default_value = false
+BASE_PROP_CFG_XP_MAX_FIELD.default_value = 0.0
+BASE_PROP_CFG_XP_MAX_FIELD.type = 1
+BASE_PROP_CFG_XP_MAX_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HIT_RATE_FIELD.name = "hit_rate"
+BASE_PROP_CFG_HIT_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.hit_rate"
+BASE_PROP_CFG_HIT_RATE_FIELD.number = 14
+BASE_PROP_CFG_HIT_RATE_FIELD.index = 13
+BASE_PROP_CFG_HIT_RATE_FIELD.label = 2
+BASE_PROP_CFG_HIT_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_HIT_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_HIT_RATE_FIELD.type = 1
+BASE_PROP_CFG_HIT_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DODGE_RATE_FIELD.name = "dodge_rate"
+BASE_PROP_CFG_DODGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.dodge_rate"
+BASE_PROP_CFG_DODGE_RATE_FIELD.number = 15
+BASE_PROP_CFG_DODGE_RATE_FIELD.index = 14
+BASE_PROP_CFG_DODGE_RATE_FIELD.label = 2
+BASE_PROP_CFG_DODGE_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_DODGE_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DODGE_RATE_FIELD.type = 1
+BASE_PROP_CFG_DODGE_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.name = "critical_rate"
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_rate"
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.number = 16
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.index = 15
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.label = 2
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.type = 1
+BASE_PROP_CFG_CRITICAL_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.name = "anti_critical_rate"
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_rate"
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.number = 17
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.index = 16
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.label = 2
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.type = 1
+BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.name = "critical_power_rate"
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_power_rate"
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.number = 18
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.index = 17
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.label = 2
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.type = 1
+BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.name = "anti_critical_power_rate"
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_power_rate"
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.number = 19
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.index = 18
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.label = 2
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.type = 1
+BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.name = "deceleratte_power"
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.deceleratte_power"
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.number = 20
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.index = 19
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.label = 2
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.type = 1
+BASE_PROP_CFG_DECELERATTE_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.name = "anti_deceleratte_power"
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_deceleratte_power"
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.number = 21
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.index = 20
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_SLEEP_POWER_FIELD.name = "sleep_power"
+BASE_PROP_CFG_SLEEP_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.sleep_power"
+BASE_PROP_CFG_SLEEP_POWER_FIELD.number = 22
+BASE_PROP_CFG_SLEEP_POWER_FIELD.index = 21
+BASE_PROP_CFG_SLEEP_POWER_FIELD.label = 2
+BASE_PROP_CFG_SLEEP_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_SLEEP_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_SLEEP_POWER_FIELD.type = 1
+BASE_PROP_CFG_SLEEP_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.name = "anti_sleep_power"
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_sleep_power"
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.number = 23
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.index = 22
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HOLD_POWER_FIELD.name = "hold_power"
+BASE_PROP_CFG_HOLD_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.hold_power"
+BASE_PROP_CFG_HOLD_POWER_FIELD.number = 24
+BASE_PROP_CFG_HOLD_POWER_FIELD.index = 23
+BASE_PROP_CFG_HOLD_POWER_FIELD.label = 2
+BASE_PROP_CFG_HOLD_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_HOLD_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_HOLD_POWER_FIELD.type = 1
+BASE_PROP_CFG_HOLD_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.name = "anti_hold_power"
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_hold_power"
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.number = 25
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.index = 24
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CHARM_POWER_FIELD.name = "charm_power"
+BASE_PROP_CFG_CHARM_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.charm_power"
+BASE_PROP_CFG_CHARM_POWER_FIELD.number = 26
+BASE_PROP_CFG_CHARM_POWER_FIELD.index = 25
+BASE_PROP_CFG_CHARM_POWER_FIELD.label = 2
+BASE_PROP_CFG_CHARM_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_CHARM_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_CHARM_POWER_FIELD.type = 1
+BASE_PROP_CFG_CHARM_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.name = "anti_charm_power"
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_charm_power"
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.number = 27
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.index = 26
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_SILENCE_POWER_FIELD.name = "silence_power"
+BASE_PROP_CFG_SILENCE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.silence_power"
+BASE_PROP_CFG_SILENCE_POWER_FIELD.number = 28
+BASE_PROP_CFG_SILENCE_POWER_FIELD.index = 27
+BASE_PROP_CFG_SILENCE_POWER_FIELD.label = 2
+BASE_PROP_CFG_SILENCE_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_SILENCE_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_SILENCE_POWER_FIELD.type = 1
+BASE_PROP_CFG_SILENCE_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.name = "anti_silence_power"
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_silence_power"
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.number = 29
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.index = 28
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.label = 2
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.has_default_value = false
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.default_value = 0.0
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.type = 1
+BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_SPEED_FIELD.name = "speed"
+BASE_PROP_CFG_SPEED_FIELD.full_name = ".ftcfg.base_prop_cfg.speed"
+BASE_PROP_CFG_SPEED_FIELD.number = 30
+BASE_PROP_CFG_SPEED_FIELD.index = 29
+BASE_PROP_CFG_SPEED_FIELD.label = 2
+BASE_PROP_CFG_SPEED_FIELD.has_default_value = false
+BASE_PROP_CFG_SPEED_FIELD.default_value = 0.0
+BASE_PROP_CFG_SPEED_FIELD.type = 1
+BASE_PROP_CFG_SPEED_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.name = "hp_self_heal"
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_self_heal"
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.number = 31
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.index = 30
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.label = 2
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.has_default_value = false
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.default_value = 0.0
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.type = 1
+BASE_PROP_CFG_HP_SELF_HEAL_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.name = "mp_self_heal"
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_self_heal"
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.number = 32
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.index = 31
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.label = 2
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.has_default_value = false
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.default_value = 0.0
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.type = 1
+BASE_PROP_CFG_MP_SELF_HEAL_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.name = "hp_hit_return"
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_hit_return"
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.number = 33
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.index = 32
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.label = 2
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.has_default_value = false
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.default_value = 0.0
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.type = 1
+BASE_PROP_CFG_HP_HIT_RETURN_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.name = "mp_hit_return"
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_hit_return"
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.number = 34
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.index = 33
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.label = 2
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.has_default_value = false
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.default_value = 0.0
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.type = 1
+BASE_PROP_CFG_MP_HIT_RETURN_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.name = "hp_damage_return_rate"
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_damage_return_rate"
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.number = 35
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.index = 34
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.label = 2
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.type = 1
+BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.name = "mp_damage_return_rate"
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_damage_return_rate"
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.number = 36
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.index = 35
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.label = 2
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.type = 1
+BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.name = "extra_damage_rate"
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_damage_rate"
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.number = 37
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.index = 36
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.label = 2
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.type = 1
+BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.name = "reduce_damage_rate"
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_damage_rate"
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.number = 38
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.index = 37
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.label = 2
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.type = 1
+BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.name = "extra_heal_rate"
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_heal_rate"
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.number = 39
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.index = 38
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.label = 2
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.type = 1
+BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.name = "extra_healed_rate"
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_healed_rate"
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.number = 40
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.index = 39
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.label = 2
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.type = 1
+BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MAUD_FIELD.name = "maud"
+BASE_PROP_CFG_MAUD_FIELD.full_name = ".ftcfg.base_prop_cfg.maud"
+BASE_PROP_CFG_MAUD_FIELD.number = 41
+BASE_PROP_CFG_MAUD_FIELD.index = 40
+BASE_PROP_CFG_MAUD_FIELD.label = 2
+BASE_PROP_CFG_MAUD_FIELD.has_default_value = false
+BASE_PROP_CFG_MAUD_FIELD.default_value = 0.0
+BASE_PROP_CFG_MAUD_FIELD.type = 1
+BASE_PROP_CFG_MAUD_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_MIND_FIELD.name = "mind"
+BASE_PROP_CFG_MIND_FIELD.full_name = ".ftcfg.base_prop_cfg.mind"
+BASE_PROP_CFG_MIND_FIELD.number = 42
+BASE_PROP_CFG_MIND_FIELD.index = 41
+BASE_PROP_CFG_MIND_FIELD.label = 2
+BASE_PROP_CFG_MIND_FIELD.has_default_value = false
+BASE_PROP_CFG_MIND_FIELD.default_value = 0.0
+BASE_PROP_CFG_MIND_FIELD.type = 1
+BASE_PROP_CFG_MIND_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_CONSTITUTION_FIELD.name = "constitution"
+BASE_PROP_CFG_CONSTITUTION_FIELD.full_name = ".ftcfg.base_prop_cfg.constitution"
+BASE_PROP_CFG_CONSTITUTION_FIELD.number = 43
+BASE_PROP_CFG_CONSTITUTION_FIELD.index = 42
+BASE_PROP_CFG_CONSTITUTION_FIELD.label = 2
+BASE_PROP_CFG_CONSTITUTION_FIELD.has_default_value = false
+BASE_PROP_CFG_CONSTITUTION_FIELD.default_value = 0.0
+BASE_PROP_CFG_CONSTITUTION_FIELD.type = 1
+BASE_PROP_CFG_CONSTITUTION_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_INTENSITY_FIELD.name = "intensity"
+BASE_PROP_CFG_INTENSITY_FIELD.full_name = ".ftcfg.base_prop_cfg.intensity"
+BASE_PROP_CFG_INTENSITY_FIELD.number = 44
+BASE_PROP_CFG_INTENSITY_FIELD.index = 43
+BASE_PROP_CFG_INTENSITY_FIELD.label = 2
+BASE_PROP_CFG_INTENSITY_FIELD.has_default_value = false
+BASE_PROP_CFG_INTENSITY_FIELD.default_value = 0.0
+BASE_PROP_CFG_INTENSITY_FIELD.type = 1
+BASE_PROP_CFG_INTENSITY_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DEADLY_RATE_FIELD.name = "deadly_rate"
+BASE_PROP_CFG_DEADLY_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.deadly_rate"
+BASE_PROP_CFG_DEADLY_RATE_FIELD.number = 45
+BASE_PROP_CFG_DEADLY_RATE_FIELD.index = 44
+BASE_PROP_CFG_DEADLY_RATE_FIELD.label = 2
+BASE_PROP_CFG_DEADLY_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_DEADLY_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DEADLY_RATE_FIELD.type = 1
+BASE_PROP_CFG_DEADLY_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.name = "defy_defense_rate"
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.defy_defense_rate"
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.number = 46
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.index = 45
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.label = 2
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.type = 1
+BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_BLOCK_RATE_FIELD.name = "block_rate"
+BASE_PROP_CFG_BLOCK_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.block_rate"
+BASE_PROP_CFG_BLOCK_RATE_FIELD.number = 47
+BASE_PROP_CFG_BLOCK_RATE_FIELD.index = 46
+BASE_PROP_CFG_BLOCK_RATE_FIELD.label = 2
+BASE_PROP_CFG_BLOCK_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_BLOCK_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_BLOCK_RATE_FIELD.type = 1
+BASE_PROP_CFG_BLOCK_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.name = "defy_block_rate"
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.defy_block_rate"
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.number = 48
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.index = 47
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.label = 2
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.type = 1
+BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.name = "hp_kill_return"
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_kill_return"
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.number = 49
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.index = 48
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.label = 2
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.has_default_value = false
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.default_value = 0.0
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.type = 1
+BASE_PROP_CFG_HP_KILL_RETURN_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.name = "exp_kill_return"
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.exp_kill_return"
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.number = 50
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.index = 49
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.label = 2
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.has_default_value = false
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.default_value = 0.0
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.type = 1
+BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.name = "reduce_skill_cd"
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_skill_cd"
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.number = 51
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.index = 50
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.label = 2
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.has_default_value = false
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.default_value = 0.0
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.type = 1
+BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.name = "reduce_skill_cost"
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_skill_cost"
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.number = 52
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.index = 51
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.label = 2
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.has_default_value = false
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.default_value = 0.0
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.type = 1
+BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.name = "npc_extra_damage"
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.full_name = ".ftcfg.base_prop_cfg.npc_extra_damage"
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.number = 53
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.index = 52
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.label = 2
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.has_default_value = false
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.default_value = 0.0
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.type = 1
+BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.name = "reduce_npc_damage"
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_npc_damage"
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.number = 54
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.index = 53
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.label = 2
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.has_default_value = false
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.default_value = 0.0
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.type = 1
+BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.name = "xp_self_heal"
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.xp_self_heal"
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.number = 55
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.index = 54
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.label = 2
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.has_default_value = false
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.default_value = 0.0
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.type = 1
+BASE_PROP_CFG_XP_SELF_HEAL_FIELD.cpp_type = 5
+
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.name = "logic_repeat3_rate"
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.logic_repeat3_rate"
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.number = 56
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.index = 55
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.label = 2
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.has_default_value = false
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.default_value = 0.0
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.type = 1
+BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.cpp_type = 5
+
+BASE_PROP_CFG.name = "base_prop_cfg"
+BASE_PROP_CFG.full_name = ".ftcfg.base_prop_cfg"
+BASE_PROP_CFG.nested_types = {}
+BASE_PROP_CFG.enum_types = {}
+BASE_PROP_CFG.fields = {BASE_PROP_CFG_PROF_TYPE_FIELD, BASE_PROP_CFG_LEVEL_FIELD, BASE_PROP_CFG_HP_MAX_FIELD, BASE_PROP_CFG_MP_MAX_FIELD, BASE_PROP_CFG_ATTACK_FIELD, BASE_PROP_CFG_DEFENSE_FIELD, BASE_PROP_CFG_HIT_FIELD, BASE_PROP_CFG_DODGE_FIELD, BASE_PROP_CFG_CRITICAL_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_FIELD, BASE_PROP_CFG_CRITICAL_POWER_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD, BASE_PROP_CFG_XP_MAX_FIELD, BASE_PROP_CFG_HIT_RATE_FIELD, BASE_PROP_CFG_DODGE_RATE_FIELD, BASE_PROP_CFG_CRITICAL_RATE_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD, BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD, BASE_PROP_CFG_DECELERATTE_POWER_FIELD, BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD, BASE_PROP_CFG_SLEEP_POWER_FIELD, BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD, BASE_PROP_CFG_HOLD_POWER_FIELD, BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD, BASE_PROP_CFG_CHARM_POWER_FIELD, BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD, BASE_PROP_CFG_SILENCE_POWER_FIELD, BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD, BASE_PROP_CFG_SPEED_FIELD, BASE_PROP_CFG_HP_SELF_HEAL_FIELD, BASE_PROP_CFG_MP_SELF_HEAL_FIELD, BASE_PROP_CFG_HP_HIT_RETURN_FIELD, BASE_PROP_CFG_MP_HIT_RETURN_FIELD, BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD, BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD, BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD, BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD, BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD, BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD, BASE_PROP_CFG_MAUD_FIELD, BASE_PROP_CFG_MIND_FIELD, BASE_PROP_CFG_CONSTITUTION_FIELD, BASE_PROP_CFG_INTENSITY_FIELD, BASE_PROP_CFG_DEADLY_RATE_FIELD, BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD, BASE_PROP_CFG_BLOCK_RATE_FIELD, BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD, BASE_PROP_CFG_HP_KILL_RETURN_FIELD, BASE_PROP_CFG_EXP_KILL_RETURN_FIELD, BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD, BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD, BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD, BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD, BASE_PROP_CFG_XP_SELF_HEAL_FIELD, BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD}
+BASE_PROP_CFG.is_extendable = false
+BASE_PROP_CFG.extensions = {}
+BASE_PROP_CFGS_ITEMS_FIELD.name = "items"
+BASE_PROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.base_prop_cfgs.items"
+BASE_PROP_CFGS_ITEMS_FIELD.number = 1
+BASE_PROP_CFGS_ITEMS_FIELD.index = 0
+BASE_PROP_CFGS_ITEMS_FIELD.label = 3
+BASE_PROP_CFGS_ITEMS_FIELD.has_default_value = false
+BASE_PROP_CFGS_ITEMS_FIELD.default_value = {}
+BASE_PROP_CFGS_ITEMS_FIELD.message_type = BASE_PROP_CFG
+BASE_PROP_CFGS_ITEMS_FIELD.type = 11
+BASE_PROP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BASE_PROP_CFGS.name = "base_prop_cfgs"
+BASE_PROP_CFGS.full_name = ".ftcfg.base_prop_cfgs"
+BASE_PROP_CFGS.nested_types = {}
+BASE_PROP_CFGS.enum_types = {}
+BASE_PROP_CFGS.fields = {BASE_PROP_CFGS_ITEMS_FIELD}
+BASE_PROP_CFGS.is_extendable = false
+BASE_PROP_CFGS.extensions = {}
+LEVEL_EXP_CFG_LEVEL_FIELD.name = "level"
+LEVEL_EXP_CFG_LEVEL_FIELD.full_name = ".ftcfg.level_exp_cfg.level"
+LEVEL_EXP_CFG_LEVEL_FIELD.number = 1
+LEVEL_EXP_CFG_LEVEL_FIELD.index = 0
+LEVEL_EXP_CFG_LEVEL_FIELD.label = 2
+LEVEL_EXP_CFG_LEVEL_FIELD.has_default_value = false
+LEVEL_EXP_CFG_LEVEL_FIELD.default_value = 0
+LEVEL_EXP_CFG_LEVEL_FIELD.type = 5
+LEVEL_EXP_CFG_LEVEL_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_NEED_EXP_FIELD.name = "need_exp"
+LEVEL_EXP_CFG_NEED_EXP_FIELD.full_name = ".ftcfg.level_exp_cfg.need_exp"
+LEVEL_EXP_CFG_NEED_EXP_FIELD.number = 2
+LEVEL_EXP_CFG_NEED_EXP_FIELD.index = 1
+LEVEL_EXP_CFG_NEED_EXP_FIELD.label = 2
+LEVEL_EXP_CFG_NEED_EXP_FIELD.has_default_value = false
+LEVEL_EXP_CFG_NEED_EXP_FIELD.default_value = 0
+LEVEL_EXP_CFG_NEED_EXP_FIELD.type = 5
+LEVEL_EXP_CFG_NEED_EXP_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_CAMP_FIELD.name = "camp"
+LEVEL_EXP_CFG_CAMP_FIELD.full_name = ".ftcfg.level_exp_cfg.camp"
+LEVEL_EXP_CFG_CAMP_FIELD.number = 3
+LEVEL_EXP_CFG_CAMP_FIELD.index = 2
+LEVEL_EXP_CFG_CAMP_FIELD.label = 2
+LEVEL_EXP_CFG_CAMP_FIELD.has_default_value = false
+LEVEL_EXP_CFG_CAMP_FIELD.default_value = 0
+LEVEL_EXP_CFG_CAMP_FIELD.type = 5
+LEVEL_EXP_CFG_CAMP_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.level_exp_cfg.combat_point"
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.number = 4
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.index = 3
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.label = 2
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.has_default_value = false
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.default_value = 0
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.type = 5
+LEVEL_EXP_CFG_COMBAT_POINT_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.name = "kill_popularity_min"
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.full_name = ".ftcfg.level_exp_cfg.kill_popularity_min"
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.number = 5
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.index = 4
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.label = 2
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.has_default_value = false
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.default_value = 0
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.type = 5
+LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.name = "kill_popularity_max"
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.kill_popularity_max"
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.number = 6
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.index = 5
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.label = 2
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.has_default_value = false
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.default_value = 0
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.type = 5
+LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.name = "assists_popularity_min"
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.full_name = ".ftcfg.level_exp_cfg.assists_popularity_min"
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.number = 7
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.index = 6
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.label = 2
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.has_default_value = false
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.default_value = 0
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.type = 5
+LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.name = "gold_coupon_max"
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.gold_coupon_max"
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.number = 8
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.index = 7
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.label = 2
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.has_default_value = false
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.default_value = 0
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.type = 5
+LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_EXP_MAX_FIELD.name = "exp_max"
+LEVEL_EXP_CFG_EXP_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.exp_max"
+LEVEL_EXP_CFG_EXP_MAX_FIELD.number = 9
+LEVEL_EXP_CFG_EXP_MAX_FIELD.index = 8
+LEVEL_EXP_CFG_EXP_MAX_FIELD.label = 2
+LEVEL_EXP_CFG_EXP_MAX_FIELD.has_default_value = false
+LEVEL_EXP_CFG_EXP_MAX_FIELD.default_value = 0
+LEVEL_EXP_CFG_EXP_MAX_FIELD.type = 5
+LEVEL_EXP_CFG_EXP_MAX_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.name = "popularity_max"
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.popularity_max"
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.number = 10
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.index = 9
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.label = 2
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.has_default_value = false
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.default_value = 0
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.type = 5
+LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.name = "bind_popularity_max"
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.bind_popularity_max"
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.number = 11
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.index = 10
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.label = 2
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.has_default_value = false
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.default_value = 0
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.type = 5
+LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.name = "annihilation_reward"
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.full_name = ".ftcfg.level_exp_cfg.annihilation_reward"
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.number = 12
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.index = 11
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.label = 2
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.has_default_value = false
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.default_value = 0
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.type = 5
+LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.cpp_type = 1
+
+LEVEL_EXP_CFG.name = "level_exp_cfg"
+LEVEL_EXP_CFG.full_name = ".ftcfg.level_exp_cfg"
+LEVEL_EXP_CFG.nested_types = {}
+LEVEL_EXP_CFG.enum_types = {}
+LEVEL_EXP_CFG.fields = {LEVEL_EXP_CFG_LEVEL_FIELD, LEVEL_EXP_CFG_NEED_EXP_FIELD, LEVEL_EXP_CFG_CAMP_FIELD, LEVEL_EXP_CFG_COMBAT_POINT_FIELD, LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD, LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD, LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD, LEVEL_EXP_CFG_EXP_MAX_FIELD, LEVEL_EXP_CFG_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD}
+LEVEL_EXP_CFG.is_extendable = false
+LEVEL_EXP_CFG.extensions = {}
+LEVEL_EXP_CFGS_ITEMS_FIELD.name = "items"
+LEVEL_EXP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.level_exp_cfgs.items"
+LEVEL_EXP_CFGS_ITEMS_FIELD.number = 1
+LEVEL_EXP_CFGS_ITEMS_FIELD.index = 0
+LEVEL_EXP_CFGS_ITEMS_FIELD.label = 3
+LEVEL_EXP_CFGS_ITEMS_FIELD.has_default_value = false
+LEVEL_EXP_CFGS_ITEMS_FIELD.default_value = {}
+LEVEL_EXP_CFGS_ITEMS_FIELD.message_type = LEVEL_EXP_CFG
+LEVEL_EXP_CFGS_ITEMS_FIELD.type = 11
+LEVEL_EXP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+LEVEL_EXP_CFGS.name = "level_exp_cfgs"
+LEVEL_EXP_CFGS.full_name = ".ftcfg.level_exp_cfgs"
+LEVEL_EXP_CFGS.nested_types = {}
+LEVEL_EXP_CFGS.enum_types = {}
+LEVEL_EXP_CFGS.fields = {LEVEL_EXP_CFGS_ITEMS_FIELD}
+LEVEL_EXP_CFGS.is_extendable = false
+LEVEL_EXP_CFGS.extensions = {}
+LANGUAGE_CFG_ID_FIELD.name = "id"
+LANGUAGE_CFG_ID_FIELD.full_name = ".ftcfg.language_cfg.id"
+LANGUAGE_CFG_ID_FIELD.number = 1
+LANGUAGE_CFG_ID_FIELD.index = 0
+LANGUAGE_CFG_ID_FIELD.label = 2
+LANGUAGE_CFG_ID_FIELD.has_default_value = false
+LANGUAGE_CFG_ID_FIELD.default_value = 0
+LANGUAGE_CFG_ID_FIELD.type = 5
+LANGUAGE_CFG_ID_FIELD.cpp_type = 1
+
+LANGUAGE_CFG_TEXT_FIELD.name = "text"
+LANGUAGE_CFG_TEXT_FIELD.full_name = ".ftcfg.language_cfg.text"
+LANGUAGE_CFG_TEXT_FIELD.number = 2
+LANGUAGE_CFG_TEXT_FIELD.index = 1
+LANGUAGE_CFG_TEXT_FIELD.label = 2
+LANGUAGE_CFG_TEXT_FIELD.has_default_value = false
+LANGUAGE_CFG_TEXT_FIELD.default_value = ""
+LANGUAGE_CFG_TEXT_FIELD.type = 9
+LANGUAGE_CFG_TEXT_FIELD.cpp_type = 9
+
+LANGUAGE_CFG.name = "language_cfg"
+LANGUAGE_CFG.full_name = ".ftcfg.language_cfg"
+LANGUAGE_CFG.nested_types = {}
+LANGUAGE_CFG.enum_types = {}
+LANGUAGE_CFG.fields = {LANGUAGE_CFG_ID_FIELD, LANGUAGE_CFG_TEXT_FIELD}
+LANGUAGE_CFG.is_extendable = false
+LANGUAGE_CFG.extensions = {}
+LANGUAGE_CFGS_ITEMS_FIELD.name = "items"
+LANGUAGE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.language_cfgs.items"
+LANGUAGE_CFGS_ITEMS_FIELD.number = 1
+LANGUAGE_CFGS_ITEMS_FIELD.index = 0
+LANGUAGE_CFGS_ITEMS_FIELD.label = 3
+LANGUAGE_CFGS_ITEMS_FIELD.has_default_value = false
+LANGUAGE_CFGS_ITEMS_FIELD.default_value = {}
+LANGUAGE_CFGS_ITEMS_FIELD.message_type = LANGUAGE_CFG
+LANGUAGE_CFGS_ITEMS_FIELD.type = 11
+LANGUAGE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+LANGUAGE_CFGS.name = "language_cfgs"
+LANGUAGE_CFGS.full_name = ".ftcfg.language_cfgs"
+LANGUAGE_CFGS.nested_types = {}
+LANGUAGE_CFGS.enum_types = {}
+LANGUAGE_CFGS.fields = {LANGUAGE_CFGS_ITEMS_FIELD}
+LANGUAGE_CFGS.is_extendable = false
+LANGUAGE_CFGS.extensions = {}
+MISSION_CFG_ID_FIELD.name = "id"
+MISSION_CFG_ID_FIELD.full_name = ".ftcfg.mission_cfg.id"
+MISSION_CFG_ID_FIELD.number = 1
+MISSION_CFG_ID_FIELD.index = 0
+MISSION_CFG_ID_FIELD.label = 2
+MISSION_CFG_ID_FIELD.has_default_value = false
+MISSION_CFG_ID_FIELD.default_value = 0
+MISSION_CFG_ID_FIELD.type = 5
+MISSION_CFG_ID_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_GROUPID_FIELD.name = "mission_groupid"
+MISSION_CFG_MISSION_GROUPID_FIELD.full_name = ".ftcfg.mission_cfg.mission_groupid"
+MISSION_CFG_MISSION_GROUPID_FIELD.number = 2
+MISSION_CFG_MISSION_GROUPID_FIELD.index = 1
+MISSION_CFG_MISSION_GROUPID_FIELD.label = 2
+MISSION_CFG_MISSION_GROUPID_FIELD.has_default_value = false
+MISSION_CFG_MISSION_GROUPID_FIELD.default_value = 0
+MISSION_CFG_MISSION_GROUPID_FIELD.type = 5
+MISSION_CFG_MISSION_GROUPID_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_COLOUR_FIELD.name = "mission_colour"
+MISSION_CFG_MISSION_COLOUR_FIELD.full_name = ".ftcfg.mission_cfg.mission_colour"
+MISSION_CFG_MISSION_COLOUR_FIELD.number = 3
+MISSION_CFG_MISSION_COLOUR_FIELD.index = 2
+MISSION_CFG_MISSION_COLOUR_FIELD.label = 2
+MISSION_CFG_MISSION_COLOUR_FIELD.has_default_value = false
+MISSION_CFG_MISSION_COLOUR_FIELD.default_value = 0
+MISSION_CFG_MISSION_COLOUR_FIELD.type = 5
+MISSION_CFG_MISSION_COLOUR_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_NAME_FIELD.name = "mission_name"
+MISSION_CFG_MISSION_NAME_FIELD.full_name = ".ftcfg.mission_cfg.mission_name"
+MISSION_CFG_MISSION_NAME_FIELD.number = 4
+MISSION_CFG_MISSION_NAME_FIELD.index = 3
+MISSION_CFG_MISSION_NAME_FIELD.label = 2
+MISSION_CFG_MISSION_NAME_FIELD.has_default_value = false
+MISSION_CFG_MISSION_NAME_FIELD.default_value = 0
+MISSION_CFG_MISSION_NAME_FIELD.type = 5
+MISSION_CFG_MISSION_NAME_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TEXT_FIELD.name = "mission_text"
+MISSION_CFG_MISSION_TEXT_FIELD.full_name = ".ftcfg.mission_cfg.mission_text"
+MISSION_CFG_MISSION_TEXT_FIELD.number = 5
+MISSION_CFG_MISSION_TEXT_FIELD.index = 4
+MISSION_CFG_MISSION_TEXT_FIELD.label = 2
+MISSION_CFG_MISSION_TEXT_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TEXT_FIELD.default_value = 0
+MISSION_CFG_MISSION_TEXT_FIELD.type = 5
+MISSION_CFG_MISSION_TEXT_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TARGET1_FIELD.name = "mission_target1"
+MISSION_CFG_MISSION_TARGET1_FIELD.full_name = ".ftcfg.mission_cfg.mission_target1"
+MISSION_CFG_MISSION_TARGET1_FIELD.number = 6
+MISSION_CFG_MISSION_TARGET1_FIELD.index = 5
+MISSION_CFG_MISSION_TARGET1_FIELD.label = 2
+MISSION_CFG_MISSION_TARGET1_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TARGET1_FIELD.default_value = 0
+MISSION_CFG_MISSION_TARGET1_FIELD.type = 5
+MISSION_CFG_MISSION_TARGET1_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TARGET2_FIELD.name = "mission_target2"
+MISSION_CFG_MISSION_TARGET2_FIELD.full_name = ".ftcfg.mission_cfg.mission_target2"
+MISSION_CFG_MISSION_TARGET2_FIELD.number = 7
+MISSION_CFG_MISSION_TARGET2_FIELD.index = 6
+MISSION_CFG_MISSION_TARGET2_FIELD.label = 2
+MISSION_CFG_MISSION_TARGET2_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TARGET2_FIELD.default_value = 0
+MISSION_CFG_MISSION_TARGET2_FIELD.type = 5
+MISSION_CFG_MISSION_TARGET2_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TARGET3_FIELD.name = "mission_target3"
+MISSION_CFG_MISSION_TARGET3_FIELD.full_name = ".ftcfg.mission_cfg.mission_target3"
+MISSION_CFG_MISSION_TARGET3_FIELD.number = 8
+MISSION_CFG_MISSION_TARGET3_FIELD.index = 7
+MISSION_CFG_MISSION_TARGET3_FIELD.label = 2
+MISSION_CFG_MISSION_TARGET3_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TARGET3_FIELD.default_value = 0
+MISSION_CFG_MISSION_TARGET3_FIELD.type = 5
+MISSION_CFG_MISSION_TARGET3_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TYPE_FIELD.name = "mission_type"
+MISSION_CFG_MISSION_TYPE_FIELD.full_name = ".ftcfg.mission_cfg.mission_type"
+MISSION_CFG_MISSION_TYPE_FIELD.number = 9
+MISSION_CFG_MISSION_TYPE_FIELD.index = 8
+MISSION_CFG_MISSION_TYPE_FIELD.label = 2
+MISSION_CFG_MISSION_TYPE_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TYPE_FIELD.default_value = 0
+MISSION_CFG_MISSION_TYPE_FIELD.type = 5
+MISSION_CFG_MISSION_TYPE_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.name = "mission_targettype"
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.full_name = ".ftcfg.mission_cfg.mission_targettype"
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.number = 10
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.index = 9
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.label = 2
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.default_value = 0
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.type = 5
+MISSION_CFG_MISSION_TARGETTYPE_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_OCCUPATION_FIELD.name = "mission_occupation"
+MISSION_CFG_MISSION_OCCUPATION_FIELD.full_name = ".ftcfg.mission_cfg.mission_occupation"
+MISSION_CFG_MISSION_OCCUPATION_FIELD.number = 11
+MISSION_CFG_MISSION_OCCUPATION_FIELD.index = 10
+MISSION_CFG_MISSION_OCCUPATION_FIELD.label = 3
+MISSION_CFG_MISSION_OCCUPATION_FIELD.has_default_value = false
+MISSION_CFG_MISSION_OCCUPATION_FIELD.default_value = {}
+MISSION_CFG_MISSION_OCCUPATION_FIELD.type = 5
+MISSION_CFG_MISSION_OCCUPATION_FIELD.cpp_type = 1
+
+MISSION_CFG_REPEAT_WHETHER_FIELD.name = "repeat_whether"
+MISSION_CFG_REPEAT_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.repeat_whether"
+MISSION_CFG_REPEAT_WHETHER_FIELD.number = 12
+MISSION_CFG_REPEAT_WHETHER_FIELD.index = 11
+MISSION_CFG_REPEAT_WHETHER_FIELD.label = 2
+MISSION_CFG_REPEAT_WHETHER_FIELD.has_default_value = false
+MISSION_CFG_REPEAT_WHETHER_FIELD.default_value = 0
+MISSION_CFG_REPEAT_WHETHER_FIELD.type = 5
+MISSION_CFG_REPEAT_WHETHER_FIELD.cpp_type = 1
+
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.name = "directacce_whether"
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.directacce_whether"
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.number = 13
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.index = 12
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.label = 2
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.has_default_value = false
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.default_value = 0
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.type = 5
+MISSION_CFG_DIRECTACCE_WHETHER_FIELD.cpp_type = 1
+
+MISSION_CFG_AUTO_WHETHER_FIELD.name = "auto_whether"
+MISSION_CFG_AUTO_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.auto_whether"
+MISSION_CFG_AUTO_WHETHER_FIELD.number = 14
+MISSION_CFG_AUTO_WHETHER_FIELD.index = 13
+MISSION_CFG_AUTO_WHETHER_FIELD.label = 2
+MISSION_CFG_AUTO_WHETHER_FIELD.has_default_value = false
+MISSION_CFG_AUTO_WHETHER_FIELD.default_value = 0
+MISSION_CFG_AUTO_WHETHER_FIELD.type = 5
+MISSION_CFG_AUTO_WHETHER_FIELD.cpp_type = 1
+
+MISSION_CFG_AUTO_COMMIT_FIELD.name = "auto_commit"
+MISSION_CFG_AUTO_COMMIT_FIELD.full_name = ".ftcfg.mission_cfg.auto_commit"
+MISSION_CFG_AUTO_COMMIT_FIELD.number = 15
+MISSION_CFG_AUTO_COMMIT_FIELD.index = 14
+MISSION_CFG_AUTO_COMMIT_FIELD.label = 2
+MISSION_CFG_AUTO_COMMIT_FIELD.has_default_value = false
+MISSION_CFG_AUTO_COMMIT_FIELD.default_value = 0
+MISSION_CFG_AUTO_COMMIT_FIELD.type = 5
+MISSION_CFG_AUTO_COMMIT_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_FRONTID_FIELD.name = "mission_frontid"
+MISSION_CFG_MISSION_FRONTID_FIELD.full_name = ".ftcfg.mission_cfg.mission_frontid"
+MISSION_CFG_MISSION_FRONTID_FIELD.number = 16
+MISSION_CFG_MISSION_FRONTID_FIELD.index = 15
+MISSION_CFG_MISSION_FRONTID_FIELD.label = 2
+MISSION_CFG_MISSION_FRONTID_FIELD.has_default_value = false
+MISSION_CFG_MISSION_FRONTID_FIELD.default_value = 0
+MISSION_CFG_MISSION_FRONTID_FIELD.type = 5
+MISSION_CFG_MISSION_FRONTID_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.name = "mission_triggerlv"
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.full_name = ".ftcfg.mission_cfg.mission_triggerlv"
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.number = 17
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.index = 16
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.label = 2
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.has_default_value = false
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.default_value = 0
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.type = 5
+MISSION_CFG_MISSION_TRIGGERLV_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_GIVEUP_FIELD.name = "mission_giveup"
+MISSION_CFG_MISSION_GIVEUP_FIELD.full_name = ".ftcfg.mission_cfg.mission_giveup"
+MISSION_CFG_MISSION_GIVEUP_FIELD.number = 18
+MISSION_CFG_MISSION_GIVEUP_FIELD.index = 17
+MISSION_CFG_MISSION_GIVEUP_FIELD.label = 2
+MISSION_CFG_MISSION_GIVEUP_FIELD.has_default_value = false
+MISSION_CFG_MISSION_GIVEUP_FIELD.default_value = 0
+MISSION_CFG_MISSION_GIVEUP_FIELD.type = 5
+MISSION_CFG_MISSION_GIVEUP_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSIONNODE_LIST_FIELD.name = "missionnode_list"
+MISSION_CFG_MISSIONNODE_LIST_FIELD.full_name = ".ftcfg.mission_cfg.missionnode_list"
+MISSION_CFG_MISSIONNODE_LIST_FIELD.number = 19
+MISSION_CFG_MISSIONNODE_LIST_FIELD.index = 18
+MISSION_CFG_MISSIONNODE_LIST_FIELD.label = 3
+MISSION_CFG_MISSIONNODE_LIST_FIELD.has_default_value = false
+MISSION_CFG_MISSIONNODE_LIST_FIELD.default_value = {}
+MISSION_CFG_MISSIONNODE_LIST_FIELD.type = 5
+MISSION_CFG_MISSIONNODE_LIST_FIELD.cpp_type = 1
+
+MISSION_CFG_DAILY_TIMES_FIELD.name = "daily_times"
+MISSION_CFG_DAILY_TIMES_FIELD.full_name = ".ftcfg.mission_cfg.daily_times"
+MISSION_CFG_DAILY_TIMES_FIELD.number = 20
+MISSION_CFG_DAILY_TIMES_FIELD.index = 19
+MISSION_CFG_DAILY_TIMES_FIELD.label = 2
+MISSION_CFG_DAILY_TIMES_FIELD.has_default_value = false
+MISSION_CFG_DAILY_TIMES_FIELD.default_value = 0
+MISSION_CFG_DAILY_TIMES_FIELD.type = 5
+MISSION_CFG_DAILY_TIMES_FIELD.cpp_type = 1
+
+MISSION_CFG_RESET_TIME_FIELD.name = "reset_time"
+MISSION_CFG_RESET_TIME_FIELD.full_name = ".ftcfg.mission_cfg.reset_time"
+MISSION_CFG_RESET_TIME_FIELD.number = 21
+MISSION_CFG_RESET_TIME_FIELD.index = 20
+MISSION_CFG_RESET_TIME_FIELD.label = 2
+MISSION_CFG_RESET_TIME_FIELD.has_default_value = false
+MISSION_CFG_RESET_TIME_FIELD.default_value = 0
+MISSION_CFG_RESET_TIME_FIELD.type = 5
+MISSION_CFG_RESET_TIME_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_DURATION_FIELD.name = "mission_duration"
+MISSION_CFG_MISSION_DURATION_FIELD.full_name = ".ftcfg.mission_cfg.mission_duration"
+MISSION_CFG_MISSION_DURATION_FIELD.number = 22
+MISSION_CFG_MISSION_DURATION_FIELD.index = 21
+MISSION_CFG_MISSION_DURATION_FIELD.label = 2
+MISSION_CFG_MISSION_DURATION_FIELD.has_default_value = false
+MISSION_CFG_MISSION_DURATION_FIELD.default_value = 0
+MISSION_CFG_MISSION_DURATION_FIELD.type = 5
+MISSION_CFG_MISSION_DURATION_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPT_SCENEID_FIELD.name = "accept_sceneid"
+MISSION_CFG_ACCEPT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.accept_sceneid"
+MISSION_CFG_ACCEPT_SCENEID_FIELD.number = 23
+MISSION_CFG_ACCEPT_SCENEID_FIELD.index = 22
+MISSION_CFG_ACCEPT_SCENEID_FIELD.label = 2
+MISSION_CFG_ACCEPT_SCENEID_FIELD.has_default_value = false
+MISSION_CFG_ACCEPT_SCENEID_FIELD.default_value = 0
+MISSION_CFG_ACCEPT_SCENEID_FIELD.type = 5
+MISSION_CFG_ACCEPT_SCENEID_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPT_NPCID_FIELD.name = "accept_npcid"
+MISSION_CFG_ACCEPT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.accept_npcid"
+MISSION_CFG_ACCEPT_NPCID_FIELD.number = 24
+MISSION_CFG_ACCEPT_NPCID_FIELD.index = 23
+MISSION_CFG_ACCEPT_NPCID_FIELD.label = 2
+MISSION_CFG_ACCEPT_NPCID_FIELD.has_default_value = false
+MISSION_CFG_ACCEPT_NPCID_FIELD.default_value = 0
+MISSION_CFG_ACCEPT_NPCID_FIELD.type = 5
+MISSION_CFG_ACCEPT_NPCID_FIELD.cpp_type = 1
+
+MISSION_CFG_CONDUCT_SCENEID_FIELD.name = "conduct_sceneid"
+MISSION_CFG_CONDUCT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_sceneid"
+MISSION_CFG_CONDUCT_SCENEID_FIELD.number = 25
+MISSION_CFG_CONDUCT_SCENEID_FIELD.index = 24
+MISSION_CFG_CONDUCT_SCENEID_FIELD.label = 2
+MISSION_CFG_CONDUCT_SCENEID_FIELD.has_default_value = false
+MISSION_CFG_CONDUCT_SCENEID_FIELD.default_value = 0
+MISSION_CFG_CONDUCT_SCENEID_FIELD.type = 5
+MISSION_CFG_CONDUCT_SCENEID_FIELD.cpp_type = 1
+
+MISSION_CFG_CONDUCT_NPCID_FIELD.name = "conduct_npcid"
+MISSION_CFG_CONDUCT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_npcid"
+MISSION_CFG_CONDUCT_NPCID_FIELD.number = 26
+MISSION_CFG_CONDUCT_NPCID_FIELD.index = 25
+MISSION_CFG_CONDUCT_NPCID_FIELD.label = 2
+MISSION_CFG_CONDUCT_NPCID_FIELD.has_default_value = false
+MISSION_CFG_CONDUCT_NPCID_FIELD.default_value = 0
+MISSION_CFG_CONDUCT_NPCID_FIELD.type = 5
+MISSION_CFG_CONDUCT_NPCID_FIELD.cpp_type = 1
+
+MISSION_CFG_SUBMIT_SCENEID_FIELD.name = "submit_sceneid"
+MISSION_CFG_SUBMIT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.submit_sceneid"
+MISSION_CFG_SUBMIT_SCENEID_FIELD.number = 27
+MISSION_CFG_SUBMIT_SCENEID_FIELD.index = 26
+MISSION_CFG_SUBMIT_SCENEID_FIELD.label = 2
+MISSION_CFG_SUBMIT_SCENEID_FIELD.has_default_value = false
+MISSION_CFG_SUBMIT_SCENEID_FIELD.default_value = 0
+MISSION_CFG_SUBMIT_SCENEID_FIELD.type = 5
+MISSION_CFG_SUBMIT_SCENEID_FIELD.cpp_type = 1
+
+MISSION_CFG_SUBMIT_NPCID_FIELD.name = "submit_npcid"
+MISSION_CFG_SUBMIT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.submit_npcid"
+MISSION_CFG_SUBMIT_NPCID_FIELD.number = 28
+MISSION_CFG_SUBMIT_NPCID_FIELD.index = 27
+MISSION_CFG_SUBMIT_NPCID_FIELD.label = 2
+MISSION_CFG_SUBMIT_NPCID_FIELD.has_default_value = false
+MISSION_CFG_SUBMIT_NPCID_FIELD.default_value = 0
+MISSION_CFG_SUBMIT_NPCID_FIELD.type = 5
+MISSION_CFG_SUBMIT_NPCID_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.name = "acceptseat_plotid"
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.acceptseat_plotid"
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.number = 29
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.index = 28
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.label = 2
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.type = 5
+MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.name = "conductseat_plotid"
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.conductseat_plotid"
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.number = 30
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.index = 29
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.label = 2
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.type = 5
+MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.name = "submitseat_plotid"
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.submitseat_plotid"
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.number = 31
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.index = 30
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.label = 2
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.type = 5
+MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_NPCID_FIELD.name = "kill_npcid"
+MISSION_CFG_KILL_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcid"
+MISSION_CFG_KILL_NPCID_FIELD.number = 32
+MISSION_CFG_KILL_NPCID_FIELD.index = 31
+MISSION_CFG_KILL_NPCID_FIELD.label = 3
+MISSION_CFG_KILL_NPCID_FIELD.has_default_value = false
+MISSION_CFG_KILL_NPCID_FIELD.default_value = {}
+MISSION_CFG_KILL_NPCID_FIELD.type = 5
+MISSION_CFG_KILL_NPCID_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_NPCNUM_FIELD.name = "kill_npcnum"
+MISSION_CFG_KILL_NPCNUM_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcnum"
+MISSION_CFG_KILL_NPCNUM_FIELD.number = 33
+MISSION_CFG_KILL_NPCNUM_FIELD.index = 32
+MISSION_CFG_KILL_NPCNUM_FIELD.label = 3
+MISSION_CFG_KILL_NPCNUM_FIELD.has_default_value = false
+MISSION_CFG_KILL_NPCNUM_FIELD.default_value = {}
+MISSION_CFG_KILL_NPCNUM_FIELD.type = 5
+MISSION_CFG_KILL_NPCNUM_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_NPCDROP_FIELD.name = "kill_npcdrop"
+MISSION_CFG_KILL_NPCDROP_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcdrop"
+MISSION_CFG_KILL_NPCDROP_FIELD.number = 34
+MISSION_CFG_KILL_NPCDROP_FIELD.index = 33
+MISSION_CFG_KILL_NPCDROP_FIELD.label = 3
+MISSION_CFG_KILL_NPCDROP_FIELD.has_default_value = false
+MISSION_CFG_KILL_NPCDROP_FIELD.default_value = {}
+MISSION_CFG_KILL_NPCDROP_FIELD.type = 5
+MISSION_CFG_KILL_NPCDROP_FIELD.cpp_type = 1
+
+MISSION_CFG_TALK_PLOTID_FIELD.name = "talk_plotid"
+MISSION_CFG_TALK_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.talk_plotid"
+MISSION_CFG_TALK_PLOTID_FIELD.number = 35
+MISSION_CFG_TALK_PLOTID_FIELD.index = 34
+MISSION_CFG_TALK_PLOTID_FIELD.label = 2
+MISSION_CFG_TALK_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_TALK_PLOTID_FIELD.default_value = 0
+MISSION_CFG_TALK_PLOTID_FIELD.type = 5
+MISSION_CFG_TALK_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_COLLECT_ITEMID_FIELD.name = "collect_itemid"
+MISSION_CFG_COLLECT_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.collect_itemid"
+MISSION_CFG_COLLECT_ITEMID_FIELD.number = 36
+MISSION_CFG_COLLECT_ITEMID_FIELD.index = 35
+MISSION_CFG_COLLECT_ITEMID_FIELD.label = 3
+MISSION_CFG_COLLECT_ITEMID_FIELD.has_default_value = false
+MISSION_CFG_COLLECT_ITEMID_FIELD.default_value = {}
+MISSION_CFG_COLLECT_ITEMID_FIELD.type = 5
+MISSION_CFG_COLLECT_ITEMID_FIELD.cpp_type = 1
+
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.name = "collect_itemnum"
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.full_name = ".ftcfg.mission_cfg.collect_itemnum"
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.number = 37
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.index = 36
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.label = 3
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.has_default_value = false
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.default_value = {}
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.type = 5
+MISSION_CFG_COLLECT_ITEMNUM_FIELD.cpp_type = 1
+
+MISSION_CFG_SCENE_ID_FIELD.name = "scene_id"
+MISSION_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.mission_cfg.scene_id"
+MISSION_CFG_SCENE_ID_FIELD.number = 38
+MISSION_CFG_SCENE_ID_FIELD.index = 37
+MISSION_CFG_SCENE_ID_FIELD.label = 2
+MISSION_CFG_SCENE_ID_FIELD.has_default_value = false
+MISSION_CFG_SCENE_ID_FIELD.default_value = 0
+MISSION_CFG_SCENE_ID_FIELD.type = 5
+MISSION_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+MISSION_CFG_POS_X_FIELD.name = "pos_x"
+MISSION_CFG_POS_X_FIELD.full_name = ".ftcfg.mission_cfg.pos_x"
+MISSION_CFG_POS_X_FIELD.number = 39
+MISSION_CFG_POS_X_FIELD.index = 38
+MISSION_CFG_POS_X_FIELD.label = 2
+MISSION_CFG_POS_X_FIELD.has_default_value = false
+MISSION_CFG_POS_X_FIELD.default_value = 0
+MISSION_CFG_POS_X_FIELD.type = 5
+MISSION_CFG_POS_X_FIELD.cpp_type = 1
+
+MISSION_CFG_POS_Z_FIELD.name = "pos_z"
+MISSION_CFG_POS_Z_FIELD.full_name = ".ftcfg.mission_cfg.pos_z"
+MISSION_CFG_POS_Z_FIELD.number = 40
+MISSION_CFG_POS_Z_FIELD.index = 39
+MISSION_CFG_POS_Z_FIELD.label = 2
+MISSION_CFG_POS_Z_FIELD.has_default_value = false
+MISSION_CFG_POS_Z_FIELD.default_value = 0
+MISSION_CFG_POS_Z_FIELD.type = 5
+MISSION_CFG_POS_Z_FIELD.cpp_type = 1
+
+MISSION_CFG_COLLECTION_NPCID_FIELD.name = "collection_npcid"
+MISSION_CFG_COLLECTION_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.collection_npcid"
+MISSION_CFG_COLLECTION_NPCID_FIELD.number = 41
+MISSION_CFG_COLLECTION_NPCID_FIELD.index = 40
+MISSION_CFG_COLLECTION_NPCID_FIELD.label = 3
+MISSION_CFG_COLLECTION_NPCID_FIELD.has_default_value = false
+MISSION_CFG_COLLECTION_NPCID_FIELD.default_value = {}
+MISSION_CFG_COLLECTION_NPCID_FIELD.type = 5
+MISSION_CFG_COLLECTION_NPCID_FIELD.cpp_type = 1
+
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.name = "collection_npcnum"
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.full_name = ".ftcfg.mission_cfg.collection_npcnum"
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.number = 42
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.index = 41
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.label = 3
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.has_default_value = false
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.default_value = {}
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.type = 5
+MISSION_CFG_COLLECTION_NPCNUM_FIELD.cpp_type = 1
+
+MISSION_CFG_USED_ITEMID_FIELD.name = "used_itemid"
+MISSION_CFG_USED_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.used_itemid"
+MISSION_CFG_USED_ITEMID_FIELD.number = 43
+MISSION_CFG_USED_ITEMID_FIELD.index = 42
+MISSION_CFG_USED_ITEMID_FIELD.label = 2
+MISSION_CFG_USED_ITEMID_FIELD.has_default_value = false
+MISSION_CFG_USED_ITEMID_FIELD.default_value = 0
+MISSION_CFG_USED_ITEMID_FIELD.type = 5
+MISSION_CFG_USED_ITEMID_FIELD.cpp_type = 1
+
+MISSION_CFG_INTO_BATTLEID_FIELD.name = "into_battleid"
+MISSION_CFG_INTO_BATTLEID_FIELD.full_name = ".ftcfg.mission_cfg.into_battleid"
+MISSION_CFG_INTO_BATTLEID_FIELD.number = 44
+MISSION_CFG_INTO_BATTLEID_FIELD.index = 43
+MISSION_CFG_INTO_BATTLEID_FIELD.label = 2
+MISSION_CFG_INTO_BATTLEID_FIELD.has_default_value = false
+MISSION_CFG_INTO_BATTLEID_FIELD.default_value = 0
+MISSION_CFG_INTO_BATTLEID_FIELD.type = 5
+MISSION_CFG_INTO_BATTLEID_FIELD.cpp_type = 1
+
+MISSION_CFG_TARGET_GRADE_FIELD.name = "target_grade"
+MISSION_CFG_TARGET_GRADE_FIELD.full_name = ".ftcfg.mission_cfg.target_grade"
+MISSION_CFG_TARGET_GRADE_FIELD.number = 45
+MISSION_CFG_TARGET_GRADE_FIELD.index = 44
+MISSION_CFG_TARGET_GRADE_FIELD.label = 2
+MISSION_CFG_TARGET_GRADE_FIELD.has_default_value = false
+MISSION_CFG_TARGET_GRADE_FIELD.default_value = 0
+MISSION_CFG_TARGET_GRADE_FIELD.type = 5
+MISSION_CFG_TARGET_GRADE_FIELD.cpp_type = 1
+
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.name = "function_script"
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.full_name = ".ftcfg.mission_cfg.function_script"
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.number = 46
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.index = 45
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.label = 2
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.has_default_value = false
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.default_value = ""
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.type = 9
+MISSION_CFG_FUNCTION_SCRIPT_FIELD.cpp_type = 9
+
+MISSION_CFG_ACCEPT_PLOTID_FIELD.name = "accept_plotid"
+MISSION_CFG_ACCEPT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.accept_plotid"
+MISSION_CFG_ACCEPT_PLOTID_FIELD.number = 47
+MISSION_CFG_ACCEPT_PLOTID_FIELD.index = 46
+MISSION_CFG_ACCEPT_PLOTID_FIELD.label = 2
+MISSION_CFG_ACCEPT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_ACCEPT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_ACCEPT_PLOTID_FIELD.type = 5
+MISSION_CFG_ACCEPT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_CONDUCT_PLOTID_FIELD.name = "conduct_plotid"
+MISSION_CFG_CONDUCT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_plotid"
+MISSION_CFG_CONDUCT_PLOTID_FIELD.number = 48
+MISSION_CFG_CONDUCT_PLOTID_FIELD.index = 47
+MISSION_CFG_CONDUCT_PLOTID_FIELD.label = 2
+MISSION_CFG_CONDUCT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_CONDUCT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_CONDUCT_PLOTID_FIELD.type = 5
+MISSION_CFG_CONDUCT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_SUBMIT_PLOTID_FIELD.name = "submit_plotid"
+MISSION_CFG_SUBMIT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.submit_plotid"
+MISSION_CFG_SUBMIT_PLOTID_FIELD.number = 49
+MISSION_CFG_SUBMIT_PLOTID_FIELD.index = 48
+MISSION_CFG_SUBMIT_PLOTID_FIELD.label = 2
+MISSION_CFG_SUBMIT_PLOTID_FIELD.has_default_value = false
+MISSION_CFG_SUBMIT_PLOTID_FIELD.default_value = 0
+MISSION_CFG_SUBMIT_PLOTID_FIELD.type = 5
+MISSION_CFG_SUBMIT_PLOTID_FIELD.cpp_type = 1
+
+MISSION_CFG_TRIGGER_BLUR_FIELD.name = "trigger_blur"
+MISSION_CFG_TRIGGER_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.trigger_blur"
+MISSION_CFG_TRIGGER_BLUR_FIELD.number = 50
+MISSION_CFG_TRIGGER_BLUR_FIELD.index = 49
+MISSION_CFG_TRIGGER_BLUR_FIELD.label = 2
+MISSION_CFG_TRIGGER_BLUR_FIELD.has_default_value = false
+MISSION_CFG_TRIGGER_BLUR_FIELD.default_value = 0
+MISSION_CFG_TRIGGER_BLUR_FIELD.type = 5
+MISSION_CFG_TRIGGER_BLUR_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPT_BLUR_FIELD.name = "accept_blur"
+MISSION_CFG_ACCEPT_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.accept_blur"
+MISSION_CFG_ACCEPT_BLUR_FIELD.number = 51
+MISSION_CFG_ACCEPT_BLUR_FIELD.index = 50
+MISSION_CFG_ACCEPT_BLUR_FIELD.label = 2
+MISSION_CFG_ACCEPT_BLUR_FIELD.has_default_value = false
+MISSION_CFG_ACCEPT_BLUR_FIELD.default_value = 0
+MISSION_CFG_ACCEPT_BLUR_FIELD.type = 5
+MISSION_CFG_ACCEPT_BLUR_FIELD.cpp_type = 1
+
+MISSION_CFG_CONDUCT_BLUR_FIELD.name = "conduct_blur"
+MISSION_CFG_CONDUCT_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.conduct_blur"
+MISSION_CFG_CONDUCT_BLUR_FIELD.number = 52
+MISSION_CFG_CONDUCT_BLUR_FIELD.index = 51
+MISSION_CFG_CONDUCT_BLUR_FIELD.label = 2
+MISSION_CFG_CONDUCT_BLUR_FIELD.has_default_value = false
+MISSION_CFG_CONDUCT_BLUR_FIELD.default_value = 0
+MISSION_CFG_CONDUCT_BLUR_FIELD.type = 5
+MISSION_CFG_CONDUCT_BLUR_FIELD.cpp_type = 1
+
+MISSION_CFG_REWARD_ITEMID_FIELD.name = "reward_itemid"
+MISSION_CFG_REWARD_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.reward_itemid"
+MISSION_CFG_REWARD_ITEMID_FIELD.number = 53
+MISSION_CFG_REWARD_ITEMID_FIELD.index = 52
+MISSION_CFG_REWARD_ITEMID_FIELD.label = 2
+MISSION_CFG_REWARD_ITEMID_FIELD.has_default_value = false
+MISSION_CFG_REWARD_ITEMID_FIELD.default_value = 0
+MISSION_CFG_REWARD_ITEMID_FIELD.type = 5
+MISSION_CFG_REWARD_ITEMID_FIELD.cpp_type = 1
+
+MISSION_CFG_FAILED_ITEMID_FIELD.name = "failed_itemid"
+MISSION_CFG_FAILED_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.failed_itemid"
+MISSION_CFG_FAILED_ITEMID_FIELD.number = 54
+MISSION_CFG_FAILED_ITEMID_FIELD.index = 53
+MISSION_CFG_FAILED_ITEMID_FIELD.label = 2
+MISSION_CFG_FAILED_ITEMID_FIELD.has_default_value = false
+MISSION_CFG_FAILED_ITEMID_FIELD.default_value = 0
+MISSION_CFG_FAILED_ITEMID_FIELD.type = 5
+MISSION_CFG_FAILED_ITEMID_FIELD.cpp_type = 1
+
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.name = "exclusive4_itemid"
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.exclusive4_itemid"
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.number = 55
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.index = 54
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.label = 3
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.has_default_value = false
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.default_value = {}
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.type = 5
+MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.cpp_type = 1
+
+MISSION_CFG_DISPLAY_WHETHER_FIELD.name = "display_whether"
+MISSION_CFG_DISPLAY_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.display_whether"
+MISSION_CFG_DISPLAY_WHETHER_FIELD.number = 56
+MISSION_CFG_DISPLAY_WHETHER_FIELD.index = 55
+MISSION_CFG_DISPLAY_WHETHER_FIELD.label = 2
+MISSION_CFG_DISPLAY_WHETHER_FIELD.has_default_value = false
+MISSION_CFG_DISPLAY_WHETHER_FIELD.default_value = 0
+MISSION_CFG_DISPLAY_WHETHER_FIELD.type = 5
+MISSION_CFG_DISPLAY_WHETHER_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.name = "accept_delivery"
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.full_name = ".ftcfg.mission_cfg.accept_delivery"
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.number = 57
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.index = 56
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.label = 3
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.has_default_value = false
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.default_value = {}
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.type = 5
+MISSION_CFG_ACCEPT_DELIVERY_FIELD.cpp_type = 1
+
+MISSION_CFG_MISSION_CONVOYS_FIELD.name = "mission_convoys"
+MISSION_CFG_MISSION_CONVOYS_FIELD.full_name = ".ftcfg.mission_cfg.mission_convoys"
+MISSION_CFG_MISSION_CONVOYS_FIELD.number = 58
+MISSION_CFG_MISSION_CONVOYS_FIELD.index = 57
+MISSION_CFG_MISSION_CONVOYS_FIELD.label = 3
+MISSION_CFG_MISSION_CONVOYS_FIELD.has_default_value = false
+MISSION_CFG_MISSION_CONVOYS_FIELD.default_value = {}
+MISSION_CFG_MISSION_CONVOYS_FIELD.type = 5
+MISSION_CFG_MISSION_CONVOYS_FIELD.cpp_type = 1
+
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.name = "biaoche_mount"
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.full_name = ".ftcfg.mission_cfg.biaoche_mount"
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.number = 59
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.index = 58
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.label = 2
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.has_default_value = false
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.default_value = 0
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.type = 5
+MISSION_CFG_BIAOCHE_MOUNT_FIELD.cpp_type = 1
+
+MISSION_CFG_SCENE_IS_COPY_FIELD.name = "scene_is_copy"
+MISSION_CFG_SCENE_IS_COPY_FIELD.full_name = ".ftcfg.mission_cfg.scene_is_copy"
+MISSION_CFG_SCENE_IS_COPY_FIELD.number = 60
+MISSION_CFG_SCENE_IS_COPY_FIELD.index = 59
+MISSION_CFG_SCENE_IS_COPY_FIELD.label = 2
+MISSION_CFG_SCENE_IS_COPY_FIELD.has_default_value = false
+MISSION_CFG_SCENE_IS_COPY_FIELD.default_value = 0
+MISSION_CFG_SCENE_IS_COPY_FIELD.type = 5
+MISSION_CFG_SCENE_IS_COPY_FIELD.cpp_type = 1
+
+MISSION_CFG_ALLOW_SHOW_FIELD.name = "allow_show"
+MISSION_CFG_ALLOW_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.allow_show"
+MISSION_CFG_ALLOW_SHOW_FIELD.number = 61
+MISSION_CFG_ALLOW_SHOW_FIELD.index = 60
+MISSION_CFG_ALLOW_SHOW_FIELD.label = 2
+MISSION_CFG_ALLOW_SHOW_FIELD.has_default_value = false
+MISSION_CFG_ALLOW_SHOW_FIELD.default_value = 0
+MISSION_CFG_ALLOW_SHOW_FIELD.type = 5
+MISSION_CFG_ALLOW_SHOW_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPTED_SHOW_FIELD.name = "accepted_show"
+MISSION_CFG_ACCEPTED_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.accepted_show"
+MISSION_CFG_ACCEPTED_SHOW_FIELD.number = 62
+MISSION_CFG_ACCEPTED_SHOW_FIELD.index = 61
+MISSION_CFG_ACCEPTED_SHOW_FIELD.label = 2
+MISSION_CFG_ACCEPTED_SHOW_FIELD.has_default_value = false
+MISSION_CFG_ACCEPTED_SHOW_FIELD.default_value = 0
+MISSION_CFG_ACCEPTED_SHOW_FIELD.type = 5
+MISSION_CFG_ACCEPTED_SHOW_FIELD.cpp_type = 1
+
+MISSION_CFG_COMMIT_SHOW_FIELD.name = "commit_show"
+MISSION_CFG_COMMIT_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.commit_show"
+MISSION_CFG_COMMIT_SHOW_FIELD.number = 63
+MISSION_CFG_COMMIT_SHOW_FIELD.index = 62
+MISSION_CFG_COMMIT_SHOW_FIELD.label = 2
+MISSION_CFG_COMMIT_SHOW_FIELD.has_default_value = false
+MISSION_CFG_COMMIT_SHOW_FIELD.default_value = 0
+MISSION_CFG_COMMIT_SHOW_FIELD.type = 5
+MISSION_CFG_COMMIT_SHOW_FIELD.cpp_type = 1
+
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.name = "accepted_inexecution"
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.full_name = ".ftcfg.mission_cfg.accepted_inexecution"
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.number = 64
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.index = 63
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.label = 2
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.has_default_value = false
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.default_value = 0
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.type = 5
+MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.cpp_type = 1
+
+MISSION_CFG_OPEN_FUNC_FIELD.name = "open_func"
+MISSION_CFG_OPEN_FUNC_FIELD.full_name = ".ftcfg.mission_cfg.open_func"
+MISSION_CFG_OPEN_FUNC_FIELD.number = 65
+MISSION_CFG_OPEN_FUNC_FIELD.index = 64
+MISSION_CFG_OPEN_FUNC_FIELD.label = 2
+MISSION_CFG_OPEN_FUNC_FIELD.has_default_value = false
+MISSION_CFG_OPEN_FUNC_FIELD.default_value = nil
+MISSION_CFG_OPEN_FUNC_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+MISSION_CFG_OPEN_FUNC_FIELD.type = 14
+MISSION_CFG_OPEN_FUNC_FIELD.cpp_type = 8
+
+MISSION_CFG_BTN_NAME_FIELD.name = "btn_name"
+MISSION_CFG_BTN_NAME_FIELD.full_name = ".ftcfg.mission_cfg.btn_name"
+MISSION_CFG_BTN_NAME_FIELD.number = 66
+MISSION_CFG_BTN_NAME_FIELD.index = 65
+MISSION_CFG_BTN_NAME_FIELD.label = 2
+MISSION_CFG_BTN_NAME_FIELD.has_default_value = false
+MISSION_CFG_BTN_NAME_FIELD.default_value = 0
+MISSION_CFG_BTN_NAME_FIELD.type = 5
+MISSION_CFG_BTN_NAME_FIELD.cpp_type = 1
+
+MISSION_CFG_EVENT_TYPE_FIELD.name = "event_type"
+MISSION_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.mission_cfg.event_type"
+MISSION_CFG_EVENT_TYPE_FIELD.number = 67
+MISSION_CFG_EVENT_TYPE_FIELD.index = 66
+MISSION_CFG_EVENT_TYPE_FIELD.label = 2
+MISSION_CFG_EVENT_TYPE_FIELD.has_default_value = false
+MISSION_CFG_EVENT_TYPE_FIELD.default_value = 0
+MISSION_CFG_EVENT_TYPE_FIELD.type = 5
+MISSION_CFG_EVENT_TYPE_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.name = "kill_player_num"
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_num"
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.number = 68
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.index = 67
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.label = 2
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.has_default_value = false
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.default_value = 0
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.type = 5
+MISSION_CFG_KILL_PLAYER_NUM_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.name = "kill_player_level"
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_level"
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.number = 69
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.index = 68
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.label = 2
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.has_default_value = false
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.default_value = 0
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.type = 5
+MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.cpp_type = 1
+
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.name = "kill_player_map"
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_map"
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.number = 70
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.index = 69
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.label = 3
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.has_default_value = false
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.default_value = {}
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.type = 5
+MISSION_CFG_KILL_PLAYER_MAP_FIELD.cpp_type = 1
+
+MISSION_CFG_SUPPORT_PAUSE_FIELD.name = "support_pause"
+MISSION_CFG_SUPPORT_PAUSE_FIELD.full_name = ".ftcfg.mission_cfg.support_pause"
+MISSION_CFG_SUPPORT_PAUSE_FIELD.number = 71
+MISSION_CFG_SUPPORT_PAUSE_FIELD.index = 70
+MISSION_CFG_SUPPORT_PAUSE_FIELD.label = 2
+MISSION_CFG_SUPPORT_PAUSE_FIELD.has_default_value = false
+MISSION_CFG_SUPPORT_PAUSE_FIELD.default_value = 0
+MISSION_CFG_SUPPORT_PAUSE_FIELD.type = 5
+MISSION_CFG_SUPPORT_PAUSE_FIELD.cpp_type = 1
+
+MISSION_CFG_SUBMISSION_HEAD_FIELD.name = "submission_head"
+MISSION_CFG_SUBMISSION_HEAD_FIELD.full_name = ".ftcfg.mission_cfg.submission_head"
+MISSION_CFG_SUBMISSION_HEAD_FIELD.number = 72
+MISSION_CFG_SUBMISSION_HEAD_FIELD.index = 71
+MISSION_CFG_SUBMISSION_HEAD_FIELD.label = 2
+MISSION_CFG_SUBMISSION_HEAD_FIELD.has_default_value = false
+MISSION_CFG_SUBMISSION_HEAD_FIELD.default_value = 0
+MISSION_CFG_SUBMISSION_HEAD_FIELD.type = 5
+MISSION_CFG_SUBMISSION_HEAD_FIELD.cpp_type = 1
+
+MISSION_CFG_ROUTE_MARK_ID_FIELD.name = "route_mark_id"
+MISSION_CFG_ROUTE_MARK_ID_FIELD.full_name = ".ftcfg.mission_cfg.route_mark_id"
+MISSION_CFG_ROUTE_MARK_ID_FIELD.number = 73
+MISSION_CFG_ROUTE_MARK_ID_FIELD.index = 72
+MISSION_CFG_ROUTE_MARK_ID_FIELD.label = 2
+MISSION_CFG_ROUTE_MARK_ID_FIELD.has_default_value = false
+MISSION_CFG_ROUTE_MARK_ID_FIELD.default_value = 0
+MISSION_CFG_ROUTE_MARK_ID_FIELD.type = 5
+MISSION_CFG_ROUTE_MARK_ID_FIELD.cpp_type = 1
+
+MISSION_CFG.name = "mission_cfg"
+MISSION_CFG.full_name = ".ftcfg.mission_cfg"
+MISSION_CFG.nested_types = {}
+MISSION_CFG.enum_types = {}
+MISSION_CFG.fields = {MISSION_CFG_ID_FIELD, MISSION_CFG_MISSION_GROUPID_FIELD, MISSION_CFG_MISSION_COLOUR_FIELD, MISSION_CFG_MISSION_NAME_FIELD, MISSION_CFG_MISSION_TEXT_FIELD, MISSION_CFG_MISSION_TARGET1_FIELD, MISSION_CFG_MISSION_TARGET2_FIELD, MISSION_CFG_MISSION_TARGET3_FIELD, MISSION_CFG_MISSION_TYPE_FIELD, MISSION_CFG_MISSION_TARGETTYPE_FIELD, MISSION_CFG_MISSION_OCCUPATION_FIELD, MISSION_CFG_REPEAT_WHETHER_FIELD, MISSION_CFG_DIRECTACCE_WHETHER_FIELD, MISSION_CFG_AUTO_WHETHER_FIELD, MISSION_CFG_AUTO_COMMIT_FIELD, MISSION_CFG_MISSION_FRONTID_FIELD, MISSION_CFG_MISSION_TRIGGERLV_FIELD, MISSION_CFG_MISSION_GIVEUP_FIELD, MISSION_CFG_MISSIONNODE_LIST_FIELD, MISSION_CFG_DAILY_TIMES_FIELD, MISSION_CFG_RESET_TIME_FIELD, MISSION_CFG_MISSION_DURATION_FIELD, MISSION_CFG_ACCEPT_SCENEID_FIELD, MISSION_CFG_ACCEPT_NPCID_FIELD, MISSION_CFG_CONDUCT_SCENEID_FIELD, MISSION_CFG_CONDUCT_NPCID_FIELD, MISSION_CFG_SUBMIT_SCENEID_FIELD, MISSION_CFG_SUBMIT_NPCID_FIELD, MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD, MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD, MISSION_CFG_SUBMITSEAT_PLOTID_FIELD, MISSION_CFG_KILL_NPCID_FIELD, MISSION_CFG_KILL_NPCNUM_FIELD, MISSION_CFG_KILL_NPCDROP_FIELD, MISSION_CFG_TALK_PLOTID_FIELD, MISSION_CFG_COLLECT_ITEMID_FIELD, MISSION_CFG_COLLECT_ITEMNUM_FIELD, MISSION_CFG_SCENE_ID_FIELD, MISSION_CFG_POS_X_FIELD, MISSION_CFG_POS_Z_FIELD, MISSION_CFG_COLLECTION_NPCID_FIELD, MISSION_CFG_COLLECTION_NPCNUM_FIELD, MISSION_CFG_USED_ITEMID_FIELD, MISSION_CFG_INTO_BATTLEID_FIELD, MISSION_CFG_TARGET_GRADE_FIELD, MISSION_CFG_FUNCTION_SCRIPT_FIELD, MISSION_CFG_ACCEPT_PLOTID_FIELD, MISSION_CFG_CONDUCT_PLOTID_FIELD, MISSION_CFG_SUBMIT_PLOTID_FIELD, MISSION_CFG_TRIGGER_BLUR_FIELD, MISSION_CFG_ACCEPT_BLUR_FIELD, MISSION_CFG_CONDUCT_BLUR_FIELD, MISSION_CFG_REWARD_ITEMID_FIELD, MISSION_CFG_FAILED_ITEMID_FIELD, MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD, MISSION_CFG_DISPLAY_WHETHER_FIELD, MISSION_CFG_ACCEPT_DELIVERY_FIELD, MISSION_CFG_MISSION_CONVOYS_FIELD, MISSION_CFG_BIAOCHE_MOUNT_FIELD, MISSION_CFG_SCENE_IS_COPY_FIELD, MISSION_CFG_ALLOW_SHOW_FIELD, MISSION_CFG_ACCEPTED_SHOW_FIELD, MISSION_CFG_COMMIT_SHOW_FIELD, MISSION_CFG_ACCEPTED_INEXECUTION_FIELD, MISSION_CFG_OPEN_FUNC_FIELD, MISSION_CFG_BTN_NAME_FIELD, MISSION_CFG_EVENT_TYPE_FIELD, MISSION_CFG_KILL_PLAYER_NUM_FIELD, MISSION_CFG_KILL_PLAYER_LEVEL_FIELD, MISSION_CFG_KILL_PLAYER_MAP_FIELD, MISSION_CFG_SUPPORT_PAUSE_FIELD, MISSION_CFG_SUBMISSION_HEAD_FIELD, MISSION_CFG_ROUTE_MARK_ID_FIELD}
+MISSION_CFG.is_extendable = false
+MISSION_CFG.extensions = {}
+MISSION_CFGS_ITEMS_FIELD.name = "items"
+MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mission_cfgs.items"
+MISSION_CFGS_ITEMS_FIELD.number = 1
+MISSION_CFGS_ITEMS_FIELD.index = 0
+MISSION_CFGS_ITEMS_FIELD.label = 3
+MISSION_CFGS_ITEMS_FIELD.has_default_value = false
+MISSION_CFGS_ITEMS_FIELD.default_value = {}
+MISSION_CFGS_ITEMS_FIELD.message_type = MISSION_CFG
+MISSION_CFGS_ITEMS_FIELD.type = 11
+MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MISSION_CFGS.name = "mission_cfgs"
+MISSION_CFGS.full_name = ".ftcfg.mission_cfgs"
+MISSION_CFGS.nested_types = {}
+MISSION_CFGS.enum_types = {}
+MISSION_CFGS.fields = {MISSION_CFGS_ITEMS_FIELD}
+MISSION_CFGS.is_extendable = false
+MISSION_CFGS.extensions = {}
+MISSION_GROUP_CFG_ID_FIELD.name = "id"
+MISSION_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.mission_group_cfg.id"
+MISSION_GROUP_CFG_ID_FIELD.number = 1
+MISSION_GROUP_CFG_ID_FIELD.index = 0
+MISSION_GROUP_CFG_ID_FIELD.label = 2
+MISSION_GROUP_CFG_ID_FIELD.has_default_value = false
+MISSION_GROUP_CFG_ID_FIELD.default_value = 0
+MISSION_GROUP_CFG_ID_FIELD.type = 5
+MISSION_GROUP_CFG_ID_FIELD.cpp_type = 1
+
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.name = "quest_groupname"
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.full_name = ".ftcfg.mission_group_cfg.quest_groupname"
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.number = 2
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.index = 1
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.label = 2
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.has_default_value = false
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.default_value = 0
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.type = 5
+MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.cpp_type = 1
+
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.name = "quest_grouptips"
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.full_name = ".ftcfg.mission_group_cfg.quest_grouptips"
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.number = 3
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.index = 2
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.label = 2
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.has_default_value = false
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.default_value = 0
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.type = 5
+MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.cpp_type = 1
+
+MISSION_GROUP_CFG.name = "mission_group_cfg"
+MISSION_GROUP_CFG.full_name = ".ftcfg.mission_group_cfg"
+MISSION_GROUP_CFG.nested_types = {}
+MISSION_GROUP_CFG.enum_types = {}
+MISSION_GROUP_CFG.fields = {MISSION_GROUP_CFG_ID_FIELD, MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD, MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD}
+MISSION_GROUP_CFG.is_extendable = false
+MISSION_GROUP_CFG.extensions = {}
+MISSION_GROUP_CFGS_ITEMS_FIELD.name = "items"
+MISSION_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mission_group_cfgs.items"
+MISSION_GROUP_CFGS_ITEMS_FIELD.number = 1
+MISSION_GROUP_CFGS_ITEMS_FIELD.index = 0
+MISSION_GROUP_CFGS_ITEMS_FIELD.label = 3
+MISSION_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+MISSION_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+MISSION_GROUP_CFGS_ITEMS_FIELD.message_type = MISSION_GROUP_CFG
+MISSION_GROUP_CFGS_ITEMS_FIELD.type = 11
+MISSION_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MISSION_GROUP_CFGS.name = "mission_group_cfgs"
+MISSION_GROUP_CFGS.full_name = ".ftcfg.mission_group_cfgs"
+MISSION_GROUP_CFGS.nested_types = {}
+MISSION_GROUP_CFGS.enum_types = {}
+MISSION_GROUP_CFGS.fields = {MISSION_GROUP_CFGS_ITEMS_FIELD}
+MISSION_GROUP_CFGS.is_extendable = false
+MISSION_GROUP_CFGS.extensions = {}
+NPC_SPAWN_METHOD_CFG_ID_FIELD.name = "id"
+NPC_SPAWN_METHOD_CFG_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.id"
+NPC_SPAWN_METHOD_CFG_ID_FIELD.number = 1
+NPC_SPAWN_METHOD_CFG_ID_FIELD.index = 0
+NPC_SPAWN_METHOD_CFG_ID_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_ID_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_ID_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_ID_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_ID_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.name = "group_id"
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.group_id"
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.number = 2
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.index = 1
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.name = "map_id"
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.map_id"
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.number = 3
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.index = 2
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.name = "npc_id"
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.npc_id"
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.number = 4
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.index = 3
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.name = "pos_x"
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_x"
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.number = 5
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.index = 4
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.default_value = 0.0
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.type = 2
+NPC_SPAWN_METHOD_CFG_POS_X_FIELD.cpp_type = 6
+
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.name = "pos_y"
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_y"
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.number = 6
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.index = 5
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.default_value = 0.0
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.type = 2
+NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.cpp_type = 6
+
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.name = "pos_z"
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_z"
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.number = 7
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.index = 6
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.default_value = 0.0
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.type = 2
+NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.cpp_type = 6
+
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.name = "orientation"
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.orientation"
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.number = 8
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.index = 7
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.default_value = 0.0
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.type = 2
+NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.cpp_type = 6
+
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.name = "relive_type"
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.relive_type"
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.number = 9
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.index = 8
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.name = "relive_time"
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.relive_time"
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.number = 10
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.index = 9
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.default_value = 0
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.name = "service_list"
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.service_list"
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.number = 11
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.index = 10
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.label = 3
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.default_value = {}
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.name = "npc_type"
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.npc_type"
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.number = 12
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.index = 11
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.label = 2
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.default_value = nil
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.enum_type = config_predefine_pb.EENTITYTYPE
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.type = 14
+NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.cpp_type = 8
+
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.name = "mission_ids"
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.mission_ids"
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.number = 13
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.index = 12
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.label = 3
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.default_value = {}
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.type = 5
+NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.cpp_type = 1
+
+NPC_SPAWN_METHOD_CFG.name = "npc_spawn_method_cfg"
+NPC_SPAWN_METHOD_CFG.full_name = ".ftcfg.npc_spawn_method_cfg"
+NPC_SPAWN_METHOD_CFG.nested_types = {}
+NPC_SPAWN_METHOD_CFG.enum_types = {}
+NPC_SPAWN_METHOD_CFG.fields = {NPC_SPAWN_METHOD_CFG_ID_FIELD, NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD, NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD, NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD, NPC_SPAWN_METHOD_CFG_POS_X_FIELD, NPC_SPAWN_METHOD_CFG_POS_Y_FIELD, NPC_SPAWN_METHOD_CFG_POS_Z_FIELD, NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD, NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD, NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD, NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD, NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD, NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD}
+NPC_SPAWN_METHOD_CFG.is_extendable = false
+NPC_SPAWN_METHOD_CFG.extensions = {}
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.name = "items"
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.npc_spawn_method_cfgs.items"
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.number = 1
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.index = 0
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.label = 3
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.has_default_value = false
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.default_value = {}
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.message_type = NPC_SPAWN_METHOD_CFG
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.type = 11
+NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+NPC_SPAWN_METHOD_CFGS.name = "npc_spawn_method_cfgs"
+NPC_SPAWN_METHOD_CFGS.full_name = ".ftcfg.npc_spawn_method_cfgs"
+NPC_SPAWN_METHOD_CFGS.nested_types = {}
+NPC_SPAWN_METHOD_CFGS.enum_types = {}
+NPC_SPAWN_METHOD_CFGS.fields = {NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD}
+NPC_SPAWN_METHOD_CFGS.is_extendable = false
+NPC_SPAWN_METHOD_CFGS.extensions = {}
+NPC_FUNCTION_CFG_ID_FIELD.name = "id"
+NPC_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.npc_function_cfg.id"
+NPC_FUNCTION_CFG_ID_FIELD.number = 1
+NPC_FUNCTION_CFG_ID_FIELD.index = 0
+NPC_FUNCTION_CFG_ID_FIELD.label = 2
+NPC_FUNCTION_CFG_ID_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_ID_FIELD.default_value = 0
+NPC_FUNCTION_CFG_ID_FIELD.type = 5
+NPC_FUNCTION_CFG_ID_FIELD.cpp_type = 1
+
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.name = "scene_id"
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.npc_function_cfg.scene_id"
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.number = 2
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.index = 1
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.label = 2
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.default_value = 0
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.type = 5
+NPC_FUNCTION_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.name = "open_dialog"
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.full_name = ".ftcfg.npc_function_cfg.open_dialog"
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.number = 3
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.index = 2
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.label = 2
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.default_value = false
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.type = 8
+NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.cpp_type = 7
+
+NPC_FUNCTION_CFG_BUTTONS_FIELD.name = "buttons"
+NPC_FUNCTION_CFG_BUTTONS_FIELD.full_name = ".ftcfg.npc_function_cfg.buttons"
+NPC_FUNCTION_CFG_BUTTONS_FIELD.number = 4
+NPC_FUNCTION_CFG_BUTTONS_FIELD.index = 3
+NPC_FUNCTION_CFG_BUTTONS_FIELD.label = 3
+NPC_FUNCTION_CFG_BUTTONS_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_BUTTONS_FIELD.default_value = {}
+NPC_FUNCTION_CFG_BUTTONS_FIELD.type = 5
+NPC_FUNCTION_CFG_BUTTONS_FIELD.cpp_type = 1
+
+NPC_FUNCTION_CFG_CONTENT_FIELD.name = "content"
+NPC_FUNCTION_CFG_CONTENT_FIELD.full_name = ".ftcfg.npc_function_cfg.content"
+NPC_FUNCTION_CFG_CONTENT_FIELD.number = 5
+NPC_FUNCTION_CFG_CONTENT_FIELD.index = 4
+NPC_FUNCTION_CFG_CONTENT_FIELD.label = 2
+NPC_FUNCTION_CFG_CONTENT_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_CONTENT_FIELD.default_value = 0
+NPC_FUNCTION_CFG_CONTENT_FIELD.type = 5
+NPC_FUNCTION_CFG_CONTENT_FIELD.cpp_type = 1
+
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.name = "functions"
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.full_name = ".ftcfg.npc_function_cfg.functions"
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.number = 6
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.index = 5
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.label = 3
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.default_value = {}
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.type = 14
+NPC_FUNCTION_CFG_FUNCTIONS_FIELD.cpp_type = 8
+
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.name = "func_para"
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.full_name = ".ftcfg.npc_function_cfg.func_para"
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.number = 7
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.index = 6
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.label = 3
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.default_value = {}
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.type = 5
+NPC_FUNCTION_CFG_FUNC_PARA_FIELD.cpp_type = 1
+
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.name = "show_scale"
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.full_name = ".ftcfg.npc_function_cfg.show_scale"
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.number = 8
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.index = 7
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.label = 2
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.has_default_value = false
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.default_value = 0.0
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.type = 2
+NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.cpp_type = 6
+
+NPC_FUNCTION_CFG.name = "npc_function_cfg"
+NPC_FUNCTION_CFG.full_name = ".ftcfg.npc_function_cfg"
+NPC_FUNCTION_CFG.nested_types = {}
+NPC_FUNCTION_CFG.enum_types = {}
+NPC_FUNCTION_CFG.fields = {NPC_FUNCTION_CFG_ID_FIELD, NPC_FUNCTION_CFG_SCENE_ID_FIELD, NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD, NPC_FUNCTION_CFG_BUTTONS_FIELD, NPC_FUNCTION_CFG_CONTENT_FIELD, NPC_FUNCTION_CFG_FUNCTIONS_FIELD, NPC_FUNCTION_CFG_FUNC_PARA_FIELD, NPC_FUNCTION_CFG_SHOW_SCALE_FIELD}
+NPC_FUNCTION_CFG.is_extendable = false
+NPC_FUNCTION_CFG.extensions = {}
+NPC_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
+NPC_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.npc_function_cfgs.items"
+NPC_FUNCTION_CFGS_ITEMS_FIELD.number = 1
+NPC_FUNCTION_CFGS_ITEMS_FIELD.index = 0
+NPC_FUNCTION_CFGS_ITEMS_FIELD.label = 3
+NPC_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
+NPC_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
+NPC_FUNCTION_CFGS_ITEMS_FIELD.message_type = NPC_FUNCTION_CFG
+NPC_FUNCTION_CFGS_ITEMS_FIELD.type = 11
+NPC_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+NPC_FUNCTION_CFGS.name = "npc_function_cfgs"
+NPC_FUNCTION_CFGS.full_name = ".ftcfg.npc_function_cfgs"
+NPC_FUNCTION_CFGS.nested_types = {}
+NPC_FUNCTION_CFGS.enum_types = {}
+NPC_FUNCTION_CFGS.fields = {NPC_FUNCTION_CFGS_ITEMS_FIELD}
+NPC_FUNCTION_CFGS.is_extendable = false
+NPC_FUNCTION_CFGS.extensions = {}
+PLAYSCG_CFG_ID_FIELD.name = "id"
+PLAYSCG_CFG_ID_FIELD.full_name = ".ftcfg.playscg_cfg.id"
+PLAYSCG_CFG_ID_FIELD.number = 1
+PLAYSCG_CFG_ID_FIELD.index = 0
+PLAYSCG_CFG_ID_FIELD.label = 2
+PLAYSCG_CFG_ID_FIELD.has_default_value = false
+PLAYSCG_CFG_ID_FIELD.default_value = 0
+PLAYSCG_CFG_ID_FIELD.type = 5
+PLAYSCG_CFG_ID_FIELD.cpp_type = 1
+
+PLAYSCG_CFG_STATE_FIELD.name = "state"
+PLAYSCG_CFG_STATE_FIELD.full_name = ".ftcfg.playscg_cfg.state"
+PLAYSCG_CFG_STATE_FIELD.number = 2
+PLAYSCG_CFG_STATE_FIELD.index = 1
+PLAYSCG_CFG_STATE_FIELD.label = 2
+PLAYSCG_CFG_STATE_FIELD.has_default_value = false
+PLAYSCG_CFG_STATE_FIELD.default_value = 0
+PLAYSCG_CFG_STATE_FIELD.type = 5
+PLAYSCG_CFG_STATE_FIELD.cpp_type = 1
+
+PLAYSCG_CFG.name = "playscg_cfg"
+PLAYSCG_CFG.full_name = ".ftcfg.playscg_cfg"
+PLAYSCG_CFG.nested_types = {}
+PLAYSCG_CFG.enum_types = {}
+PLAYSCG_CFG.fields = {PLAYSCG_CFG_ID_FIELD, PLAYSCG_CFG_STATE_FIELD}
+PLAYSCG_CFG.is_extendable = false
+PLAYSCG_CFG.extensions = {}
+PLAYSCG_CFGS_ITEMS_FIELD.name = "items"
+PLAYSCG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.playscg_cfgs.items"
+PLAYSCG_CFGS_ITEMS_FIELD.number = 1
+PLAYSCG_CFGS_ITEMS_FIELD.index = 0
+PLAYSCG_CFGS_ITEMS_FIELD.label = 3
+PLAYSCG_CFGS_ITEMS_FIELD.has_default_value = false
+PLAYSCG_CFGS_ITEMS_FIELD.default_value = {}
+PLAYSCG_CFGS_ITEMS_FIELD.message_type = PLAYSCG_CFG
+PLAYSCG_CFGS_ITEMS_FIELD.type = 11
+PLAYSCG_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PLAYSCG_CFGS.name = "playscg_cfgs"
+PLAYSCG_CFGS.full_name = ".ftcfg.playscg_cfgs"
+PLAYSCG_CFGS.nested_types = {}
+PLAYSCG_CFGS.enum_types = {}
+PLAYSCG_CFGS.fields = {PLAYSCG_CFGS_ITEMS_FIELD}
+PLAYSCG_CFGS.is_extendable = false
+PLAYSCG_CFGS.extensions = {}
+PLOT_DATA_CFG_ID_FIELD.name = "id"
+PLOT_DATA_CFG_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.id"
+PLOT_DATA_CFG_ID_FIELD.number = 1
+PLOT_DATA_CFG_ID_FIELD.index = 0
+PLOT_DATA_CFG_ID_FIELD.label = 2
+PLOT_DATA_CFG_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_ID_FIELD.type = 5
+PLOT_DATA_CFG_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_TYPE_FIELD.name = "type"
+PLOT_DATA_CFG_TYPE_FIELD.full_name = ".ftcfg.plot_data_cfg.type"
+PLOT_DATA_CFG_TYPE_FIELD.number = 2
+PLOT_DATA_CFG_TYPE_FIELD.index = 1
+PLOT_DATA_CFG_TYPE_FIELD.label = 2
+PLOT_DATA_CFG_TYPE_FIELD.has_default_value = false
+PLOT_DATA_CFG_TYPE_FIELD.default_value = 0
+PLOT_DATA_CFG_TYPE_FIELD.type = 5
+PLOT_DATA_CFG_TYPE_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.name = "next_plot"
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.full_name = ".ftcfg.plot_data_cfg.next_plot"
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.number = 3
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.index = 2
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.label = 2
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.has_default_value = false
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.default_value = 0
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.type = 5
+PLOT_DATA_CFG_NEXT_PLOT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_CONTENT_ID_FIELD.name = "content_id"
+PLOT_DATA_CFG_CONTENT_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.content_id"
+PLOT_DATA_CFG_CONTENT_ID_FIELD.number = 4
+PLOT_DATA_CFG_CONTENT_ID_FIELD.index = 3
+PLOT_DATA_CFG_CONTENT_ID_FIELD.label = 2
+PLOT_DATA_CFG_CONTENT_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_CONTENT_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_CONTENT_ID_FIELD.type = 5
+PLOT_DATA_CFG_CONTENT_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_CAN_SKIP_FIELD.name = "can_skip"
+PLOT_DATA_CFG_CAN_SKIP_FIELD.full_name = ".ftcfg.plot_data_cfg.can_skip"
+PLOT_DATA_CFG_CAN_SKIP_FIELD.number = 5
+PLOT_DATA_CFG_CAN_SKIP_FIELD.index = 4
+PLOT_DATA_CFG_CAN_SKIP_FIELD.label = 2
+PLOT_DATA_CFG_CAN_SKIP_FIELD.has_default_value = false
+PLOT_DATA_CFG_CAN_SKIP_FIELD.default_value = false
+PLOT_DATA_CFG_CAN_SKIP_FIELD.type = 8
+PLOT_DATA_CFG_CAN_SKIP_FIELD.cpp_type = 7
+
+PLOT_DATA_CFG_SHOW_ID_FIELD.name = "show_id"
+PLOT_DATA_CFG_SHOW_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.show_id"
+PLOT_DATA_CFG_SHOW_ID_FIELD.number = 6
+PLOT_DATA_CFG_SHOW_ID_FIELD.index = 5
+PLOT_DATA_CFG_SHOW_ID_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_ID_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_IMAGE_ID_FIELD.name = "image_id"
+PLOT_DATA_CFG_IMAGE_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.image_id"
+PLOT_DATA_CFG_IMAGE_ID_FIELD.number = 7
+PLOT_DATA_CFG_IMAGE_ID_FIELD.index = 6
+PLOT_DATA_CFG_IMAGE_ID_FIELD.label = 2
+PLOT_DATA_CFG_IMAGE_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_IMAGE_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_IMAGE_ID_FIELD.type = 5
+PLOT_DATA_CFG_IMAGE_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_STAY_TIME_FIELD.name = "stay_time"
+PLOT_DATA_CFG_STAY_TIME_FIELD.full_name = ".ftcfg.plot_data_cfg.stay_time"
+PLOT_DATA_CFG_STAY_TIME_FIELD.number = 8
+PLOT_DATA_CFG_STAY_TIME_FIELD.index = 7
+PLOT_DATA_CFG_STAY_TIME_FIELD.label = 2
+PLOT_DATA_CFG_STAY_TIME_FIELD.has_default_value = false
+PLOT_DATA_CFG_STAY_TIME_FIELD.default_value = 0.0
+PLOT_DATA_CFG_STAY_TIME_FIELD.type = 2
+PLOT_DATA_CFG_STAY_TIME_FIELD.cpp_type = 6
+
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.name = "audiores_id"
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.audiores_id"
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.number = 9
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.index = 8
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.label = 2
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.type = 5
+PLOT_DATA_CFG_AUDIORES_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_POS_FIELD.name = "show_pos"
+PLOT_DATA_CFG_SHOW_POS_FIELD.full_name = ".ftcfg.plot_data_cfg.show_pos"
+PLOT_DATA_CFG_SHOW_POS_FIELD.number = 10
+PLOT_DATA_CFG_SHOW_POS_FIELD.index = 9
+PLOT_DATA_CFG_SHOW_POS_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_POS_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_POS_FIELD.default_value = 0.0
+PLOT_DATA_CFG_SHOW_POS_FIELD.type = 2
+PLOT_DATA_CFG_SHOW_POS_FIELD.cpp_type = 6
+
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.name = "show_scale"
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.full_name = ".ftcfg.plot_data_cfg.show_scale"
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.number = 11
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.index = 10
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.default_value = 0.0
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.type = 2
+PLOT_DATA_CFG_SHOW_SCALE_FIELD.cpp_type = 6
+
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.name = "show_img_left"
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_img_left"
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.number = 12
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.index = 11
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.name = "show_name_left"
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_name_left"
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.number = 13
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.index = 12
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.name = "show_dark_left"
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_dark_left"
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.number = 14
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.index = 13
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.name = "show_zoom_left"
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_zoom_left"
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.number = 15
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.index = 14
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.default_value = 0.0
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.type = 2
+PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.cpp_type = 6
+
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.name = "show_img_right"
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_img_right"
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.number = 16
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.index = 15
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.name = "show_name_right"
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_name_right"
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.number = 17
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.index = 16
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.name = "show_dark_right"
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_dark_right"
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.number = 18
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.index = 17
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.name = "show_zoom_right"
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_zoom_right"
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.number = 19
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.index = 18
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.default_value = 0.0
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.type = 2
+PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.cpp_type = 6
+
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.name = "show_bg_id"
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.show_bg_id"
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.number = 20
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.index = 19
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.label = 2
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.has_default_value = false
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.default_value = 0
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.type = 5
+PLOT_DATA_CFG_SHOW_BG_ID_FIELD.cpp_type = 1
+
+PLOT_DATA_CFG_INSERT_NAME_FIELD.name = "insert_name"
+PLOT_DATA_CFG_INSERT_NAME_FIELD.full_name = ".ftcfg.plot_data_cfg.insert_name"
+PLOT_DATA_CFG_INSERT_NAME_FIELD.number = 21
+PLOT_DATA_CFG_INSERT_NAME_FIELD.index = 20
+PLOT_DATA_CFG_INSERT_NAME_FIELD.label = 2
+PLOT_DATA_CFG_INSERT_NAME_FIELD.has_default_value = false
+PLOT_DATA_CFG_INSERT_NAME_FIELD.default_value = false
+PLOT_DATA_CFG_INSERT_NAME_FIELD.type = 8
+PLOT_DATA_CFG_INSERT_NAME_FIELD.cpp_type = 7
+
+PLOT_DATA_CFG.name = "plot_data_cfg"
+PLOT_DATA_CFG.full_name = ".ftcfg.plot_data_cfg"
+PLOT_DATA_CFG.nested_types = {}
+PLOT_DATA_CFG.enum_types = {}
+PLOT_DATA_CFG.fields = {PLOT_DATA_CFG_ID_FIELD, PLOT_DATA_CFG_TYPE_FIELD, PLOT_DATA_CFG_NEXT_PLOT_FIELD, PLOT_DATA_CFG_CONTENT_ID_FIELD, PLOT_DATA_CFG_CAN_SKIP_FIELD, PLOT_DATA_CFG_SHOW_ID_FIELD, PLOT_DATA_CFG_IMAGE_ID_FIELD, PLOT_DATA_CFG_STAY_TIME_FIELD, PLOT_DATA_CFG_AUDIORES_ID_FIELD, PLOT_DATA_CFG_SHOW_POS_FIELD, PLOT_DATA_CFG_SHOW_SCALE_FIELD, PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD, PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD, PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD, PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD, PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_BG_ID_FIELD, PLOT_DATA_CFG_INSERT_NAME_FIELD}
+PLOT_DATA_CFG.is_extendable = false
+PLOT_DATA_CFG.extensions = {}
+PLOT_DATA_CFGS_ITEMS_FIELD.name = "items"
+PLOT_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.plot_data_cfgs.items"
+PLOT_DATA_CFGS_ITEMS_FIELD.number = 1
+PLOT_DATA_CFGS_ITEMS_FIELD.index = 0
+PLOT_DATA_CFGS_ITEMS_FIELD.label = 3
+PLOT_DATA_CFGS_ITEMS_FIELD.has_default_value = false
+PLOT_DATA_CFGS_ITEMS_FIELD.default_value = {}
+PLOT_DATA_CFGS_ITEMS_FIELD.message_type = PLOT_DATA_CFG
+PLOT_DATA_CFGS_ITEMS_FIELD.type = 11
+PLOT_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PLOT_DATA_CFGS.name = "plot_data_cfgs"
+PLOT_DATA_CFGS.full_name = ".ftcfg.plot_data_cfgs"
+PLOT_DATA_CFGS.nested_types = {}
+PLOT_DATA_CFGS.enum_types = {}
+PLOT_DATA_CFGS.fields = {PLOT_DATA_CFGS_ITEMS_FIELD}
+PLOT_DATA_CFGS.is_extendable = false
+PLOT_DATA_CFGS.extensions = {}
+GLOBAL_PARAM_CFG_ID_FIELD.name = "id"
+GLOBAL_PARAM_CFG_ID_FIELD.full_name = ".ftcfg.global_param_cfg.id"
+GLOBAL_PARAM_CFG_ID_FIELD.number = 1
+GLOBAL_PARAM_CFG_ID_FIELD.index = 0
+GLOBAL_PARAM_CFG_ID_FIELD.label = 2
+GLOBAL_PARAM_CFG_ID_FIELD.has_default_value = false
+GLOBAL_PARAM_CFG_ID_FIELD.default_value = 0
+GLOBAL_PARAM_CFG_ID_FIELD.type = 5
+GLOBAL_PARAM_CFG_ID_FIELD.cpp_type = 1
+
+GLOBAL_PARAM_CFG_DESC_FIELD.name = "desc"
+GLOBAL_PARAM_CFG_DESC_FIELD.full_name = ".ftcfg.global_param_cfg.desc"
+GLOBAL_PARAM_CFG_DESC_FIELD.number = 2
+GLOBAL_PARAM_CFG_DESC_FIELD.index = 1
+GLOBAL_PARAM_CFG_DESC_FIELD.label = 2
+GLOBAL_PARAM_CFG_DESC_FIELD.has_default_value = false
+GLOBAL_PARAM_CFG_DESC_FIELD.default_value = ""
+GLOBAL_PARAM_CFG_DESC_FIELD.type = 9
+GLOBAL_PARAM_CFG_DESC_FIELD.cpp_type = 9
+
+GLOBAL_PARAM_CFG_VALUE_FIELD.name = "value"
+GLOBAL_PARAM_CFG_VALUE_FIELD.full_name = ".ftcfg.global_param_cfg.value"
+GLOBAL_PARAM_CFG_VALUE_FIELD.number = 3
+GLOBAL_PARAM_CFG_VALUE_FIELD.index = 2
+GLOBAL_PARAM_CFG_VALUE_FIELD.label = 2
+GLOBAL_PARAM_CFG_VALUE_FIELD.has_default_value = false
+GLOBAL_PARAM_CFG_VALUE_FIELD.default_value = 0.0
+GLOBAL_PARAM_CFG_VALUE_FIELD.type = 1
+GLOBAL_PARAM_CFG_VALUE_FIELD.cpp_type = 5
+
+GLOBAL_PARAM_CFG.name = "global_param_cfg"
+GLOBAL_PARAM_CFG.full_name = ".ftcfg.global_param_cfg"
+GLOBAL_PARAM_CFG.nested_types = {}
+GLOBAL_PARAM_CFG.enum_types = {}
+GLOBAL_PARAM_CFG.fields = {GLOBAL_PARAM_CFG_ID_FIELD, GLOBAL_PARAM_CFG_DESC_FIELD, GLOBAL_PARAM_CFG_VALUE_FIELD}
+GLOBAL_PARAM_CFG.is_extendable = false
+GLOBAL_PARAM_CFG.extensions = {}
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.name = "items"
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.global_param_cfgs.items"
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.number = 1
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.index = 0
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.label = 3
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.has_default_value = false
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.default_value = {}
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.message_type = GLOBAL_PARAM_CFG
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.type = 11
+GLOBAL_PARAM_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GLOBAL_PARAM_CFGS.name = "global_param_cfgs"
+GLOBAL_PARAM_CFGS.full_name = ".ftcfg.global_param_cfgs"
+GLOBAL_PARAM_CFGS.nested_types = {}
+GLOBAL_PARAM_CFGS.enum_types = {}
+GLOBAL_PARAM_CFGS.fields = {GLOBAL_PARAM_CFGS_ITEMS_FIELD}
+GLOBAL_PARAM_CFGS.is_extendable = false
+GLOBAL_PARAM_CFGS.extensions = {}
+PROP_TYPE_CFG_ID_FIELD.name = "id"
+PROP_TYPE_CFG_ID_FIELD.full_name = ".ftcfg.prop_type_cfg.id"
+PROP_TYPE_CFG_ID_FIELD.number = 1
+PROP_TYPE_CFG_ID_FIELD.index = 0
+PROP_TYPE_CFG_ID_FIELD.label = 2
+PROP_TYPE_CFG_ID_FIELD.has_default_value = false
+PROP_TYPE_CFG_ID_FIELD.default_value = 0
+PROP_TYPE_CFG_ID_FIELD.type = 5
+PROP_TYPE_CFG_ID_FIELD.cpp_type = 1
+
+PROP_TYPE_CFG_IS_RATE_FIELD.name = "is_rate"
+PROP_TYPE_CFG_IS_RATE_FIELD.full_name = ".ftcfg.prop_type_cfg.is_rate"
+PROP_TYPE_CFG_IS_RATE_FIELD.number = 2
+PROP_TYPE_CFG_IS_RATE_FIELD.index = 1
+PROP_TYPE_CFG_IS_RATE_FIELD.label = 2
+PROP_TYPE_CFG_IS_RATE_FIELD.has_default_value = false
+PROP_TYPE_CFG_IS_RATE_FIELD.default_value = false
+PROP_TYPE_CFG_IS_RATE_FIELD.type = 8
+PROP_TYPE_CFG_IS_RATE_FIELD.cpp_type = 7
+
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.name = "attribute"
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.full_name = ".ftcfg.prop_type_cfg.attribute"
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.number = 3
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.index = 2
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.label = 3
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.has_default_value = false
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.default_value = {}
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.enum_type = config_predefine_pb.EPROPATTRIBUTETYPE
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.type = 14
+PROP_TYPE_CFG_ATTRIBUTE_FIELD.cpp_type = 8
+
+PROP_TYPE_CFG.name = "prop_type_cfg"
+PROP_TYPE_CFG.full_name = ".ftcfg.prop_type_cfg"
+PROP_TYPE_CFG.nested_types = {}
+PROP_TYPE_CFG.enum_types = {}
+PROP_TYPE_CFG.fields = {PROP_TYPE_CFG_ID_FIELD, PROP_TYPE_CFG_IS_RATE_FIELD, PROP_TYPE_CFG_ATTRIBUTE_FIELD}
+PROP_TYPE_CFG.is_extendable = false
+PROP_TYPE_CFG.extensions = {}
+PROP_TYPE_CFGS_ITEMS_FIELD.name = "items"
+PROP_TYPE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.prop_type_cfgs.items"
+PROP_TYPE_CFGS_ITEMS_FIELD.number = 1
+PROP_TYPE_CFGS_ITEMS_FIELD.index = 0
+PROP_TYPE_CFGS_ITEMS_FIELD.label = 3
+PROP_TYPE_CFGS_ITEMS_FIELD.has_default_value = false
+PROP_TYPE_CFGS_ITEMS_FIELD.default_value = {}
+PROP_TYPE_CFGS_ITEMS_FIELD.message_type = PROP_TYPE_CFG
+PROP_TYPE_CFGS_ITEMS_FIELD.type = 11
+PROP_TYPE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PROP_TYPE_CFGS.name = "prop_type_cfgs"
+PROP_TYPE_CFGS.full_name = ".ftcfg.prop_type_cfgs"
+PROP_TYPE_CFGS.nested_types = {}
+PROP_TYPE_CFGS.enum_types = {}
+PROP_TYPE_CFGS.fields = {PROP_TYPE_CFGS_ITEMS_FIELD}
+PROP_TYPE_CFGS.is_extendable = false
+PROP_TYPE_CFGS.extensions = {}
+ATTRIBUTE_SHOW_CFG_ID_FIELD.name = "id"
+ATTRIBUTE_SHOW_CFG_ID_FIELD.full_name = ".ftcfg.attribute_show_cfg.id"
+ATTRIBUTE_SHOW_CFG_ID_FIELD.number = 1
+ATTRIBUTE_SHOW_CFG_ID_FIELD.index = 0
+ATTRIBUTE_SHOW_CFG_ID_FIELD.label = 2
+ATTRIBUTE_SHOW_CFG_ID_FIELD.has_default_value = false
+ATTRIBUTE_SHOW_CFG_ID_FIELD.default_value = 0
+ATTRIBUTE_SHOW_CFG_ID_FIELD.type = 5
+ATTRIBUTE_SHOW_CFG_ID_FIELD.cpp_type = 1
+
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.name = "item_id"
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.attribute_show_cfg.item_id"
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.number = 2
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.index = 1
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.label = 2
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.has_default_value = false
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.default_value = 0
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.type = 5
+ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+ATTRIBUTE_SHOW_CFG.name = "attribute_show_cfg"
+ATTRIBUTE_SHOW_CFG.full_name = ".ftcfg.attribute_show_cfg"
+ATTRIBUTE_SHOW_CFG.nested_types = {}
+ATTRIBUTE_SHOW_CFG.enum_types = {}
+ATTRIBUTE_SHOW_CFG.fields = {ATTRIBUTE_SHOW_CFG_ID_FIELD, ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD}
+ATTRIBUTE_SHOW_CFG.is_extendable = false
+ATTRIBUTE_SHOW_CFG.extensions = {}
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.name = "items"
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.full_name = ".ftcfg.attribute_show_cfgs.items"
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.number = 1
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.index = 0
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.label = 3
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.has_default_value = false
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.default_value = {}
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.message_type = ATTRIBUTE_SHOW_CFG
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.type = 11
+ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ATTRIBUTE_SHOW_CFGS.name = "attribute_show_cfgs"
+ATTRIBUTE_SHOW_CFGS.full_name = ".ftcfg.attribute_show_cfgs"
+ATTRIBUTE_SHOW_CFGS.nested_types = {}
+ATTRIBUTE_SHOW_CFGS.enum_types = {}
+ATTRIBUTE_SHOW_CFGS.fields = {ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD}
+ATTRIBUTE_SHOW_CFGS.is_extendable = false
+ATTRIBUTE_SHOW_CFGS.extensions = {}
+RES_PATH_CFG_ID_FIELD.name = "id"
+RES_PATH_CFG_ID_FIELD.full_name = ".ftcfg.res_path_cfg.id"
+RES_PATH_CFG_ID_FIELD.number = 1
+RES_PATH_CFG_ID_FIELD.index = 0
+RES_PATH_CFG_ID_FIELD.label = 2
+RES_PATH_CFG_ID_FIELD.has_default_value = false
+RES_PATH_CFG_ID_FIELD.default_value = 0
+RES_PATH_CFG_ID_FIELD.type = 5
+RES_PATH_CFG_ID_FIELD.cpp_type = 1
+
+RES_PATH_CFG_RES_PATH_FIELD.name = "res_path"
+RES_PATH_CFG_RES_PATH_FIELD.full_name = ".ftcfg.res_path_cfg.res_path"
+RES_PATH_CFG_RES_PATH_FIELD.number = 2
+RES_PATH_CFG_RES_PATH_FIELD.index = 1
+RES_PATH_CFG_RES_PATH_FIELD.label = 2
+RES_PATH_CFG_RES_PATH_FIELD.has_default_value = false
+RES_PATH_CFG_RES_PATH_FIELD.default_value = ""
+RES_PATH_CFG_RES_PATH_FIELD.type = 9
+RES_PATH_CFG_RES_PATH_FIELD.cpp_type = 9
+
+RES_PATH_CFG_ONE_BUNDLE_FIELD.name = "one_bundle"
+RES_PATH_CFG_ONE_BUNDLE_FIELD.full_name = ".ftcfg.res_path_cfg.one_bundle"
+RES_PATH_CFG_ONE_BUNDLE_FIELD.number = 3
+RES_PATH_CFG_ONE_BUNDLE_FIELD.index = 2
+RES_PATH_CFG_ONE_BUNDLE_FIELD.label = 2
+RES_PATH_CFG_ONE_BUNDLE_FIELD.has_default_value = false
+RES_PATH_CFG_ONE_BUNDLE_FIELD.default_value = 0
+RES_PATH_CFG_ONE_BUNDLE_FIELD.type = 5
+RES_PATH_CFG_ONE_BUNDLE_FIELD.cpp_type = 1
+
+RES_PATH_CFG.name = "res_path_cfg"
+RES_PATH_CFG.full_name = ".ftcfg.res_path_cfg"
+RES_PATH_CFG.nested_types = {}
+RES_PATH_CFG.enum_types = {}
+RES_PATH_CFG.fields = {RES_PATH_CFG_ID_FIELD, RES_PATH_CFG_RES_PATH_FIELD, RES_PATH_CFG_ONE_BUNDLE_FIELD}
+RES_PATH_CFG.is_extendable = false
+RES_PATH_CFG.extensions = {}
+RES_PATH_CFGS_ITEMS_FIELD.name = "items"
+RES_PATH_CFGS_ITEMS_FIELD.full_name = ".ftcfg.res_path_cfgs.items"
+RES_PATH_CFGS_ITEMS_FIELD.number = 1
+RES_PATH_CFGS_ITEMS_FIELD.index = 0
+RES_PATH_CFGS_ITEMS_FIELD.label = 3
+RES_PATH_CFGS_ITEMS_FIELD.has_default_value = false
+RES_PATH_CFGS_ITEMS_FIELD.default_value = {}
+RES_PATH_CFGS_ITEMS_FIELD.message_type = RES_PATH_CFG
+RES_PATH_CFGS_ITEMS_FIELD.type = 11
+RES_PATH_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RES_PATH_CFGS.name = "res_path_cfgs"
+RES_PATH_CFGS.full_name = ".ftcfg.res_path_cfgs"
+RES_PATH_CFGS.nested_types = {}
+RES_PATH_CFGS.enum_types = {}
+RES_PATH_CFGS.fields = {RES_PATH_CFGS_ITEMS_FIELD}
+RES_PATH_CFGS.is_extendable = false
+RES_PATH_CFGS.extensions = {}
+SCENE_CFG_ID_FIELD.name = "id"
+SCENE_CFG_ID_FIELD.full_name = ".ftcfg.scene_cfg.id"
+SCENE_CFG_ID_FIELD.number = 1
+SCENE_CFG_ID_FIELD.index = 0
+SCENE_CFG_ID_FIELD.label = 2
+SCENE_CFG_ID_FIELD.has_default_value = false
+SCENE_CFG_ID_FIELD.default_value = 0
+SCENE_CFG_ID_FIELD.type = 5
+SCENE_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_CFG_NAME_FIELD.name = "name"
+SCENE_CFG_NAME_FIELD.full_name = ".ftcfg.scene_cfg.name"
+SCENE_CFG_NAME_FIELD.number = 2
+SCENE_CFG_NAME_FIELD.index = 1
+SCENE_CFG_NAME_FIELD.label = 2
+SCENE_CFG_NAME_FIELD.has_default_value = false
+SCENE_CFG_NAME_FIELD.default_value = 0
+SCENE_CFG_NAME_FIELD.type = 5
+SCENE_CFG_NAME_FIELD.cpp_type = 1
+
+SCENE_CFG_MAPID_FIELD.name = "mapid"
+SCENE_CFG_MAPID_FIELD.full_name = ".ftcfg.scene_cfg.mapid"
+SCENE_CFG_MAPID_FIELD.number = 3
+SCENE_CFG_MAPID_FIELD.index = 2
+SCENE_CFG_MAPID_FIELD.label = 2
+SCENE_CFG_MAPID_FIELD.has_default_value = false
+SCENE_CFG_MAPID_FIELD.default_value = 0
+SCENE_CFG_MAPID_FIELD.type = 5
+SCENE_CFG_MAPID_FIELD.cpp_type = 1
+
+SCENE_CFG_TYPE_FIELD.name = "type"
+SCENE_CFG_TYPE_FIELD.full_name = ".ftcfg.scene_cfg.type"
+SCENE_CFG_TYPE_FIELD.number = 4
+SCENE_CFG_TYPE_FIELD.index = 3
+SCENE_CFG_TYPE_FIELD.label = 2
+SCENE_CFG_TYPE_FIELD.has_default_value = false
+SCENE_CFG_TYPE_FIELD.default_value = nil
+SCENE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ESCENETYPE
+SCENE_CFG_TYPE_FIELD.type = 14
+SCENE_CFG_TYPE_FIELD.cpp_type = 8
+
+SCENE_CFG_IS_SAME_SCENE_FIELD.name = "is_same_scene"
+SCENE_CFG_IS_SAME_SCENE_FIELD.full_name = ".ftcfg.scene_cfg.is_same_scene"
+SCENE_CFG_IS_SAME_SCENE_FIELD.number = 5
+SCENE_CFG_IS_SAME_SCENE_FIELD.index = 4
+SCENE_CFG_IS_SAME_SCENE_FIELD.label = 2
+SCENE_CFG_IS_SAME_SCENE_FIELD.has_default_value = false
+SCENE_CFG_IS_SAME_SCENE_FIELD.default_value = 0
+SCENE_CFG_IS_SAME_SCENE_FIELD.type = 5
+SCENE_CFG_IS_SAME_SCENE_FIELD.cpp_type = 1
+
+SCENE_CFG_SCENE_ROUTE_FIELD.name = "scene_route"
+SCENE_CFG_SCENE_ROUTE_FIELD.full_name = ".ftcfg.scene_cfg.scene_route"
+SCENE_CFG_SCENE_ROUTE_FIELD.number = 6
+SCENE_CFG_SCENE_ROUTE_FIELD.index = 5
+SCENE_CFG_SCENE_ROUTE_FIELD.label = 2
+SCENE_CFG_SCENE_ROUTE_FIELD.has_default_value = false
+SCENE_CFG_SCENE_ROUTE_FIELD.default_value = ""
+SCENE_CFG_SCENE_ROUTE_FIELD.type = 9
+SCENE_CFG_SCENE_ROUTE_FIELD.cpp_type = 9
+
+SCENE_CFG_CAMERA_PATH_RES_FIELD.name = "camera_path_res"
+SCENE_CFG_CAMERA_PATH_RES_FIELD.full_name = ".ftcfg.scene_cfg.camera_path_res"
+SCENE_CFG_CAMERA_PATH_RES_FIELD.number = 7
+SCENE_CFG_CAMERA_PATH_RES_FIELD.index = 6
+SCENE_CFG_CAMERA_PATH_RES_FIELD.label = 2
+SCENE_CFG_CAMERA_PATH_RES_FIELD.has_default_value = false
+SCENE_CFG_CAMERA_PATH_RES_FIELD.default_value = 0
+SCENE_CFG_CAMERA_PATH_RES_FIELD.type = 5
+SCENE_CFG_CAMERA_PATH_RES_FIELD.cpp_type = 1
+
+SCENE_CFG_SCENE_RECAST_FIELD.name = "scene_recast"
+SCENE_CFG_SCENE_RECAST_FIELD.full_name = ".ftcfg.scene_cfg.scene_recast"
+SCENE_CFG_SCENE_RECAST_FIELD.number = 8
+SCENE_CFG_SCENE_RECAST_FIELD.index = 7
+SCENE_CFG_SCENE_RECAST_FIELD.label = 2
+SCENE_CFG_SCENE_RECAST_FIELD.has_default_value = false
+SCENE_CFG_SCENE_RECAST_FIELD.default_value = ""
+SCENE_CFG_SCENE_RECAST_FIELD.type = 9
+SCENE_CFG_SCENE_RECAST_FIELD.cpp_type = 9
+
+SCENE_CFG_SCENE_LENGTH_FIELD.name = "scene_length"
+SCENE_CFG_SCENE_LENGTH_FIELD.full_name = ".ftcfg.scene_cfg.scene_length"
+SCENE_CFG_SCENE_LENGTH_FIELD.number = 9
+SCENE_CFG_SCENE_LENGTH_FIELD.index = 8
+SCENE_CFG_SCENE_LENGTH_FIELD.label = 2
+SCENE_CFG_SCENE_LENGTH_FIELD.has_default_value = false
+SCENE_CFG_SCENE_LENGTH_FIELD.default_value = 0
+SCENE_CFG_SCENE_LENGTH_FIELD.type = 5
+SCENE_CFG_SCENE_LENGTH_FIELD.cpp_type = 1
+
+SCENE_CFG_SCENE_WIDTH_FIELD.name = "scene_width"
+SCENE_CFG_SCENE_WIDTH_FIELD.full_name = ".ftcfg.scene_cfg.scene_width"
+SCENE_CFG_SCENE_WIDTH_FIELD.number = 10
+SCENE_CFG_SCENE_WIDTH_FIELD.index = 9
+SCENE_CFG_SCENE_WIDTH_FIELD.label = 2
+SCENE_CFG_SCENE_WIDTH_FIELD.has_default_value = false
+SCENE_CFG_SCENE_WIDTH_FIELD.default_value = 0
+SCENE_CFG_SCENE_WIDTH_FIELD.type = 5
+SCENE_CFG_SCENE_WIDTH_FIELD.cpp_type = 1
+
+SCENE_CFG_REFRESH_TYPE_FIELD.name = "refresh_type"
+SCENE_CFG_REFRESH_TYPE_FIELD.full_name = ".ftcfg.scene_cfg.refresh_type"
+SCENE_CFG_REFRESH_TYPE_FIELD.number = 11
+SCENE_CFG_REFRESH_TYPE_FIELD.index = 10
+SCENE_CFG_REFRESH_TYPE_FIELD.label = 2
+SCENE_CFG_REFRESH_TYPE_FIELD.has_default_value = false
+SCENE_CFG_REFRESH_TYPE_FIELD.default_value = 0
+SCENE_CFG_REFRESH_TYPE_FIELD.type = 5
+SCENE_CFG_REFRESH_TYPE_FIELD.cpp_type = 1
+
+SCENE_CFG_REFRESH_PARAMETER_FIELD.name = "refresh_parameter"
+SCENE_CFG_REFRESH_PARAMETER_FIELD.full_name = ".ftcfg.scene_cfg.refresh_parameter"
+SCENE_CFG_REFRESH_PARAMETER_FIELD.number = 12
+SCENE_CFG_REFRESH_PARAMETER_FIELD.index = 11
+SCENE_CFG_REFRESH_PARAMETER_FIELD.label = 3
+SCENE_CFG_REFRESH_PARAMETER_FIELD.has_default_value = false
+SCENE_CFG_REFRESH_PARAMETER_FIELD.default_value = {}
+SCENE_CFG_REFRESH_PARAMETER_FIELD.type = 5
+SCENE_CFG_REFRESH_PARAMETER_FIELD.cpp_type = 1
+
+SCENE_CFG_PARTNER_CARRY_FIELD.name = "partner_carry"
+SCENE_CFG_PARTNER_CARRY_FIELD.full_name = ".ftcfg.scene_cfg.partner_carry"
+SCENE_CFG_PARTNER_CARRY_FIELD.number = 13
+SCENE_CFG_PARTNER_CARRY_FIELD.index = 12
+SCENE_CFG_PARTNER_CARRY_FIELD.label = 2
+SCENE_CFG_PARTNER_CARRY_FIELD.has_default_value = false
+SCENE_CFG_PARTNER_CARRY_FIELD.default_value = 0
+SCENE_CFG_PARTNER_CARRY_FIELD.type = 5
+SCENE_CFG_PARTNER_CARRY_FIELD.cpp_type = 1
+
+SCENE_CFG_SHOW_CG_FIELD.name = "show_cg"
+SCENE_CFG_SHOW_CG_FIELD.full_name = ".ftcfg.scene_cfg.show_cg"
+SCENE_CFG_SHOW_CG_FIELD.number = 14
+SCENE_CFG_SHOW_CG_FIELD.index = 13
+SCENE_CFG_SHOW_CG_FIELD.label = 2
+SCENE_CFG_SHOW_CG_FIELD.has_default_value = false
+SCENE_CFG_SHOW_CG_FIELD.default_value = 0
+SCENE_CFG_SHOW_CG_FIELD.type = 5
+SCENE_CFG_SHOW_CG_FIELD.cpp_type = 1
+
+SCENE_CFG_RES_PATH_FIELD.name = "res_path"
+SCENE_CFG_RES_PATH_FIELD.full_name = ".ftcfg.scene_cfg.res_path"
+SCENE_CFG_RES_PATH_FIELD.number = 15
+SCENE_CFG_RES_PATH_FIELD.index = 14
+SCENE_CFG_RES_PATH_FIELD.label = 2
+SCENE_CFG_RES_PATH_FIELD.has_default_value = false
+SCENE_CFG_RES_PATH_FIELD.default_value = 0
+SCENE_CFG_RES_PATH_FIELD.type = 5
+SCENE_CFG_RES_PATH_FIELD.cpp_type = 1
+
+SCENE_CFG_BORN_X_FIELD.name = "born_x"
+SCENE_CFG_BORN_X_FIELD.full_name = ".ftcfg.scene_cfg.born_x"
+SCENE_CFG_BORN_X_FIELD.number = 16
+SCENE_CFG_BORN_X_FIELD.index = 15
+SCENE_CFG_BORN_X_FIELD.label = 2
+SCENE_CFG_BORN_X_FIELD.has_default_value = false
+SCENE_CFG_BORN_X_FIELD.default_value = 0.0
+SCENE_CFG_BORN_X_FIELD.type = 2
+SCENE_CFG_BORN_X_FIELD.cpp_type = 6
+
+SCENE_CFG_BORN_Y_FIELD.name = "born_y"
+SCENE_CFG_BORN_Y_FIELD.full_name = ".ftcfg.scene_cfg.born_y"
+SCENE_CFG_BORN_Y_FIELD.number = 17
+SCENE_CFG_BORN_Y_FIELD.index = 16
+SCENE_CFG_BORN_Y_FIELD.label = 2
+SCENE_CFG_BORN_Y_FIELD.has_default_value = false
+SCENE_CFG_BORN_Y_FIELD.default_value = 0.0
+SCENE_CFG_BORN_Y_FIELD.type = 2
+SCENE_CFG_BORN_Y_FIELD.cpp_type = 6
+
+SCENE_CFG_BORN_Z_FIELD.name = "born_z"
+SCENE_CFG_BORN_Z_FIELD.full_name = ".ftcfg.scene_cfg.born_z"
+SCENE_CFG_BORN_Z_FIELD.number = 18
+SCENE_CFG_BORN_Z_FIELD.index = 17
+SCENE_CFG_BORN_Z_FIELD.label = 2
+SCENE_CFG_BORN_Z_FIELD.has_default_value = false
+SCENE_CFG_BORN_Z_FIELD.default_value = 0.0
+SCENE_CFG_BORN_Z_FIELD.type = 2
+SCENE_CFG_BORN_Z_FIELD.cpp_type = 6
+
+SCENE_CFG_BORN_ROTATION_FIELD.name = "born_rotation"
+SCENE_CFG_BORN_ROTATION_FIELD.full_name = ".ftcfg.scene_cfg.born_rotation"
+SCENE_CFG_BORN_ROTATION_FIELD.number = 19
+SCENE_CFG_BORN_ROTATION_FIELD.index = 18
+SCENE_CFG_BORN_ROTATION_FIELD.label = 2
+SCENE_CFG_BORN_ROTATION_FIELD.has_default_value = false
+SCENE_CFG_BORN_ROTATION_FIELD.default_value = 0.0
+SCENE_CFG_BORN_ROTATION_FIELD.type = 2
+SCENE_CFG_BORN_ROTATION_FIELD.cpp_type = 6
+
+SCENE_CFG_GOAL_X_FIELD.name = "goal_x"
+SCENE_CFG_GOAL_X_FIELD.full_name = ".ftcfg.scene_cfg.goal_x"
+SCENE_CFG_GOAL_X_FIELD.number = 20
+SCENE_CFG_GOAL_X_FIELD.index = 19
+SCENE_CFG_GOAL_X_FIELD.label = 2
+SCENE_CFG_GOAL_X_FIELD.has_default_value = false
+SCENE_CFG_GOAL_X_FIELD.default_value = 0.0
+SCENE_CFG_GOAL_X_FIELD.type = 2
+SCENE_CFG_GOAL_X_FIELD.cpp_type = 6
+
+SCENE_CFG_GOAL_Y_FIELD.name = "goal_y"
+SCENE_CFG_GOAL_Y_FIELD.full_name = ".ftcfg.scene_cfg.goal_y"
+SCENE_CFG_GOAL_Y_FIELD.number = 21
+SCENE_CFG_GOAL_Y_FIELD.index = 20
+SCENE_CFG_GOAL_Y_FIELD.label = 2
+SCENE_CFG_GOAL_Y_FIELD.has_default_value = false
+SCENE_CFG_GOAL_Y_FIELD.default_value = 0.0
+SCENE_CFG_GOAL_Y_FIELD.type = 2
+SCENE_CFG_GOAL_Y_FIELD.cpp_type = 6
+
+SCENE_CFG_GOAL_Z_FIELD.name = "goal_z"
+SCENE_CFG_GOAL_Z_FIELD.full_name = ".ftcfg.scene_cfg.goal_z"
+SCENE_CFG_GOAL_Z_FIELD.number = 22
+SCENE_CFG_GOAL_Z_FIELD.index = 21
+SCENE_CFG_GOAL_Z_FIELD.label = 2
+SCENE_CFG_GOAL_Z_FIELD.has_default_value = false
+SCENE_CFG_GOAL_Z_FIELD.default_value = 0.0
+SCENE_CFG_GOAL_Z_FIELD.type = 2
+SCENE_CFG_GOAL_Z_FIELD.cpp_type = 6
+
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.name = "default_attack_patterm"
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.full_name = ".ftcfg.scene_cfg.default_attack_patterm"
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.number = 23
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.index = 22
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.label = 2
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.has_default_value = false
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.default_value = 0
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.type = 5
+SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.cpp_type = 1
+
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.name = "switch_attack_patterm"
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.full_name = ".ftcfg.scene_cfg.switch_attack_patterm"
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.number = 24
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.index = 23
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.label = 2
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.has_default_value = false
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.default_value = 0
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.type = 5
+SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.cpp_type = 1
+
+SCENE_CFG_CAN_TEAM_CALL_FIELD.name = "can_team_call"
+SCENE_CFG_CAN_TEAM_CALL_FIELD.full_name = ".ftcfg.scene_cfg.can_team_call"
+SCENE_CFG_CAN_TEAM_CALL_FIELD.number = 25
+SCENE_CFG_CAN_TEAM_CALL_FIELD.index = 24
+SCENE_CFG_CAN_TEAM_CALL_FIELD.label = 2
+SCENE_CFG_CAN_TEAM_CALL_FIELD.has_default_value = false
+SCENE_CFG_CAN_TEAM_CALL_FIELD.default_value = 0
+SCENE_CFG_CAN_TEAM_CALL_FIELD.type = 5
+SCENE_CFG_CAN_TEAM_CALL_FIELD.cpp_type = 1
+
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.name = "is_battle_field"
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.full_name = ".ftcfg.scene_cfg.is_battle_field"
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.number = 26
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.index = 25
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.label = 2
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.has_default_value = false
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.default_value = 0
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.type = 5
+SCENE_CFG_IS_BATTLE_FIELD_FIELD.cpp_type = 1
+
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.name = "cam_options_id"
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.full_name = ".ftcfg.scene_cfg.cam_options_id"
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.number = 27
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.index = 26
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.label = 2
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.has_default_value = false
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.default_value = 0
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.type = 5
+SCENE_CFG_CAM_OPTIONS_ID_FIELD.cpp_type = 1
+
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.name = "can_use_worldmap"
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.full_name = ".ftcfg.scene_cfg.can_use_worldmap"
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.number = 28
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.index = 27
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.label = 2
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.has_default_value = false
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.default_value = 0
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.type = 5
+SCENE_CFG_CAN_USE_WORLDMAP_FIELD.cpp_type = 1
+
+SCENE_CFG.name = "scene_cfg"
+SCENE_CFG.full_name = ".ftcfg.scene_cfg"
+SCENE_CFG.nested_types = {}
+SCENE_CFG.enum_types = {}
+SCENE_CFG.fields = {SCENE_CFG_ID_FIELD, SCENE_CFG_NAME_FIELD, SCENE_CFG_MAPID_FIELD, SCENE_CFG_TYPE_FIELD, SCENE_CFG_IS_SAME_SCENE_FIELD, SCENE_CFG_SCENE_ROUTE_FIELD, SCENE_CFG_CAMERA_PATH_RES_FIELD, SCENE_CFG_SCENE_RECAST_FIELD, SCENE_CFG_SCENE_LENGTH_FIELD, SCENE_CFG_SCENE_WIDTH_FIELD, SCENE_CFG_REFRESH_TYPE_FIELD, SCENE_CFG_REFRESH_PARAMETER_FIELD, SCENE_CFG_PARTNER_CARRY_FIELD, SCENE_CFG_SHOW_CG_FIELD, SCENE_CFG_RES_PATH_FIELD, SCENE_CFG_BORN_X_FIELD, SCENE_CFG_BORN_Y_FIELD, SCENE_CFG_BORN_Z_FIELD, SCENE_CFG_BORN_ROTATION_FIELD, SCENE_CFG_GOAL_X_FIELD, SCENE_CFG_GOAL_Y_FIELD, SCENE_CFG_GOAL_Z_FIELD, SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD, SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD, SCENE_CFG_CAN_TEAM_CALL_FIELD, SCENE_CFG_IS_BATTLE_FIELD_FIELD, SCENE_CFG_CAM_OPTIONS_ID_FIELD, SCENE_CFG_CAN_USE_WORLDMAP_FIELD}
+SCENE_CFG.is_extendable = false
+SCENE_CFG.extensions = {}
+SCENE_CFGS_ITEMS_FIELD.name = "items"
+SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_cfgs.items"
+SCENE_CFGS_ITEMS_FIELD.number = 1
+SCENE_CFGS_ITEMS_FIELD.index = 0
+SCENE_CFGS_ITEMS_FIELD.label = 3
+SCENE_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_CFGS_ITEMS_FIELD.message_type = SCENE_CFG
+SCENE_CFGS_ITEMS_FIELD.type = 11
+SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_CFGS.name = "scene_cfgs"
+SCENE_CFGS.full_name = ".ftcfg.scene_cfgs"
+SCENE_CFGS.nested_types = {}
+SCENE_CFGS.enum_types = {}
+SCENE_CFGS.fields = {SCENE_CFGS_ITEMS_FIELD}
+SCENE_CFGS.is_extendable = false
+SCENE_CFGS.extensions = {}
+SKILL_CFG_ID_FIELD.name = "id"
+SKILL_CFG_ID_FIELD.full_name = ".ftcfg.skill_cfg.id"
+SKILL_CFG_ID_FIELD.number = 1
+SKILL_CFG_ID_FIELD.index = 0
+SKILL_CFG_ID_FIELD.label = 2
+SKILL_CFG_ID_FIELD.has_default_value = false
+SKILL_CFG_ID_FIELD.default_value = 0
+SKILL_CFG_ID_FIELD.type = 5
+SKILL_CFG_ID_FIELD.cpp_type = 1
+
+SKILL_CFG_NAME_TIP_FIELD.name = "name_tip"
+SKILL_CFG_NAME_TIP_FIELD.full_name = ".ftcfg.skill_cfg.name_tip"
+SKILL_CFG_NAME_TIP_FIELD.number = 2
+SKILL_CFG_NAME_TIP_FIELD.index = 1
+SKILL_CFG_NAME_TIP_FIELD.label = 2
+SKILL_CFG_NAME_TIP_FIELD.has_default_value = false
+SKILL_CFG_NAME_TIP_FIELD.default_value = ""
+SKILL_CFG_NAME_TIP_FIELD.type = 9
+SKILL_CFG_NAME_TIP_FIELD.cpp_type = 9
+
+SKILL_CFG_NAME_FIELD.name = "name"
+SKILL_CFG_NAME_FIELD.full_name = ".ftcfg.skill_cfg.name"
+SKILL_CFG_NAME_FIELD.number = 3
+SKILL_CFG_NAME_FIELD.index = 2
+SKILL_CFG_NAME_FIELD.label = 2
+SKILL_CFG_NAME_FIELD.has_default_value = false
+SKILL_CFG_NAME_FIELD.default_value = 0
+SKILL_CFG_NAME_FIELD.type = 5
+SKILL_CFG_NAME_FIELD.cpp_type = 1
+
+SKILL_CFG_SKILL_LEVEL_FIELD.name = "skill_level"
+SKILL_CFG_SKILL_LEVEL_FIELD.full_name = ".ftcfg.skill_cfg.skill_level"
+SKILL_CFG_SKILL_LEVEL_FIELD.number = 4
+SKILL_CFG_SKILL_LEVEL_FIELD.index = 3
+SKILL_CFG_SKILL_LEVEL_FIELD.label = 2
+SKILL_CFG_SKILL_LEVEL_FIELD.has_default_value = false
+SKILL_CFG_SKILL_LEVEL_FIELD.default_value = 0
+SKILL_CFG_SKILL_LEVEL_FIELD.type = 5
+SKILL_CFG_SKILL_LEVEL_FIELD.cpp_type = 1
+
+SKILL_CFG_PLAYER_LEVEL_FIELD.name = "player_level"
+SKILL_CFG_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.skill_cfg.player_level"
+SKILL_CFG_PLAYER_LEVEL_FIELD.number = 5
+SKILL_CFG_PLAYER_LEVEL_FIELD.index = 4
+SKILL_CFG_PLAYER_LEVEL_FIELD.label = 2
+SKILL_CFG_PLAYER_LEVEL_FIELD.has_default_value = false
+SKILL_CFG_PLAYER_LEVEL_FIELD.default_value = 0
+SKILL_CFG_PLAYER_LEVEL_FIELD.type = 5
+SKILL_CFG_PLAYER_LEVEL_FIELD.cpp_type = 1
+
+SKILL_CFG_LEVELUP_COST_FIELD.name = "levelup_cost"
+SKILL_CFG_LEVELUP_COST_FIELD.full_name = ".ftcfg.skill_cfg.levelup_cost"
+SKILL_CFG_LEVELUP_COST_FIELD.number = 6
+SKILL_CFG_LEVELUP_COST_FIELD.index = 5
+SKILL_CFG_LEVELUP_COST_FIELD.label = 2
+SKILL_CFG_LEVELUP_COST_FIELD.has_default_value = false
+SKILL_CFG_LEVELUP_COST_FIELD.default_value = 0
+SKILL_CFG_LEVELUP_COST_FIELD.type = 5
+SKILL_CFG_LEVELUP_COST_FIELD.cpp_type = 1
+
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.name = "next_level_id"
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.full_name = ".ftcfg.skill_cfg.next_level_id"
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.number = 7
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.index = 6
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.label = 2
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.has_default_value = false
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.default_value = 0
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.type = 5
+SKILL_CFG_NEXT_LEVEL_ID_FIELD.cpp_type = 1
+
+SKILL_CFG_SKILL_ICON_FIELD.name = "skill_icon"
+SKILL_CFG_SKILL_ICON_FIELD.full_name = ".ftcfg.skill_cfg.skill_icon"
+SKILL_CFG_SKILL_ICON_FIELD.number = 8
+SKILL_CFG_SKILL_ICON_FIELD.index = 7
+SKILL_CFG_SKILL_ICON_FIELD.label = 2
+SKILL_CFG_SKILL_ICON_FIELD.has_default_value = false
+SKILL_CFG_SKILL_ICON_FIELD.default_value = 0
+SKILL_CFG_SKILL_ICON_FIELD.type = 5
+SKILL_CFG_SKILL_ICON_FIELD.cpp_type = 1
+
+SKILL_CFG_SKILL_PROF_FIELD.name = "skill_prof"
+SKILL_CFG_SKILL_PROF_FIELD.full_name = ".ftcfg.skill_cfg.skill_prof"
+SKILL_CFG_SKILL_PROF_FIELD.number = 9
+SKILL_CFG_SKILL_PROF_FIELD.index = 8
+SKILL_CFG_SKILL_PROF_FIELD.label = 2
+SKILL_CFG_SKILL_PROF_FIELD.has_default_value = false
+SKILL_CFG_SKILL_PROF_FIELD.default_value = 0
+SKILL_CFG_SKILL_PROF_FIELD.type = 5
+SKILL_CFG_SKILL_PROF_FIELD.cpp_type = 1
+
+SKILL_CFG_TIPS2_FIELD.name = "tips2"
+SKILL_CFG_TIPS2_FIELD.full_name = ".ftcfg.skill_cfg.tips2"
+SKILL_CFG_TIPS2_FIELD.number = 10
+SKILL_CFG_TIPS2_FIELD.index = 9
+SKILL_CFG_TIPS2_FIELD.label = 2
+SKILL_CFG_TIPS2_FIELD.has_default_value = false
+SKILL_CFG_TIPS2_FIELD.default_value = 0
+SKILL_CFG_TIPS2_FIELD.type = 5
+SKILL_CFG_TIPS2_FIELD.cpp_type = 1
+
+SKILL_CFG_TIPS_FIELD.name = "tips"
+SKILL_CFG_TIPS_FIELD.full_name = ".ftcfg.skill_cfg.tips"
+SKILL_CFG_TIPS_FIELD.number = 11
+SKILL_CFG_TIPS_FIELD.index = 10
+SKILL_CFG_TIPS_FIELD.label = 2
+SKILL_CFG_TIPS_FIELD.has_default_value = false
+SKILL_CFG_TIPS_FIELD.default_value = 0
+SKILL_CFG_TIPS_FIELD.type = 5
+SKILL_CFG_TIPS_FIELD.cpp_type = 1
+
+SKILL_CFG_TIPS3_FIELD.name = "tips3"
+SKILL_CFG_TIPS3_FIELD.full_name = ".ftcfg.skill_cfg.tips3"
+SKILL_CFG_TIPS3_FIELD.number = 12
+SKILL_CFG_TIPS3_FIELD.index = 11
+SKILL_CFG_TIPS3_FIELD.label = 2
+SKILL_CFG_TIPS3_FIELD.has_default_value = false
+SKILL_CFG_TIPS3_FIELD.default_value = 0
+SKILL_CFG_TIPS3_FIELD.type = 5
+SKILL_CFG_TIPS3_FIELD.cpp_type = 1
+
+SKILL_CFG_TIPS_PARA1_FIELD.name = "tips_para1"
+SKILL_CFG_TIPS_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.tips_para1"
+SKILL_CFG_TIPS_PARA1_FIELD.number = 13
+SKILL_CFG_TIPS_PARA1_FIELD.index = 12
+SKILL_CFG_TIPS_PARA1_FIELD.label = 2
+SKILL_CFG_TIPS_PARA1_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA1_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA1_FIELD.type = 2
+SKILL_CFG_TIPS_PARA1_FIELD.cpp_type = 6
+
+SKILL_CFG_TIPS_PARA2_FIELD.name = "tips_para2"
+SKILL_CFG_TIPS_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.tips_para2"
+SKILL_CFG_TIPS_PARA2_FIELD.number = 14
+SKILL_CFG_TIPS_PARA2_FIELD.index = 13
+SKILL_CFG_TIPS_PARA2_FIELD.label = 2
+SKILL_CFG_TIPS_PARA2_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA2_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA2_FIELD.type = 2
+SKILL_CFG_TIPS_PARA2_FIELD.cpp_type = 6
+
+SKILL_CFG_TIPS_PARA3_FIELD.name = "tips_para3"
+SKILL_CFG_TIPS_PARA3_FIELD.full_name = ".ftcfg.skill_cfg.tips_para3"
+SKILL_CFG_TIPS_PARA3_FIELD.number = 15
+SKILL_CFG_TIPS_PARA3_FIELD.index = 14
+SKILL_CFG_TIPS_PARA3_FIELD.label = 2
+SKILL_CFG_TIPS_PARA3_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA3_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA3_FIELD.type = 2
+SKILL_CFG_TIPS_PARA3_FIELD.cpp_type = 6
+
+SKILL_CFG_TIPS_PARA4_FIELD.name = "tips_para4"
+SKILL_CFG_TIPS_PARA4_FIELD.full_name = ".ftcfg.skill_cfg.tips_para4"
+SKILL_CFG_TIPS_PARA4_FIELD.number = 16
+SKILL_CFG_TIPS_PARA4_FIELD.index = 15
+SKILL_CFG_TIPS_PARA4_FIELD.label = 2
+SKILL_CFG_TIPS_PARA4_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA4_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA4_FIELD.type = 2
+SKILL_CFG_TIPS_PARA4_FIELD.cpp_type = 6
+
+SKILL_CFG_TIPS_PARA5_FIELD.name = "tips_para5"
+SKILL_CFG_TIPS_PARA5_FIELD.full_name = ".ftcfg.skill_cfg.tips_para5"
+SKILL_CFG_TIPS_PARA5_FIELD.number = 17
+SKILL_CFG_TIPS_PARA5_FIELD.index = 16
+SKILL_CFG_TIPS_PARA5_FIELD.label = 2
+SKILL_CFG_TIPS_PARA5_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA5_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA5_FIELD.type = 2
+SKILL_CFG_TIPS_PARA5_FIELD.cpp_type = 6
+
+SKILL_CFG_TIPS_PARA6_FIELD.name = "tips_para6"
+SKILL_CFG_TIPS_PARA6_FIELD.full_name = ".ftcfg.skill_cfg.tips_para6"
+SKILL_CFG_TIPS_PARA6_FIELD.number = 18
+SKILL_CFG_TIPS_PARA6_FIELD.index = 17
+SKILL_CFG_TIPS_PARA6_FIELD.label = 2
+SKILL_CFG_TIPS_PARA6_FIELD.has_default_value = false
+SKILL_CFG_TIPS_PARA6_FIELD.default_value = 0.0
+SKILL_CFG_TIPS_PARA6_FIELD.type = 2
+SKILL_CFG_TIPS_PARA6_FIELD.cpp_type = 6
+
+SKILL_CFG_NEXT_SKILL_FIELD.name = "next_skill"
+SKILL_CFG_NEXT_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.next_skill"
+SKILL_CFG_NEXT_SKILL_FIELD.number = 19
+SKILL_CFG_NEXT_SKILL_FIELD.index = 18
+SKILL_CFG_NEXT_SKILL_FIELD.label = 2
+SKILL_CFG_NEXT_SKILL_FIELD.has_default_value = false
+SKILL_CFG_NEXT_SKILL_FIELD.default_value = 0
+SKILL_CFG_NEXT_SKILL_FIELD.type = 5
+SKILL_CFG_NEXT_SKILL_FIELD.cpp_type = 1
+
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.name = "next_change_skill"
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.next_change_skill"
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.number = 20
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.index = 19
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.label = 2
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.has_default_value = false
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.default_value = 0
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.type = 5
+SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.cpp_type = 1
+
+SKILL_CFG_AUTO_SKILL_FIELD.name = "auto_skill"
+SKILL_CFG_AUTO_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.auto_skill"
+SKILL_CFG_AUTO_SKILL_FIELD.number = 21
+SKILL_CFG_AUTO_SKILL_FIELD.index = 20
+SKILL_CFG_AUTO_SKILL_FIELD.label = 2
+SKILL_CFG_AUTO_SKILL_FIELD.has_default_value = false
+SKILL_CFG_AUTO_SKILL_FIELD.default_value = false
+SKILL_CFG_AUTO_SKILL_FIELD.type = 8
+SKILL_CFG_AUTO_SKILL_FIELD.cpp_type = 7
+
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.name = "next_skill_time"
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.full_name = ".ftcfg.skill_cfg.next_skill_time"
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.number = 22
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.index = 21
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.label = 2
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.has_default_value = false
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.default_value = 0
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.type = 5
+SKILL_CFG_NEXT_SKILL_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_SKILL_TYPE_FIELD.name = "skill_type"
+SKILL_CFG_SKILL_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.skill_type"
+SKILL_CFG_SKILL_TYPE_FIELD.number = 23
+SKILL_CFG_SKILL_TYPE_FIELD.index = 22
+SKILL_CFG_SKILL_TYPE_FIELD.label = 2
+SKILL_CFG_SKILL_TYPE_FIELD.has_default_value = false
+SKILL_CFG_SKILL_TYPE_FIELD.default_value = nil
+SKILL_CFG_SKILL_TYPE_FIELD.enum_type = config_predefine_pb.ESKILLTYPE
+SKILL_CFG_SKILL_TYPE_FIELD.type = 14
+SKILL_CFG_SKILL_TYPE_FIELD.cpp_type = 8
+
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.name = "energy_cost_type"
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.energy_cost_type"
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.number = 24
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.index = 23
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.label = 2
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.has_default_value = false
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.default_value = nil
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.enum_type = config_predefine_pb.ESKILLCOSTTYPE
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.type = 14
+SKILL_CFG_ENERGY_COST_TYPE_FIELD.cpp_type = 8
+
+SKILL_CFG_ENERGY_VALUE_FIELD.name = "energy_value"
+SKILL_CFG_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.energy_value"
+SKILL_CFG_ENERGY_VALUE_FIELD.number = 25
+SKILL_CFG_ENERGY_VALUE_FIELD.index = 24
+SKILL_CFG_ENERGY_VALUE_FIELD.label = 2
+SKILL_CFG_ENERGY_VALUE_FIELD.has_default_value = false
+SKILL_CFG_ENERGY_VALUE_FIELD.default_value = 0
+SKILL_CFG_ENERGY_VALUE_FIELD.type = 5
+SKILL_CFG_ENERGY_VALUE_FIELD.cpp_type = 1
+
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.name = "max_energy_value"
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.max_energy_value"
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.number = 26
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.index = 25
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.label = 2
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.has_default_value = false
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.default_value = 0
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.type = 5
+SKILL_CFG_MAX_ENERGY_VALUE_FIELD.cpp_type = 1
+
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.name = "ret_energy_value"
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.ret_energy_value"
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.number = 27
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.index = 26
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.label = 2
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.has_default_value = false
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.default_value = 0
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.type = 5
+SKILL_CFG_RET_ENERGY_VALUE_FIELD.cpp_type = 1
+
+SKILL_CFG_RET_HP_EFFECT_FIELD.name = "ret_hp_effect"
+SKILL_CFG_RET_HP_EFFECT_FIELD.full_name = ".ftcfg.skill_cfg.ret_hp_effect"
+SKILL_CFG_RET_HP_EFFECT_FIELD.number = 28
+SKILL_CFG_RET_HP_EFFECT_FIELD.index = 27
+SKILL_CFG_RET_HP_EFFECT_FIELD.label = 2
+SKILL_CFG_RET_HP_EFFECT_FIELD.has_default_value = false
+SKILL_CFG_RET_HP_EFFECT_FIELD.default_value = 0
+SKILL_CFG_RET_HP_EFFECT_FIELD.type = 5
+SKILL_CFG_RET_HP_EFFECT_FIELD.cpp_type = 1
+
+SKILL_CFG_SHOW_PROGRESS_FIELD.name = "show_progress"
+SKILL_CFG_SHOW_PROGRESS_FIELD.full_name = ".ftcfg.skill_cfg.show_progress"
+SKILL_CFG_SHOW_PROGRESS_FIELD.number = 29
+SKILL_CFG_SHOW_PROGRESS_FIELD.index = 28
+SKILL_CFG_SHOW_PROGRESS_FIELD.label = 2
+SKILL_CFG_SHOW_PROGRESS_FIELD.has_default_value = false
+SKILL_CFG_SHOW_PROGRESS_FIELD.default_value = 0
+SKILL_CFG_SHOW_PROGRESS_FIELD.type = 5
+SKILL_CFG_SHOW_PROGRESS_FIELD.cpp_type = 1
+
+SKILL_CFG_PROGRESS_WORD_FIELD.name = "progress_word"
+SKILL_CFG_PROGRESS_WORD_FIELD.full_name = ".ftcfg.skill_cfg.progress_word"
+SKILL_CFG_PROGRESS_WORD_FIELD.number = 30
+SKILL_CFG_PROGRESS_WORD_FIELD.index = 29
+SKILL_CFG_PROGRESS_WORD_FIELD.label = 2
+SKILL_CFG_PROGRESS_WORD_FIELD.has_default_value = false
+SKILL_CFG_PROGRESS_WORD_FIELD.default_value = 0
+SKILL_CFG_PROGRESS_WORD_FIELD.type = 5
+SKILL_CFG_PROGRESS_WORD_FIELD.cpp_type = 1
+
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.name = "is_trigger_passive"
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.full_name = ".ftcfg.skill_cfg.is_trigger_passive"
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.number = 31
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.index = 30
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.label = 2
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.has_default_value = false
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.default_value = false
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.type = 8
+SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.cpp_type = 7
+
+SKILL_CFG_IS_PASSIVE_FIELD.name = "is_passive"
+SKILL_CFG_IS_PASSIVE_FIELD.full_name = ".ftcfg.skill_cfg.is_passive"
+SKILL_CFG_IS_PASSIVE_FIELD.number = 32
+SKILL_CFG_IS_PASSIVE_FIELD.index = 31
+SKILL_CFG_IS_PASSIVE_FIELD.label = 2
+SKILL_CFG_IS_PASSIVE_FIELD.has_default_value = false
+SKILL_CFG_IS_PASSIVE_FIELD.default_value = false
+SKILL_CFG_IS_PASSIVE_FIELD.type = 8
+SKILL_CFG_IS_PASSIVE_FIELD.cpp_type = 7
+
+SKILL_CFG_TRIGGER_TYPE_FIELD.name = "trigger_type"
+SKILL_CFG_TRIGGER_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.trigger_type"
+SKILL_CFG_TRIGGER_TYPE_FIELD.number = 33
+SKILL_CFG_TRIGGER_TYPE_FIELD.index = 32
+SKILL_CFG_TRIGGER_TYPE_FIELD.label = 2
+SKILL_CFG_TRIGGER_TYPE_FIELD.has_default_value = false
+SKILL_CFG_TRIGGER_TYPE_FIELD.default_value = nil
+SKILL_CFG_TRIGGER_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEEVENTTYPE
+SKILL_CFG_TRIGGER_TYPE_FIELD.type = 14
+SKILL_CFG_TRIGGER_TYPE_FIELD.cpp_type = 8
+
+SKILL_CFG_ACCELERATE_FIELD.name = "accelerate"
+SKILL_CFG_ACCELERATE_FIELD.full_name = ".ftcfg.skill_cfg.accelerate"
+SKILL_CFG_ACCELERATE_FIELD.number = 34
+SKILL_CFG_ACCELERATE_FIELD.index = 33
+SKILL_CFG_ACCELERATE_FIELD.label = 2
+SKILL_CFG_ACCELERATE_FIELD.has_default_value = false
+SKILL_CFG_ACCELERATE_FIELD.default_value = false
+SKILL_CFG_ACCELERATE_FIELD.type = 8
+SKILL_CFG_ACCELERATE_FIELD.cpp_type = 7
+
+SKILL_CFG_IS_CONCURRENCY_FIELD.name = "is_concurrency"
+SKILL_CFG_IS_CONCURRENCY_FIELD.full_name = ".ftcfg.skill_cfg.is_concurrency"
+SKILL_CFG_IS_CONCURRENCY_FIELD.number = 35
+SKILL_CFG_IS_CONCURRENCY_FIELD.index = 34
+SKILL_CFG_IS_CONCURRENCY_FIELD.label = 2
+SKILL_CFG_IS_CONCURRENCY_FIELD.has_default_value = false
+SKILL_CFG_IS_CONCURRENCY_FIELD.default_value = false
+SKILL_CFG_IS_CONCURRENCY_FIELD.type = 8
+SKILL_CFG_IS_CONCURRENCY_FIELD.cpp_type = 7
+
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.name = "int_channel_when_beaten"
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.full_name = ".ftcfg.skill_cfg.int_channel_when_beaten"
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.number = 36
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.index = 35
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.label = 2
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.has_default_value = false
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.default_value = false
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.type = 8
+SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.cpp_type = 7
+
+SKILL_CFG_IS_CHANNEL_FIELD.name = "is_channel"
+SKILL_CFG_IS_CHANNEL_FIELD.full_name = ".ftcfg.skill_cfg.is_channel"
+SKILL_CFG_IS_CHANNEL_FIELD.number = 37
+SKILL_CFG_IS_CHANNEL_FIELD.index = 36
+SKILL_CFG_IS_CHANNEL_FIELD.label = 2
+SKILL_CFG_IS_CHANNEL_FIELD.has_default_value = false
+SKILL_CFG_IS_CHANNEL_FIELD.default_value = false
+SKILL_CFG_IS_CHANNEL_FIELD.type = 8
+SKILL_CFG_IS_CHANNEL_FIELD.cpp_type = 7
+
+SKILL_CFG_CHANNEL_TIME_FIELD.name = "channel_time"
+SKILL_CFG_CHANNEL_TIME_FIELD.full_name = ".ftcfg.skill_cfg.channel_time"
+SKILL_CFG_CHANNEL_TIME_FIELD.number = 38
+SKILL_CFG_CHANNEL_TIME_FIELD.index = 37
+SKILL_CFG_CHANNEL_TIME_FIELD.label = 2
+SKILL_CFG_CHANNEL_TIME_FIELD.has_default_value = false
+SKILL_CFG_CHANNEL_TIME_FIELD.default_value = 0
+SKILL_CFG_CHANNEL_TIME_FIELD.type = 5
+SKILL_CFG_CHANNEL_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_CAN_CANCEL_FIELD.name = "can_cancel"
+SKILL_CFG_CAN_CANCEL_FIELD.full_name = ".ftcfg.skill_cfg.can_cancel"
+SKILL_CFG_CAN_CANCEL_FIELD.number = 39
+SKILL_CFG_CAN_CANCEL_FIELD.index = 38
+SKILL_CFG_CAN_CANCEL_FIELD.label = 2
+SKILL_CFG_CAN_CANCEL_FIELD.has_default_value = false
+SKILL_CFG_CAN_CANCEL_FIELD.default_value = false
+SKILL_CFG_CAN_CANCEL_FIELD.type = 8
+SKILL_CFG_CAN_CANCEL_FIELD.cpp_type = 7
+
+SKILL_CFG_BASE_POS_FIELD.name = "base_pos"
+SKILL_CFG_BASE_POS_FIELD.full_name = ".ftcfg.skill_cfg.base_pos"
+SKILL_CFG_BASE_POS_FIELD.number = 40
+SKILL_CFG_BASE_POS_FIELD.index = 39
+SKILL_CFG_BASE_POS_FIELD.label = 2
+SKILL_CFG_BASE_POS_FIELD.has_default_value = false
+SKILL_CFG_BASE_POS_FIELD.default_value = nil
+SKILL_CFG_BASE_POS_FIELD.enum_type = config_predefine_pb.EBASEAREATYPE
+SKILL_CFG_BASE_POS_FIELD.type = 14
+SKILL_CFG_BASE_POS_FIELD.cpp_type = 8
+
+SKILL_CFG_TARGET_TYPE_FIELD.name = "target_type"
+SKILL_CFG_TARGET_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.target_type"
+SKILL_CFG_TARGET_TYPE_FIELD.number = 41
+SKILL_CFG_TARGET_TYPE_FIELD.index = 40
+SKILL_CFG_TARGET_TYPE_FIELD.label = 2
+SKILL_CFG_TARGET_TYPE_FIELD.has_default_value = false
+SKILL_CFG_TARGET_TYPE_FIELD.default_value = 0
+SKILL_CFG_TARGET_TYPE_FIELD.type = 5
+SKILL_CFG_TARGET_TYPE_FIELD.cpp_type = 1
+
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.name = "remove_buff_when_cancel"
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.full_name = ".ftcfg.skill_cfg.remove_buff_when_cancel"
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.number = 42
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.index = 41
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.label = 2
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.has_default_value = false
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.default_value = false
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.type = 8
+SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.cpp_type = 7
+
+SKILL_CFG_WORK_WHEN_FIELD.name = "work_when"
+SKILL_CFG_WORK_WHEN_FIELD.full_name = ".ftcfg.skill_cfg.work_when"
+SKILL_CFG_WORK_WHEN_FIELD.number = 43
+SKILL_CFG_WORK_WHEN_FIELD.index = 42
+SKILL_CFG_WORK_WHEN_FIELD.label = 2
+SKILL_CFG_WORK_WHEN_FIELD.has_default_value = false
+SKILL_CFG_WORK_WHEN_FIELD.default_value = 0
+SKILL_CFG_WORK_WHEN_FIELD.type = 5
+SKILL_CFG_WORK_WHEN_FIELD.cpp_type = 1
+
+SKILL_CFG_CD_GROUP_ID_FIELD.name = "cd_group_id"
+SKILL_CFG_CD_GROUP_ID_FIELD.full_name = ".ftcfg.skill_cfg.cd_group_id"
+SKILL_CFG_CD_GROUP_ID_FIELD.number = 44
+SKILL_CFG_CD_GROUP_ID_FIELD.index = 43
+SKILL_CFG_CD_GROUP_ID_FIELD.label = 2
+SKILL_CFG_CD_GROUP_ID_FIELD.has_default_value = false
+SKILL_CFG_CD_GROUP_ID_FIELD.default_value = 0
+SKILL_CFG_CD_GROUP_ID_FIELD.type = 5
+SKILL_CFG_CD_GROUP_ID_FIELD.cpp_type = 1
+
+SKILL_CFG_CD_TIME_FIELD.name = "cd_time"
+SKILL_CFG_CD_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cd_time"
+SKILL_CFG_CD_TIME_FIELD.number = 45
+SKILL_CFG_CD_TIME_FIELD.index = 44
+SKILL_CFG_CD_TIME_FIELD.label = 2
+SKILL_CFG_CD_TIME_FIELD.has_default_value = false
+SKILL_CFG_CD_TIME_FIELD.default_value = 0.0
+SKILL_CFG_CD_TIME_FIELD.type = 2
+SKILL_CFG_CD_TIME_FIELD.cpp_type = 6
+
+SKILL_CFG_CD_NUM_FIELD.name = "cd_num"
+SKILL_CFG_CD_NUM_FIELD.full_name = ".ftcfg.skill_cfg.cd_num"
+SKILL_CFG_CD_NUM_FIELD.number = 46
+SKILL_CFG_CD_NUM_FIELD.index = 45
+SKILL_CFG_CD_NUM_FIELD.label = 2
+SKILL_CFG_CD_NUM_FIELD.has_default_value = false
+SKILL_CFG_CD_NUM_FIELD.default_value = 0
+SKILL_CFG_CD_NUM_FIELD.type = 5
+SKILL_CFG_CD_NUM_FIELD.cpp_type = 1
+
+SKILL_CFG_CAST_DISTANCE_FIELD.name = "cast_distance"
+SKILL_CFG_CAST_DISTANCE_FIELD.full_name = ".ftcfg.skill_cfg.cast_distance"
+SKILL_CFG_CAST_DISTANCE_FIELD.number = 47
+SKILL_CFG_CAST_DISTANCE_FIELD.index = 46
+SKILL_CFG_CAST_DISTANCE_FIELD.label = 2
+SKILL_CFG_CAST_DISTANCE_FIELD.has_default_value = false
+SKILL_CFG_CAST_DISTANCE_FIELD.default_value = 0.0
+SKILL_CFG_CAST_DISTANCE_FIELD.type = 2
+SKILL_CFG_CAST_DISTANCE_FIELD.cpp_type = 6
+
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.name = "locked_by_server"
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.full_name = ".ftcfg.skill_cfg.locked_by_server"
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.number = 48
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.index = 47
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.label = 2
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.has_default_value = false
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.default_value = false
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.type = 8
+SKILL_CFG_LOCKED_BY_SERVER_FIELD.cpp_type = 7
+
+SKILL_CFG_RANGE_TYPE_FIELD.name = "range_type"
+SKILL_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.range_type"
+SKILL_CFG_RANGE_TYPE_FIELD.number = 49
+SKILL_CFG_RANGE_TYPE_FIELD.index = 48
+SKILL_CFG_RANGE_TYPE_FIELD.label = 2
+SKILL_CFG_RANGE_TYPE_FIELD.has_default_value = false
+SKILL_CFG_RANGE_TYPE_FIELD.default_value = nil
+SKILL_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
+SKILL_CFG_RANGE_TYPE_FIELD.type = 14
+SKILL_CFG_RANGE_TYPE_FIELD.cpp_type = 8
+
+SKILL_CFG_RANGE_PARA1_FIELD.name = "range_para1"
+SKILL_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.range_para1"
+SKILL_CFG_RANGE_PARA1_FIELD.number = 50
+SKILL_CFG_RANGE_PARA1_FIELD.index = 49
+SKILL_CFG_RANGE_PARA1_FIELD.label = 2
+SKILL_CFG_RANGE_PARA1_FIELD.has_default_value = false
+SKILL_CFG_RANGE_PARA1_FIELD.default_value = 0.0
+SKILL_CFG_RANGE_PARA1_FIELD.type = 2
+SKILL_CFG_RANGE_PARA1_FIELD.cpp_type = 6
+
+SKILL_CFG_RANGE_PARA2_FIELD.name = "range_para2"
+SKILL_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.range_para2"
+SKILL_CFG_RANGE_PARA2_FIELD.number = 51
+SKILL_CFG_RANGE_PARA2_FIELD.index = 50
+SKILL_CFG_RANGE_PARA2_FIELD.label = 2
+SKILL_CFG_RANGE_PARA2_FIELD.has_default_value = false
+SKILL_CFG_RANGE_PARA2_FIELD.default_value = 0.0
+SKILL_CFG_RANGE_PARA2_FIELD.type = 2
+SKILL_CFG_RANGE_PARA2_FIELD.cpp_type = 6
+
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.name = "lock_target_distance"
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.full_name = ".ftcfg.skill_cfg.lock_target_distance"
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.number = 52
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.index = 51
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.label = 2
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.has_default_value = false
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.default_value = 0.0
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.type = 2
+SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.cpp_type = 6
+
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.name = "lock_max_count"
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.full_name = ".ftcfg.skill_cfg.lock_max_count"
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.number = 53
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.index = 52
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.label = 2
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.has_default_value = false
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.default_value = 0
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.type = 5
+SKILL_CFG_LOCK_MAX_COUNT_FIELD.cpp_type = 1
+
+SKILL_CFG_CAST_SWING_TIME_FIELD.name = "cast_swing_time"
+SKILL_CFG_CAST_SWING_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_swing_time"
+SKILL_CFG_CAST_SWING_TIME_FIELD.number = 54
+SKILL_CFG_CAST_SWING_TIME_FIELD.index = 53
+SKILL_CFG_CAST_SWING_TIME_FIELD.label = 2
+SKILL_CFG_CAST_SWING_TIME_FIELD.has_default_value = false
+SKILL_CFG_CAST_SWING_TIME_FIELD.default_value = 0
+SKILL_CFG_CAST_SWING_TIME_FIELD.type = 5
+SKILL_CFG_CAST_SWING_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_CAST_STIFF_TIME_FIELD.name = "cast_stiff_time"
+SKILL_CFG_CAST_STIFF_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_stiff_time"
+SKILL_CFG_CAST_STIFF_TIME_FIELD.number = 55
+SKILL_CFG_CAST_STIFF_TIME_FIELD.index = 54
+SKILL_CFG_CAST_STIFF_TIME_FIELD.label = 2
+SKILL_CFG_CAST_STIFF_TIME_FIELD.has_default_value = false
+SKILL_CFG_CAST_STIFF_TIME_FIELD.default_value = 0
+SKILL_CFG_CAST_STIFF_TIME_FIELD.type = 5
+SKILL_CFG_CAST_STIFF_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.name = "cast_back_swing_time"
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_back_swing_time"
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.number = 56
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.index = 55
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.label = 2
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.has_default_value = false
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.default_value = 0
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.type = 5
+SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.name = "magic_performance_id"
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.full_name = ".ftcfg.skill_cfg.magic_performance_id"
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.number = 57
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.index = 56
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.label = 2
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.has_default_value = false
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.default_value = ""
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.type = 9
+SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.cpp_type = 9
+
+SKILL_CFG_HIT_EFFECT_FIELD.name = "hit_effect"
+SKILL_CFG_HIT_EFFECT_FIELD.full_name = ".ftcfg.skill_cfg.hit_effect"
+SKILL_CFG_HIT_EFFECT_FIELD.number = 58
+SKILL_CFG_HIT_EFFECT_FIELD.index = 57
+SKILL_CFG_HIT_EFFECT_FIELD.label = 2
+SKILL_CFG_HIT_EFFECT_FIELD.has_default_value = false
+SKILL_CFG_HIT_EFFECT_FIELD.default_value = ""
+SKILL_CFG_HIT_EFFECT_FIELD.type = 9
+SKILL_CFG_HIT_EFFECT_FIELD.cpp_type = 9
+
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.name = "hit_effect_time"
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.full_name = ".ftcfg.skill_cfg.hit_effect_time"
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.number = 59
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.index = 58
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.label = 2
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.has_default_value = false
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.default_value = 0
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.type = 5
+SKILL_CFG_HIT_EFFECT_TIME_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE1_FIELD.name = "move_type1"
+SKILL_CFG_MOVE_TYPE1_FIELD.full_name = ".ftcfg.skill_cfg.move_type1"
+SKILL_CFG_MOVE_TYPE1_FIELD.number = 60
+SKILL_CFG_MOVE_TYPE1_FIELD.index = 59
+SKILL_CFG_MOVE_TYPE1_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE1_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE1_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE1_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE1_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT1_FIELD.name = "move_point1"
+SKILL_CFG_MOVE_POINT1_FIELD.full_name = ".ftcfg.skill_cfg.move_point1"
+SKILL_CFG_MOVE_POINT1_FIELD.number = 61
+SKILL_CFG_MOVE_POINT1_FIELD.index = 60
+SKILL_CFG_MOVE_POINT1_FIELD.label = 2
+SKILL_CFG_MOVE_POINT1_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT1_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT1_FIELD.type = 5
+SKILL_CFG_MOVE_POINT1_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.name = "adjust_distance1"
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance1"
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.number = 62
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.index = 61
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE1_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE1_FIELD.name = "move_distance1"
+SKILL_CFG_MOVE_DISTANCE1_FIELD.full_name = ".ftcfg.skill_cfg.move_distance1"
+SKILL_CFG_MOVE_DISTANCE1_FIELD.number = 63
+SKILL_CFG_MOVE_DISTANCE1_FIELD.index = 62
+SKILL_CFG_MOVE_DISTANCE1_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE1_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE1_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE1_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE1_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME1_FIELD.name = "move_time1"
+SKILL_CFG_MOVE_TIME1_FIELD.full_name = ".ftcfg.skill_cfg.move_time1"
+SKILL_CFG_MOVE_TIME1_FIELD.number = 64
+SKILL_CFG_MOVE_TIME1_FIELD.index = 63
+SKILL_CFG_MOVE_TIME1_FIELD.label = 2
+SKILL_CFG_MOVE_TIME1_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME1_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME1_FIELD.type = 5
+SKILL_CFG_MOVE_TIME1_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE2_FIELD.name = "move_type2"
+SKILL_CFG_MOVE_TYPE2_FIELD.full_name = ".ftcfg.skill_cfg.move_type2"
+SKILL_CFG_MOVE_TYPE2_FIELD.number = 65
+SKILL_CFG_MOVE_TYPE2_FIELD.index = 64
+SKILL_CFG_MOVE_TYPE2_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE2_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE2_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE2_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE2_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT2_FIELD.name = "move_point2"
+SKILL_CFG_MOVE_POINT2_FIELD.full_name = ".ftcfg.skill_cfg.move_point2"
+SKILL_CFG_MOVE_POINT2_FIELD.number = 66
+SKILL_CFG_MOVE_POINT2_FIELD.index = 65
+SKILL_CFG_MOVE_POINT2_FIELD.label = 2
+SKILL_CFG_MOVE_POINT2_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT2_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT2_FIELD.type = 5
+SKILL_CFG_MOVE_POINT2_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.name = "adjust_distance2"
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance2"
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.number = 67
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.index = 66
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE2_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE2_FIELD.name = "move_distance2"
+SKILL_CFG_MOVE_DISTANCE2_FIELD.full_name = ".ftcfg.skill_cfg.move_distance2"
+SKILL_CFG_MOVE_DISTANCE2_FIELD.number = 68
+SKILL_CFG_MOVE_DISTANCE2_FIELD.index = 67
+SKILL_CFG_MOVE_DISTANCE2_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE2_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE2_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE2_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE2_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME2_FIELD.name = "move_time2"
+SKILL_CFG_MOVE_TIME2_FIELD.full_name = ".ftcfg.skill_cfg.move_time2"
+SKILL_CFG_MOVE_TIME2_FIELD.number = 69
+SKILL_CFG_MOVE_TIME2_FIELD.index = 68
+SKILL_CFG_MOVE_TIME2_FIELD.label = 2
+SKILL_CFG_MOVE_TIME2_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME2_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME2_FIELD.type = 5
+SKILL_CFG_MOVE_TIME2_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE3_FIELD.name = "move_type3"
+SKILL_CFG_MOVE_TYPE3_FIELD.full_name = ".ftcfg.skill_cfg.move_type3"
+SKILL_CFG_MOVE_TYPE3_FIELD.number = 70
+SKILL_CFG_MOVE_TYPE3_FIELD.index = 69
+SKILL_CFG_MOVE_TYPE3_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE3_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE3_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE3_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE3_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT3_FIELD.name = "move_point3"
+SKILL_CFG_MOVE_POINT3_FIELD.full_name = ".ftcfg.skill_cfg.move_point3"
+SKILL_CFG_MOVE_POINT3_FIELD.number = 71
+SKILL_CFG_MOVE_POINT3_FIELD.index = 70
+SKILL_CFG_MOVE_POINT3_FIELD.label = 2
+SKILL_CFG_MOVE_POINT3_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT3_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT3_FIELD.type = 5
+SKILL_CFG_MOVE_POINT3_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.name = "adjust_distance3"
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance3"
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.number = 72
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.index = 71
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE3_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE3_FIELD.name = "move_distance3"
+SKILL_CFG_MOVE_DISTANCE3_FIELD.full_name = ".ftcfg.skill_cfg.move_distance3"
+SKILL_CFG_MOVE_DISTANCE3_FIELD.number = 73
+SKILL_CFG_MOVE_DISTANCE3_FIELD.index = 72
+SKILL_CFG_MOVE_DISTANCE3_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE3_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE3_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE3_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE3_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME3_FIELD.name = "move_time3"
+SKILL_CFG_MOVE_TIME3_FIELD.full_name = ".ftcfg.skill_cfg.move_time3"
+SKILL_CFG_MOVE_TIME3_FIELD.number = 74
+SKILL_CFG_MOVE_TIME3_FIELD.index = 73
+SKILL_CFG_MOVE_TIME3_FIELD.label = 2
+SKILL_CFG_MOVE_TIME3_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME3_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME3_FIELD.type = 5
+SKILL_CFG_MOVE_TIME3_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE4_FIELD.name = "move_type4"
+SKILL_CFG_MOVE_TYPE4_FIELD.full_name = ".ftcfg.skill_cfg.move_type4"
+SKILL_CFG_MOVE_TYPE4_FIELD.number = 75
+SKILL_CFG_MOVE_TYPE4_FIELD.index = 74
+SKILL_CFG_MOVE_TYPE4_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE4_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE4_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE4_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE4_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT4_FIELD.name = "move_point4"
+SKILL_CFG_MOVE_POINT4_FIELD.full_name = ".ftcfg.skill_cfg.move_point4"
+SKILL_CFG_MOVE_POINT4_FIELD.number = 76
+SKILL_CFG_MOVE_POINT4_FIELD.index = 75
+SKILL_CFG_MOVE_POINT4_FIELD.label = 2
+SKILL_CFG_MOVE_POINT4_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT4_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT4_FIELD.type = 5
+SKILL_CFG_MOVE_POINT4_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.name = "adjust_distance4"
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance4"
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.number = 77
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.index = 76
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE4_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE4_FIELD.name = "move_distance4"
+SKILL_CFG_MOVE_DISTANCE4_FIELD.full_name = ".ftcfg.skill_cfg.move_distance4"
+SKILL_CFG_MOVE_DISTANCE4_FIELD.number = 78
+SKILL_CFG_MOVE_DISTANCE4_FIELD.index = 77
+SKILL_CFG_MOVE_DISTANCE4_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE4_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE4_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE4_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE4_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME4_FIELD.name = "move_time4"
+SKILL_CFG_MOVE_TIME4_FIELD.full_name = ".ftcfg.skill_cfg.move_time4"
+SKILL_CFG_MOVE_TIME4_FIELD.number = 79
+SKILL_CFG_MOVE_TIME4_FIELD.index = 78
+SKILL_CFG_MOVE_TIME4_FIELD.label = 2
+SKILL_CFG_MOVE_TIME4_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME4_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME4_FIELD.type = 5
+SKILL_CFG_MOVE_TIME4_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE5_FIELD.name = "move_type5"
+SKILL_CFG_MOVE_TYPE5_FIELD.full_name = ".ftcfg.skill_cfg.move_type5"
+SKILL_CFG_MOVE_TYPE5_FIELD.number = 80
+SKILL_CFG_MOVE_TYPE5_FIELD.index = 79
+SKILL_CFG_MOVE_TYPE5_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE5_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE5_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE5_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE5_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT5_FIELD.name = "move_point5"
+SKILL_CFG_MOVE_POINT5_FIELD.full_name = ".ftcfg.skill_cfg.move_point5"
+SKILL_CFG_MOVE_POINT5_FIELD.number = 81
+SKILL_CFG_MOVE_POINT5_FIELD.index = 80
+SKILL_CFG_MOVE_POINT5_FIELD.label = 2
+SKILL_CFG_MOVE_POINT5_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT5_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT5_FIELD.type = 5
+SKILL_CFG_MOVE_POINT5_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.name = "adjust_distance5"
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance5"
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.number = 82
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.index = 81
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE5_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE5_FIELD.name = "move_distance5"
+SKILL_CFG_MOVE_DISTANCE5_FIELD.full_name = ".ftcfg.skill_cfg.move_distance5"
+SKILL_CFG_MOVE_DISTANCE5_FIELD.number = 83
+SKILL_CFG_MOVE_DISTANCE5_FIELD.index = 82
+SKILL_CFG_MOVE_DISTANCE5_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE5_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE5_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE5_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE5_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME5_FIELD.name = "move_time5"
+SKILL_CFG_MOVE_TIME5_FIELD.full_name = ".ftcfg.skill_cfg.move_time5"
+SKILL_CFG_MOVE_TIME5_FIELD.number = 84
+SKILL_CFG_MOVE_TIME5_FIELD.index = 83
+SKILL_CFG_MOVE_TIME5_FIELD.label = 2
+SKILL_CFG_MOVE_TIME5_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME5_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME5_FIELD.type = 5
+SKILL_CFG_MOVE_TIME5_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE6_FIELD.name = "move_type6"
+SKILL_CFG_MOVE_TYPE6_FIELD.full_name = ".ftcfg.skill_cfg.move_type6"
+SKILL_CFG_MOVE_TYPE6_FIELD.number = 85
+SKILL_CFG_MOVE_TYPE6_FIELD.index = 84
+SKILL_CFG_MOVE_TYPE6_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE6_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE6_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE6_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE6_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT6_FIELD.name = "move_point6"
+SKILL_CFG_MOVE_POINT6_FIELD.full_name = ".ftcfg.skill_cfg.move_point6"
+SKILL_CFG_MOVE_POINT6_FIELD.number = 86
+SKILL_CFG_MOVE_POINT6_FIELD.index = 85
+SKILL_CFG_MOVE_POINT6_FIELD.label = 2
+SKILL_CFG_MOVE_POINT6_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT6_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT6_FIELD.type = 5
+SKILL_CFG_MOVE_POINT6_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.name = "adjust_distance6"
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance6"
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.number = 87
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.index = 86
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE6_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE6_FIELD.name = "move_distance6"
+SKILL_CFG_MOVE_DISTANCE6_FIELD.full_name = ".ftcfg.skill_cfg.move_distance6"
+SKILL_CFG_MOVE_DISTANCE6_FIELD.number = 88
+SKILL_CFG_MOVE_DISTANCE6_FIELD.index = 87
+SKILL_CFG_MOVE_DISTANCE6_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE6_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE6_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE6_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE6_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME6_FIELD.name = "move_time6"
+SKILL_CFG_MOVE_TIME6_FIELD.full_name = ".ftcfg.skill_cfg.move_time6"
+SKILL_CFG_MOVE_TIME6_FIELD.number = 89
+SKILL_CFG_MOVE_TIME6_FIELD.index = 88
+SKILL_CFG_MOVE_TIME6_FIELD.label = 2
+SKILL_CFG_MOVE_TIME6_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME6_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME6_FIELD.type = 5
+SKILL_CFG_MOVE_TIME6_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE7_FIELD.name = "move_type7"
+SKILL_CFG_MOVE_TYPE7_FIELD.full_name = ".ftcfg.skill_cfg.move_type7"
+SKILL_CFG_MOVE_TYPE7_FIELD.number = 90
+SKILL_CFG_MOVE_TYPE7_FIELD.index = 89
+SKILL_CFG_MOVE_TYPE7_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE7_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE7_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE7_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE7_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT7_FIELD.name = "move_point7"
+SKILL_CFG_MOVE_POINT7_FIELD.full_name = ".ftcfg.skill_cfg.move_point7"
+SKILL_CFG_MOVE_POINT7_FIELD.number = 91
+SKILL_CFG_MOVE_POINT7_FIELD.index = 90
+SKILL_CFG_MOVE_POINT7_FIELD.label = 2
+SKILL_CFG_MOVE_POINT7_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT7_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT7_FIELD.type = 5
+SKILL_CFG_MOVE_POINT7_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.name = "adjust_distance7"
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance7"
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.number = 92
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.index = 91
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE7_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE7_FIELD.name = "move_distance7"
+SKILL_CFG_MOVE_DISTANCE7_FIELD.full_name = ".ftcfg.skill_cfg.move_distance7"
+SKILL_CFG_MOVE_DISTANCE7_FIELD.number = 93
+SKILL_CFG_MOVE_DISTANCE7_FIELD.index = 92
+SKILL_CFG_MOVE_DISTANCE7_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE7_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE7_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE7_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE7_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME7_FIELD.name = "move_time7"
+SKILL_CFG_MOVE_TIME7_FIELD.full_name = ".ftcfg.skill_cfg.move_time7"
+SKILL_CFG_MOVE_TIME7_FIELD.number = 94
+SKILL_CFG_MOVE_TIME7_FIELD.index = 93
+SKILL_CFG_MOVE_TIME7_FIELD.label = 2
+SKILL_CFG_MOVE_TIME7_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME7_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME7_FIELD.type = 5
+SKILL_CFG_MOVE_TIME7_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_TYPE8_FIELD.name = "move_type8"
+SKILL_CFG_MOVE_TYPE8_FIELD.full_name = ".ftcfg.skill_cfg.move_type8"
+SKILL_CFG_MOVE_TYPE8_FIELD.number = 95
+SKILL_CFG_MOVE_TYPE8_FIELD.index = 94
+SKILL_CFG_MOVE_TYPE8_FIELD.label = 2
+SKILL_CFG_MOVE_TYPE8_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TYPE8_FIELD.default_value = 0
+SKILL_CFG_MOVE_TYPE8_FIELD.type = 5
+SKILL_CFG_MOVE_TYPE8_FIELD.cpp_type = 1
+
+SKILL_CFG_MOVE_POINT8_FIELD.name = "move_point8"
+SKILL_CFG_MOVE_POINT8_FIELD.full_name = ".ftcfg.skill_cfg.move_point8"
+SKILL_CFG_MOVE_POINT8_FIELD.number = 96
+SKILL_CFG_MOVE_POINT8_FIELD.index = 95
+SKILL_CFG_MOVE_POINT8_FIELD.label = 2
+SKILL_CFG_MOVE_POINT8_FIELD.has_default_value = false
+SKILL_CFG_MOVE_POINT8_FIELD.default_value = 0
+SKILL_CFG_MOVE_POINT8_FIELD.type = 5
+SKILL_CFG_MOVE_POINT8_FIELD.cpp_type = 1
+
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.name = "adjust_distance8"
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance8"
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.number = 97
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.index = 96
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.label = 2
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.has_default_value = false
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.default_value = 0.0
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.type = 2
+SKILL_CFG_ADJUST_DISTANCE8_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_DISTANCE8_FIELD.name = "move_distance8"
+SKILL_CFG_MOVE_DISTANCE8_FIELD.full_name = ".ftcfg.skill_cfg.move_distance8"
+SKILL_CFG_MOVE_DISTANCE8_FIELD.number = 98
+SKILL_CFG_MOVE_DISTANCE8_FIELD.index = 97
+SKILL_CFG_MOVE_DISTANCE8_FIELD.label = 2
+SKILL_CFG_MOVE_DISTANCE8_FIELD.has_default_value = false
+SKILL_CFG_MOVE_DISTANCE8_FIELD.default_value = 0.0
+SKILL_CFG_MOVE_DISTANCE8_FIELD.type = 2
+SKILL_CFG_MOVE_DISTANCE8_FIELD.cpp_type = 6
+
+SKILL_CFG_MOVE_TIME8_FIELD.name = "move_time8"
+SKILL_CFG_MOVE_TIME8_FIELD.full_name = ".ftcfg.skill_cfg.move_time8"
+SKILL_CFG_MOVE_TIME8_FIELD.number = 99
+SKILL_CFG_MOVE_TIME8_FIELD.index = 98
+SKILL_CFG_MOVE_TIME8_FIELD.label = 2
+SKILL_CFG_MOVE_TIME8_FIELD.has_default_value = false
+SKILL_CFG_MOVE_TIME8_FIELD.default_value = 0
+SKILL_CFG_MOVE_TIME8_FIELD.type = 5
+SKILL_CFG_MOVE_TIME8_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_1_FIELD.name = "logic_type_1"
+SKILL_CFG_LOGIC_TYPE_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_1"
+SKILL_CFG_LOGIC_TYPE_1_FIELD.number = 100
+SKILL_CFG_LOGIC_TYPE_1_FIELD.index = 99
+SKILL_CFG_LOGIC_TYPE_1_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_1_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_1_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_1_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_1_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_1_FIELD.name = "logic_time_1"
+SKILL_CFG_LOGIC_TIME_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_1"
+SKILL_CFG_LOGIC_TIME_1_FIELD.number = 101
+SKILL_CFG_LOGIC_TIME_1_FIELD.index = 100
+SKILL_CFG_LOGIC_TIME_1_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_1_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_1_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_1_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_1_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_1_FIELD.name = "logic_id_1"
+SKILL_CFG_LOGIC_ID_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_1"
+SKILL_CFG_LOGIC_ID_1_FIELD.number = 102
+SKILL_CFG_LOGIC_ID_1_FIELD.index = 101
+SKILL_CFG_LOGIC_ID_1_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_1_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_1_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_1_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_1_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_2_FIELD.name = "logic_type_2"
+SKILL_CFG_LOGIC_TYPE_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_2"
+SKILL_CFG_LOGIC_TYPE_2_FIELD.number = 103
+SKILL_CFG_LOGIC_TYPE_2_FIELD.index = 102
+SKILL_CFG_LOGIC_TYPE_2_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_2_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_2_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_2_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_2_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_2_FIELD.name = "logic_time_2"
+SKILL_CFG_LOGIC_TIME_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_2"
+SKILL_CFG_LOGIC_TIME_2_FIELD.number = 104
+SKILL_CFG_LOGIC_TIME_2_FIELD.index = 103
+SKILL_CFG_LOGIC_TIME_2_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_2_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_2_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_2_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_2_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_2_FIELD.name = "logic_id_2"
+SKILL_CFG_LOGIC_ID_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_2"
+SKILL_CFG_LOGIC_ID_2_FIELD.number = 105
+SKILL_CFG_LOGIC_ID_2_FIELD.index = 104
+SKILL_CFG_LOGIC_ID_2_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_2_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_2_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_2_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_2_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_3_FIELD.name = "logic_type_3"
+SKILL_CFG_LOGIC_TYPE_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_3"
+SKILL_CFG_LOGIC_TYPE_3_FIELD.number = 106
+SKILL_CFG_LOGIC_TYPE_3_FIELD.index = 105
+SKILL_CFG_LOGIC_TYPE_3_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_3_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_3_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_3_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_3_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_3_FIELD.name = "logic_time_3"
+SKILL_CFG_LOGIC_TIME_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_3"
+SKILL_CFG_LOGIC_TIME_3_FIELD.number = 107
+SKILL_CFG_LOGIC_TIME_3_FIELD.index = 106
+SKILL_CFG_LOGIC_TIME_3_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_3_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_3_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_3_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_3_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_3_FIELD.name = "logic_id_3"
+SKILL_CFG_LOGIC_ID_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_3"
+SKILL_CFG_LOGIC_ID_3_FIELD.number = 108
+SKILL_CFG_LOGIC_ID_3_FIELD.index = 107
+SKILL_CFG_LOGIC_ID_3_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_3_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_3_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_3_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_3_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_4_FIELD.name = "logic_type_4"
+SKILL_CFG_LOGIC_TYPE_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_4"
+SKILL_CFG_LOGIC_TYPE_4_FIELD.number = 109
+SKILL_CFG_LOGIC_TYPE_4_FIELD.index = 108
+SKILL_CFG_LOGIC_TYPE_4_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_4_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_4_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_4_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_4_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_4_FIELD.name = "logic_time_4"
+SKILL_CFG_LOGIC_TIME_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_4"
+SKILL_CFG_LOGIC_TIME_4_FIELD.number = 110
+SKILL_CFG_LOGIC_TIME_4_FIELD.index = 109
+SKILL_CFG_LOGIC_TIME_4_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_4_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_4_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_4_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_4_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_4_FIELD.name = "logic_id_4"
+SKILL_CFG_LOGIC_ID_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_4"
+SKILL_CFG_LOGIC_ID_4_FIELD.number = 111
+SKILL_CFG_LOGIC_ID_4_FIELD.index = 110
+SKILL_CFG_LOGIC_ID_4_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_4_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_4_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_4_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_4_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_5_FIELD.name = "logic_type_5"
+SKILL_CFG_LOGIC_TYPE_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_5"
+SKILL_CFG_LOGIC_TYPE_5_FIELD.number = 112
+SKILL_CFG_LOGIC_TYPE_5_FIELD.index = 111
+SKILL_CFG_LOGIC_TYPE_5_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_5_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_5_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_5_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_5_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_5_FIELD.name = "logic_time_5"
+SKILL_CFG_LOGIC_TIME_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_5"
+SKILL_CFG_LOGIC_TIME_5_FIELD.number = 113
+SKILL_CFG_LOGIC_TIME_5_FIELD.index = 112
+SKILL_CFG_LOGIC_TIME_5_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_5_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_5_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_5_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_5_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_5_FIELD.name = "logic_id_5"
+SKILL_CFG_LOGIC_ID_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_5"
+SKILL_CFG_LOGIC_ID_5_FIELD.number = 114
+SKILL_CFG_LOGIC_ID_5_FIELD.index = 113
+SKILL_CFG_LOGIC_ID_5_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_5_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_5_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_5_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_5_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_6_FIELD.name = "logic_type_6"
+SKILL_CFG_LOGIC_TYPE_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_6"
+SKILL_CFG_LOGIC_TYPE_6_FIELD.number = 115
+SKILL_CFG_LOGIC_TYPE_6_FIELD.index = 114
+SKILL_CFG_LOGIC_TYPE_6_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_6_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_6_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_6_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_6_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_6_FIELD.name = "logic_time_6"
+SKILL_CFG_LOGIC_TIME_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_6"
+SKILL_CFG_LOGIC_TIME_6_FIELD.number = 116
+SKILL_CFG_LOGIC_TIME_6_FIELD.index = 115
+SKILL_CFG_LOGIC_TIME_6_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_6_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_6_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_6_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_6_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_6_FIELD.name = "logic_id_6"
+SKILL_CFG_LOGIC_ID_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_6"
+SKILL_CFG_LOGIC_ID_6_FIELD.number = 117
+SKILL_CFG_LOGIC_ID_6_FIELD.index = 116
+SKILL_CFG_LOGIC_ID_6_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_6_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_6_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_6_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_6_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_7_FIELD.name = "logic_type_7"
+SKILL_CFG_LOGIC_TYPE_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_7"
+SKILL_CFG_LOGIC_TYPE_7_FIELD.number = 118
+SKILL_CFG_LOGIC_TYPE_7_FIELD.index = 117
+SKILL_CFG_LOGIC_TYPE_7_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_7_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_7_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_7_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_7_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_7_FIELD.name = "logic_time_7"
+SKILL_CFG_LOGIC_TIME_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_7"
+SKILL_CFG_LOGIC_TIME_7_FIELD.number = 119
+SKILL_CFG_LOGIC_TIME_7_FIELD.index = 118
+SKILL_CFG_LOGIC_TIME_7_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_7_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_7_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_7_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_7_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_7_FIELD.name = "logic_id_7"
+SKILL_CFG_LOGIC_ID_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_7"
+SKILL_CFG_LOGIC_ID_7_FIELD.number = 120
+SKILL_CFG_LOGIC_ID_7_FIELD.index = 119
+SKILL_CFG_LOGIC_ID_7_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_7_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_7_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_7_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_7_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_8_FIELD.name = "logic_type_8"
+SKILL_CFG_LOGIC_TYPE_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_8"
+SKILL_CFG_LOGIC_TYPE_8_FIELD.number = 121
+SKILL_CFG_LOGIC_TYPE_8_FIELD.index = 120
+SKILL_CFG_LOGIC_TYPE_8_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_8_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_8_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_8_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_8_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_8_FIELD.name = "logic_time_8"
+SKILL_CFG_LOGIC_TIME_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_8"
+SKILL_CFG_LOGIC_TIME_8_FIELD.number = 122
+SKILL_CFG_LOGIC_TIME_8_FIELD.index = 121
+SKILL_CFG_LOGIC_TIME_8_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_8_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_8_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_8_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_8_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_8_FIELD.name = "logic_id_8"
+SKILL_CFG_LOGIC_ID_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_8"
+SKILL_CFG_LOGIC_ID_8_FIELD.number = 123
+SKILL_CFG_LOGIC_ID_8_FIELD.index = 122
+SKILL_CFG_LOGIC_ID_8_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_8_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_8_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_8_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_8_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_9_FIELD.name = "logic_type_9"
+SKILL_CFG_LOGIC_TYPE_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_9"
+SKILL_CFG_LOGIC_TYPE_9_FIELD.number = 124
+SKILL_CFG_LOGIC_TYPE_9_FIELD.index = 123
+SKILL_CFG_LOGIC_TYPE_9_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_9_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_9_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_9_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_9_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_9_FIELD.name = "logic_time_9"
+SKILL_CFG_LOGIC_TIME_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_9"
+SKILL_CFG_LOGIC_TIME_9_FIELD.number = 125
+SKILL_CFG_LOGIC_TIME_9_FIELD.index = 124
+SKILL_CFG_LOGIC_TIME_9_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_9_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_9_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_9_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_9_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_9_FIELD.name = "logic_id_9"
+SKILL_CFG_LOGIC_ID_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_9"
+SKILL_CFG_LOGIC_ID_9_FIELD.number = 126
+SKILL_CFG_LOGIC_ID_9_FIELD.index = 125
+SKILL_CFG_LOGIC_ID_9_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_9_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_9_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_9_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_9_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_10_FIELD.name = "logic_type_10"
+SKILL_CFG_LOGIC_TYPE_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_10"
+SKILL_CFG_LOGIC_TYPE_10_FIELD.number = 127
+SKILL_CFG_LOGIC_TYPE_10_FIELD.index = 126
+SKILL_CFG_LOGIC_TYPE_10_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_10_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_10_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_10_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_10_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_10_FIELD.name = "logic_time_10"
+SKILL_CFG_LOGIC_TIME_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_10"
+SKILL_CFG_LOGIC_TIME_10_FIELD.number = 128
+SKILL_CFG_LOGIC_TIME_10_FIELD.index = 127
+SKILL_CFG_LOGIC_TIME_10_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_10_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_10_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_10_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_10_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_10_FIELD.name = "logic_id_10"
+SKILL_CFG_LOGIC_ID_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_10"
+SKILL_CFG_LOGIC_ID_10_FIELD.number = 129
+SKILL_CFG_LOGIC_ID_10_FIELD.index = 128
+SKILL_CFG_LOGIC_ID_10_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_10_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_10_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_10_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_10_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_11_FIELD.name = "logic_type_11"
+SKILL_CFG_LOGIC_TYPE_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_11"
+SKILL_CFG_LOGIC_TYPE_11_FIELD.number = 130
+SKILL_CFG_LOGIC_TYPE_11_FIELD.index = 129
+SKILL_CFG_LOGIC_TYPE_11_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_11_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_11_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_11_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_11_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_11_FIELD.name = "logic_time_11"
+SKILL_CFG_LOGIC_TIME_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_11"
+SKILL_CFG_LOGIC_TIME_11_FIELD.number = 131
+SKILL_CFG_LOGIC_TIME_11_FIELD.index = 130
+SKILL_CFG_LOGIC_TIME_11_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_11_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_11_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_11_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_11_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_11_FIELD.name = "logic_id_11"
+SKILL_CFG_LOGIC_ID_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_11"
+SKILL_CFG_LOGIC_ID_11_FIELD.number = 132
+SKILL_CFG_LOGIC_ID_11_FIELD.index = 131
+SKILL_CFG_LOGIC_ID_11_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_11_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_11_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_11_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_11_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TYPE_12_FIELD.name = "logic_type_12"
+SKILL_CFG_LOGIC_TYPE_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_12"
+SKILL_CFG_LOGIC_TYPE_12_FIELD.number = 133
+SKILL_CFG_LOGIC_TYPE_12_FIELD.index = 132
+SKILL_CFG_LOGIC_TYPE_12_FIELD.label = 2
+SKILL_CFG_LOGIC_TYPE_12_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TYPE_12_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TYPE_12_FIELD.type = 5
+SKILL_CFG_LOGIC_TYPE_12_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_TIME_12_FIELD.name = "logic_time_12"
+SKILL_CFG_LOGIC_TIME_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_12"
+SKILL_CFG_LOGIC_TIME_12_FIELD.number = 134
+SKILL_CFG_LOGIC_TIME_12_FIELD.index = 133
+SKILL_CFG_LOGIC_TIME_12_FIELD.label = 2
+SKILL_CFG_LOGIC_TIME_12_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_TIME_12_FIELD.default_value = 0
+SKILL_CFG_LOGIC_TIME_12_FIELD.type = 5
+SKILL_CFG_LOGIC_TIME_12_FIELD.cpp_type = 1
+
+SKILL_CFG_LOGIC_ID_12_FIELD.name = "logic_id_12"
+SKILL_CFG_LOGIC_ID_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_12"
+SKILL_CFG_LOGIC_ID_12_FIELD.number = 135
+SKILL_CFG_LOGIC_ID_12_FIELD.index = 134
+SKILL_CFG_LOGIC_ID_12_FIELD.label = 2
+SKILL_CFG_LOGIC_ID_12_FIELD.has_default_value = false
+SKILL_CFG_LOGIC_ID_12_FIELD.default_value = 0
+SKILL_CFG_LOGIC_ID_12_FIELD.type = 5
+SKILL_CFG_LOGIC_ID_12_FIELD.cpp_type = 1
+
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.name = "affect_range_type"
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.affect_range_type"
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.number = 136
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.index = 135
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.label = 2
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.has_default_value = false
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.default_value = nil
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAFFECTAREATYPE
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.type = 14
+SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.cpp_type = 8
+
+SKILL_CFG_ART_PARA1_FIELD.name = "art_para1"
+SKILL_CFG_ART_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.art_para1"
+SKILL_CFG_ART_PARA1_FIELD.number = 137
+SKILL_CFG_ART_PARA1_FIELD.index = 136
+SKILL_CFG_ART_PARA1_FIELD.label = 2
+SKILL_CFG_ART_PARA1_FIELD.has_default_value = false
+SKILL_CFG_ART_PARA1_FIELD.default_value = 0
+SKILL_CFG_ART_PARA1_FIELD.type = 5
+SKILL_CFG_ART_PARA1_FIELD.cpp_type = 1
+
+SKILL_CFG_ART_PARA2_FIELD.name = "art_para2"
+SKILL_CFG_ART_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.art_para2"
+SKILL_CFG_ART_PARA2_FIELD.number = 138
+SKILL_CFG_ART_PARA2_FIELD.index = 137
+SKILL_CFG_ART_PARA2_FIELD.label = 2
+SKILL_CFG_ART_PARA2_FIELD.has_default_value = false
+SKILL_CFG_ART_PARA2_FIELD.default_value = 0
+SKILL_CFG_ART_PARA2_FIELD.type = 5
+SKILL_CFG_ART_PARA2_FIELD.cpp_type = 1
+
+SKILL_CFG.name = "skill_cfg"
+SKILL_CFG.full_name = ".ftcfg.skill_cfg"
+SKILL_CFG.nested_types = {}
+SKILL_CFG.enum_types = {}
+SKILL_CFG.fields = {SKILL_CFG_ID_FIELD, SKILL_CFG_NAME_TIP_FIELD, SKILL_CFG_NAME_FIELD, SKILL_CFG_SKILL_LEVEL_FIELD, SKILL_CFG_PLAYER_LEVEL_FIELD, SKILL_CFG_LEVELUP_COST_FIELD, SKILL_CFG_NEXT_LEVEL_ID_FIELD, SKILL_CFG_SKILL_ICON_FIELD, SKILL_CFG_SKILL_PROF_FIELD, SKILL_CFG_TIPS2_FIELD, SKILL_CFG_TIPS_FIELD, SKILL_CFG_TIPS3_FIELD, SKILL_CFG_TIPS_PARA1_FIELD, SKILL_CFG_TIPS_PARA2_FIELD, SKILL_CFG_TIPS_PARA3_FIELD, SKILL_CFG_TIPS_PARA4_FIELD, SKILL_CFG_TIPS_PARA5_FIELD, SKILL_CFG_TIPS_PARA6_FIELD, SKILL_CFG_NEXT_SKILL_FIELD, SKILL_CFG_NEXT_CHANGE_SKILL_FIELD, SKILL_CFG_AUTO_SKILL_FIELD, SKILL_CFG_NEXT_SKILL_TIME_FIELD, SKILL_CFG_SKILL_TYPE_FIELD, SKILL_CFG_ENERGY_COST_TYPE_FIELD, SKILL_CFG_ENERGY_VALUE_FIELD, SKILL_CFG_MAX_ENERGY_VALUE_FIELD, SKILL_CFG_RET_ENERGY_VALUE_FIELD, SKILL_CFG_RET_HP_EFFECT_FIELD, SKILL_CFG_SHOW_PROGRESS_FIELD, SKILL_CFG_PROGRESS_WORD_FIELD, SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD, SKILL_CFG_IS_PASSIVE_FIELD, SKILL_CFG_TRIGGER_TYPE_FIELD, SKILL_CFG_ACCELERATE_FIELD, SKILL_CFG_IS_CONCURRENCY_FIELD, SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD, SKILL_CFG_IS_CHANNEL_FIELD, SKILL_CFG_CHANNEL_TIME_FIELD, SKILL_CFG_CAN_CANCEL_FIELD, SKILL_CFG_BASE_POS_FIELD, SKILL_CFG_TARGET_TYPE_FIELD, SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD, SKILL_CFG_WORK_WHEN_FIELD, SKILL_CFG_CD_GROUP_ID_FIELD, SKILL_CFG_CD_TIME_FIELD, SKILL_CFG_CD_NUM_FIELD, SKILL_CFG_CAST_DISTANCE_FIELD, SKILL_CFG_LOCKED_BY_SERVER_FIELD, SKILL_CFG_RANGE_TYPE_FIELD, SKILL_CFG_RANGE_PARA1_FIELD, SKILL_CFG_RANGE_PARA2_FIELD, SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD, SKILL_CFG_LOCK_MAX_COUNT_FIELD, SKILL_CFG_CAST_SWING_TIME_FIELD, SKILL_CFG_CAST_STIFF_TIME_FIELD, SKILL_CFG_CAST_BACK_SWING_TIME_FIELD, SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD, SKILL_CFG_HIT_EFFECT_FIELD, SKILL_CFG_HIT_EFFECT_TIME_FIELD, SKILL_CFG_MOVE_TYPE1_FIELD, SKILL_CFG_MOVE_POINT1_FIELD, SKILL_CFG_ADJUST_DISTANCE1_FIELD, SKILL_CFG_MOVE_DISTANCE1_FIELD, SKILL_CFG_MOVE_TIME1_FIELD, SKILL_CFG_MOVE_TYPE2_FIELD, SKILL_CFG_MOVE_POINT2_FIELD, SKILL_CFG_ADJUST_DISTANCE2_FIELD, SKILL_CFG_MOVE_DISTANCE2_FIELD, SKILL_CFG_MOVE_TIME2_FIELD, SKILL_CFG_MOVE_TYPE3_FIELD, SKILL_CFG_MOVE_POINT3_FIELD, SKILL_CFG_ADJUST_DISTANCE3_FIELD, SKILL_CFG_MOVE_DISTANCE3_FIELD, SKILL_CFG_MOVE_TIME3_FIELD, SKILL_CFG_MOVE_TYPE4_FIELD, SKILL_CFG_MOVE_POINT4_FIELD, SKILL_CFG_ADJUST_DISTANCE4_FIELD, SKILL_CFG_MOVE_DISTANCE4_FIELD, SKILL_CFG_MOVE_TIME4_FIELD, SKILL_CFG_MOVE_TYPE5_FIELD, SKILL_CFG_MOVE_POINT5_FIELD, SKILL_CFG_ADJUST_DISTANCE5_FIELD, SKILL_CFG_MOVE_DISTANCE5_FIELD, SKILL_CFG_MOVE_TIME5_FIELD, SKILL_CFG_MOVE_TYPE6_FIELD, SKILL_CFG_MOVE_POINT6_FIELD, SKILL_CFG_ADJUST_DISTANCE6_FIELD, SKILL_CFG_MOVE_DISTANCE6_FIELD, SKILL_CFG_MOVE_TIME6_FIELD, SKILL_CFG_MOVE_TYPE7_FIELD, SKILL_CFG_MOVE_POINT7_FIELD, SKILL_CFG_ADJUST_DISTANCE7_FIELD, SKILL_CFG_MOVE_DISTANCE7_FIELD, SKILL_CFG_MOVE_TIME7_FIELD, SKILL_CFG_MOVE_TYPE8_FIELD, SKILL_CFG_MOVE_POINT8_FIELD, SKILL_CFG_ADJUST_DISTANCE8_FIELD, SKILL_CFG_MOVE_DISTANCE8_FIELD, SKILL_CFG_MOVE_TIME8_FIELD, SKILL_CFG_LOGIC_TYPE_1_FIELD, SKILL_CFG_LOGIC_TIME_1_FIELD, SKILL_CFG_LOGIC_ID_1_FIELD, SKILL_CFG_LOGIC_TYPE_2_FIELD, SKILL_CFG_LOGIC_TIME_2_FIELD, SKILL_CFG_LOGIC_ID_2_FIELD, SKILL_CFG_LOGIC_TYPE_3_FIELD, SKILL_CFG_LOGIC_TIME_3_FIELD, SKILL_CFG_LOGIC_ID_3_FIELD, SKILL_CFG_LOGIC_TYPE_4_FIELD, SKILL_CFG_LOGIC_TIME_4_FIELD, SKILL_CFG_LOGIC_ID_4_FIELD, SKILL_CFG_LOGIC_TYPE_5_FIELD, SKILL_CFG_LOGIC_TIME_5_FIELD, SKILL_CFG_LOGIC_ID_5_FIELD, SKILL_CFG_LOGIC_TYPE_6_FIELD, SKILL_CFG_LOGIC_TIME_6_FIELD, SKILL_CFG_LOGIC_ID_6_FIELD, SKILL_CFG_LOGIC_TYPE_7_FIELD, SKILL_CFG_LOGIC_TIME_7_FIELD, SKILL_CFG_LOGIC_ID_7_FIELD, SKILL_CFG_LOGIC_TYPE_8_FIELD, SKILL_CFG_LOGIC_TIME_8_FIELD, SKILL_CFG_LOGIC_ID_8_FIELD, SKILL_CFG_LOGIC_TYPE_9_FIELD, SKILL_CFG_LOGIC_TIME_9_FIELD, SKILL_CFG_LOGIC_ID_9_FIELD, SKILL_CFG_LOGIC_TYPE_10_FIELD, SKILL_CFG_LOGIC_TIME_10_FIELD, SKILL_CFG_LOGIC_ID_10_FIELD, SKILL_CFG_LOGIC_TYPE_11_FIELD, SKILL_CFG_LOGIC_TIME_11_FIELD, SKILL_CFG_LOGIC_ID_11_FIELD, SKILL_CFG_LOGIC_TYPE_12_FIELD, SKILL_CFG_LOGIC_TIME_12_FIELD, SKILL_CFG_LOGIC_ID_12_FIELD, SKILL_CFG_AFFECT_RANGE_TYPE_FIELD, SKILL_CFG_ART_PARA1_FIELD, SKILL_CFG_ART_PARA2_FIELD}
+SKILL_CFG.is_extendable = false
+SKILL_CFG.extensions = {}
+SKILL_CFGS_ITEMS_FIELD.name = "items"
+SKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_cfgs.items"
+SKILL_CFGS_ITEMS_FIELD.number = 1
+SKILL_CFGS_ITEMS_FIELD.index = 0
+SKILL_CFGS_ITEMS_FIELD.label = 3
+SKILL_CFGS_ITEMS_FIELD.has_default_value = false
+SKILL_CFGS_ITEMS_FIELD.default_value = {}
+SKILL_CFGS_ITEMS_FIELD.message_type = SKILL_CFG
+SKILL_CFGS_ITEMS_FIELD.type = 11
+SKILL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SKILL_CFGS.name = "skill_cfgs"
+SKILL_CFGS.full_name = ".ftcfg.skill_cfgs"
+SKILL_CFGS.nested_types = {}
+SKILL_CFGS.enum_types = {}
+SKILL_CFGS.fields = {SKILL_CFGS_ITEMS_FIELD}
+SKILL_CFGS.is_extendable = false
+SKILL_CFGS.extensions = {}
+SKILL_ID_CFG_ID_FIELD.name = "id"
+SKILL_ID_CFG_ID_FIELD.full_name = ".ftcfg.skill_id_cfg.id"
+SKILL_ID_CFG_ID_FIELD.number = 1
+SKILL_ID_CFG_ID_FIELD.index = 0
+SKILL_ID_CFG_ID_FIELD.label = 2
+SKILL_ID_CFG_ID_FIELD.has_default_value = false
+SKILL_ID_CFG_ID_FIELD.default_value = 0
+SKILL_ID_CFG_ID_FIELD.type = 5
+SKILL_ID_CFG_ID_FIELD.cpp_type = 1
+
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.name = "skill_id_array"
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.full_name = ".ftcfg.skill_id_cfg.skill_id_array"
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.number = 2
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.index = 1
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.label = 3
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.has_default_value = false
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.default_value = {}
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.type = 5
+SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.cpp_type = 1
+
+SKILL_ID_CFG.name = "skill_id_cfg"
+SKILL_ID_CFG.full_name = ".ftcfg.skill_id_cfg"
+SKILL_ID_CFG.nested_types = {}
+SKILL_ID_CFG.enum_types = {}
+SKILL_ID_CFG.fields = {SKILL_ID_CFG_ID_FIELD, SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD}
+SKILL_ID_CFG.is_extendable = false
+SKILL_ID_CFG.extensions = {}
+SKILL_ID_CFGS_ITEMS_FIELD.name = "items"
+SKILL_ID_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_id_cfgs.items"
+SKILL_ID_CFGS_ITEMS_FIELD.number = 1
+SKILL_ID_CFGS_ITEMS_FIELD.index = 0
+SKILL_ID_CFGS_ITEMS_FIELD.label = 3
+SKILL_ID_CFGS_ITEMS_FIELD.has_default_value = false
+SKILL_ID_CFGS_ITEMS_FIELD.default_value = {}
+SKILL_ID_CFGS_ITEMS_FIELD.message_type = SKILL_ID_CFG
+SKILL_ID_CFGS_ITEMS_FIELD.type = 11
+SKILL_ID_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SKILL_ID_CFGS.name = "skill_id_cfgs"
+SKILL_ID_CFGS.full_name = ".ftcfg.skill_id_cfgs"
+SKILL_ID_CFGS.nested_types = {}
+SKILL_ID_CFGS.enum_types = {}
+SKILL_ID_CFGS.fields = {SKILL_ID_CFGS_ITEMS_FIELD}
+SKILL_ID_CFGS.is_extendable = false
+SKILL_ID_CFGS.extensions = {}
+SKILL_CONDITION_CFG_ID_FIELD.name = "id"
+SKILL_CONDITION_CFG_ID_FIELD.full_name = ".ftcfg.skill_condition_cfg.id"
+SKILL_CONDITION_CFG_ID_FIELD.number = 1
+SKILL_CONDITION_CFG_ID_FIELD.index = 0
+SKILL_CONDITION_CFG_ID_FIELD.label = 2
+SKILL_CONDITION_CFG_ID_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_ID_FIELD.default_value = 0
+SKILL_CONDITION_CFG_ID_FIELD.type = 5
+SKILL_CONDITION_CFG_ID_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_DESC_FIELD.name = "desc"
+SKILL_CONDITION_CFG_DESC_FIELD.full_name = ".ftcfg.skill_condition_cfg.desc"
+SKILL_CONDITION_CFG_DESC_FIELD.number = 2
+SKILL_CONDITION_CFG_DESC_FIELD.index = 1
+SKILL_CONDITION_CFG_DESC_FIELD.label = 2
+SKILL_CONDITION_CFG_DESC_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_DESC_FIELD.default_value = ""
+SKILL_CONDITION_CFG_DESC_FIELD.type = 9
+SKILL_CONDITION_CFG_DESC_FIELD.cpp_type = 9
+
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.name = "effect_target"
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.full_name = ".ftcfg.skill_condition_cfg.effect_target"
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.number = 3
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.index = 2
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.label = 2
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.default_value = nil
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.enum_type = config_predefine_pb.CONDITIONTARGETTYPE
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.type = 14
+SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.cpp_type = 8
+
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.name = "range_type"
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_type"
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.number = 4
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.index = 3
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.default_value = nil
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.type = 14
+SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.cpp_type = 8
+
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.name = "range_angle"
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_angle"
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.number = 5
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.index = 4
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.type = 2
+SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.name = "range_offset_x"
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_offset_x"
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.number = 6
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.index = 5
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.type = 2
+SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.name = "range_offset_z"
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_offset_z"
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.number = 7
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.index = 6
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.type = 2
+SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.name = "range_para1"
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_para1"
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.number = 8
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.index = 7
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.type = 2
+SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.name = "range_para2"
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_para2"
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.number = 9
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.index = 8
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.label = 2
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.type = 2
+SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.name = "entity_types"
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.full_name = ".ftcfg.skill_condition_cfg.entity_types"
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.number = 10
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.index = 9
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.label = 3
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.default_value = {}
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.type = 5
+SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.name = "include_target"
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.full_name = ".ftcfg.skill_condition_cfg.include_target"
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.number = 11
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.index = 10
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.label = 2
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.default_value = false
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.type = 8
+SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.cpp_type = 7
+
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.name = "target_num"
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.full_name = ".ftcfg.skill_condition_cfg.target_num"
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.number = 12
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.index = 11
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.label = 2
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.default_value = 0
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.type = 5
+SKILL_CONDITION_CFG_TARGET_NUM_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.name = "ignore_block"
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.full_name = ".ftcfg.skill_condition_cfg.ignore_block"
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.number = 13
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.index = 12
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.label = 2
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.default_value = false
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.type = 8
+SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.cpp_type = 7
+
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.name = "ignore_dodge"
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.full_name = ".ftcfg.skill_condition_cfg.ignore_dodge"
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.number = 14
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.index = 13
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.label = 2
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.default_value = false
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.type = 8
+SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.cpp_type = 7
+
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.name = "target_order_type"
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.target_order_type"
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.number = 15
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.index = 14
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.label = 2
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.default_value = nil
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.enum_type = config_predefine_pb.ECONDITIONORDERTYPE
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.type = 14
+SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.cpp_type = 8
+
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.name = "repeat_num"
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.full_name = ".ftcfg.skill_condition_cfg.repeat_num"
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.number = 16
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.index = 15
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.label = 2
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.default_value = 0
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.type = 5
+SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.name = "hit_rate"
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_rate"
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.number = 17
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.index = 16
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.type = 2
+SKILL_CONDITION_CFG_HIT_RATE_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_ATK_LV_FIELD.name = "atk_lv"
+SKILL_CONDITION_CFG_ATK_LV_FIELD.full_name = ".ftcfg.skill_condition_cfg.atk_lv"
+SKILL_CONDITION_CFG_ATK_LV_FIELD.number = 18
+SKILL_CONDITION_CFG_ATK_LV_FIELD.index = 17
+SKILL_CONDITION_CFG_ATK_LV_FIELD.label = 2
+SKILL_CONDITION_CFG_ATK_LV_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_ATK_LV_FIELD.default_value = 0
+SKILL_CONDITION_CFG_ATK_LV_FIELD.type = 5
+SKILL_CONDITION_CFG_ATK_LV_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.name = "am_beaten"
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_beaten"
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.number = 19
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.index = 18
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.label = 2
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.default_value = ""
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.type = 9
+SKILL_CONDITION_CFG_AM_BEATEN_FIELD.cpp_type = 9
+
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.name = "am_beaten_eff"
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_beaten_eff"
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.number = 20
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.index = 19
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.label = 2
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.default_value = ""
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.type = 9
+SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.cpp_type = 9
+
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.name = "beaten_time"
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.beaten_time"
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.number = 21
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.index = 20
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.label = 2
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.default_value = 0
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.type = 5
+SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.name = "beat_back_type"
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_back_type"
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.number = 22
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.index = 21
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.label = 2
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.default_value = 0
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.type = 5
+SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.name = "beat_dis"
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_dis"
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.number = 23
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.index = 22
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.label = 2
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.type = 2
+SKILL_CONDITION_CFG_BEAT_DIS_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.name = "beat_back_move_time"
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_back_move_time"
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.number = 24
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.index = 23
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.label = 2
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.default_value = 0
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.type = 5
+SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.name = "am_dead"
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_dead"
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.number = 25
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.index = 24
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.label = 2
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.default_value = 0
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.type = 5
+SKILL_CONDITION_CFG_AM_DEAD_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.name = "dead_back_type"
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_back_type"
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.number = 26
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.index = 25
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.label = 2
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.default_value = 0
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.type = 5
+SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.name = "dead_dis"
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_dis"
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.number = 27
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.index = 26
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.label = 2
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.type = 2
+SKILL_CONDITION_CFG_DEAD_DIS_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.name = "dead_back_move_time"
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_back_move_time"
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.number = 28
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.index = 27
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.label = 2
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.default_value = 0
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.type = 5
+SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.name = "self_effect_1"
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_effect_1"
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.number = 29
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.index = 28
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.label = 2
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.default_value = 0
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.type = 5
+SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.name = "self_hit_buff1"
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_hit_buff1"
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.number = 30
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.index = 29
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.label = 2
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.default_value = 0
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.type = 5
+SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.name = "self_hit_buff_chance1"
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_hit_buff_chance1"
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.number = 31
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.index = 30
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.label = 2
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.type = 2
+SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.name = "hit_effect_1"
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_1"
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.number = 32
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.index = 31
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.name = "hit_effect_2"
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_2"
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.number = 33
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.index = 32
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.name = "hit_effect_3"
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_3"
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.number = 34
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.index = 33
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.name = "hit_buff1"
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff1"
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.number = 35
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.index = 34
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.name = "hit_buff_chance1"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance1"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.number = 36
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.index = 35
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.type = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.name = "hit_buff2"
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff2"
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.number = 37
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.index = 36
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.name = "hit_buff_chance2"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance2"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.number = 38
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.index = 37
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.type = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.name = "hit_buff3"
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff3"
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.number = 39
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.index = 38
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.default_value = 0
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.type = 5
+SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.name = "hit_buff_chance3"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance3"
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.number = 40
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.index = 39
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.label = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.type = 2
+SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.name = "crit_effect"
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.full_name = ".ftcfg.skill_condition_cfg.crit_effect"
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.number = 41
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.index = 40
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.label = 2
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.default_value = 0
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.type = 5
+SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.name = "dead_strike_effect"
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_strike_effect"
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.number = 42
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.index = 41
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.label = 2
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.default_value = 0
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.type = 5
+SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.name = "buff_when_crit"
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_when_crit"
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.number = 43
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.index = 42
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.label = 2
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.default_value = 0
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.type = 5
+SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.name = "buff_chance_when_crit"
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_chance_when_crit"
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.number = 44
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.index = 43
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.label = 2
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.type = 2
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.name = "buff_when_deadstrike"
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_when_deadstrike"
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.number = 45
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.index = 44
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.label = 2
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.default_value = 0
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.type = 5
+SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.cpp_type = 1
+
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.name = "buff_chance_when_deadstrike"
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_chance_when_deadstrike"
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.number = 46
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.index = 45
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.label = 2
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.has_default_value = false
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.default_value = 0.0
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.type = 2
+SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.cpp_type = 6
+
+SKILL_CONDITION_CFG.name = "skill_condition_cfg"
+SKILL_CONDITION_CFG.full_name = ".ftcfg.skill_condition_cfg"
+SKILL_CONDITION_CFG.nested_types = {}
+SKILL_CONDITION_CFG.enum_types = {}
+SKILL_CONDITION_CFG.fields = {SKILL_CONDITION_CFG_ID_FIELD, SKILL_CONDITION_CFG_DESC_FIELD, SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD, SKILL_CONDITION_CFG_RANGE_TYPE_FIELD, SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD, SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD, SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD, SKILL_CONDITION_CFG_RANGE_PARA1_FIELD, SKILL_CONDITION_CFG_RANGE_PARA2_FIELD, SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD, SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD, SKILL_CONDITION_CFG_TARGET_NUM_FIELD, SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD, SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD, SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD, SKILL_CONDITION_CFG_REPEAT_NUM_FIELD, SKILL_CONDITION_CFG_HIT_RATE_FIELD, SKILL_CONDITION_CFG_ATK_LV_FIELD, SKILL_CONDITION_CFG_AM_BEATEN_FIELD, SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD, SKILL_CONDITION_CFG_BEATEN_TIME_FIELD, SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD, SKILL_CONDITION_CFG_BEAT_DIS_FIELD, SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD, SKILL_CONDITION_CFG_AM_DEAD_FIELD, SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD, SKILL_CONDITION_CFG_DEAD_DIS_FIELD, SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD, SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD, SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD, SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD, SKILL_CONDITION_CFG_HIT_BUFF1_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD, SKILL_CONDITION_CFG_HIT_BUFF2_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD, SKILL_CONDITION_CFG_HIT_BUFF3_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD, SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD, SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD, SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD, SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD, SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD, SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD}
+SKILL_CONDITION_CFG.is_extendable = false
+SKILL_CONDITION_CFG.extensions = {}
+SKILL_CONDITION_CFGS_ITEMS_FIELD.name = "items"
+SKILL_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_condition_cfgs.items"
+SKILL_CONDITION_CFGS_ITEMS_FIELD.number = 1
+SKILL_CONDITION_CFGS_ITEMS_FIELD.index = 0
+SKILL_CONDITION_CFGS_ITEMS_FIELD.label = 3
+SKILL_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
+SKILL_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
+SKILL_CONDITION_CFGS_ITEMS_FIELD.message_type = SKILL_CONDITION_CFG
+SKILL_CONDITION_CFGS_ITEMS_FIELD.type = 11
+SKILL_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SKILL_CONDITION_CFGS.name = "skill_condition_cfgs"
+SKILL_CONDITION_CFGS.full_name = ".ftcfg.skill_condition_cfgs"
+SKILL_CONDITION_CFGS.nested_types = {}
+SKILL_CONDITION_CFGS.enum_types = {}
+SKILL_CONDITION_CFGS.fields = {SKILL_CONDITION_CFGS_ITEMS_FIELD}
+SKILL_CONDITION_CFGS.is_extendable = false
+SKILL_CONDITION_CFGS.extensions = {}
+TEST_CFG_ID_FIELD.name = "id"
+TEST_CFG_ID_FIELD.full_name = ".ftcfg.test_cfg.id"
+TEST_CFG_ID_FIELD.number = 1
+TEST_CFG_ID_FIELD.index = 0
+TEST_CFG_ID_FIELD.label = 2
+TEST_CFG_ID_FIELD.has_default_value = false
+TEST_CFG_ID_FIELD.default_value = 0
+TEST_CFG_ID_FIELD.type = 5
+TEST_CFG_ID_FIELD.cpp_type = 1
+
+TEST_CFG_TESTSTRUCT1_FIELD.name = "testStruct1"
+TEST_CFG_TESTSTRUCT1_FIELD.full_name = ".ftcfg.test_cfg.testStruct1"
+TEST_CFG_TESTSTRUCT1_FIELD.number = 2
+TEST_CFG_TESTSTRUCT1_FIELD.index = 1
+TEST_CFG_TESTSTRUCT1_FIELD.label = 1
+TEST_CFG_TESTSTRUCT1_FIELD.has_default_value = false
+TEST_CFG_TESTSTRUCT1_FIELD.default_value = nil
+TEST_CFG_TESTSTRUCT1_FIELD.message_type = config_predefine_pb.TESTSTRUCT
+TEST_CFG_TESTSTRUCT1_FIELD.type = 11
+TEST_CFG_TESTSTRUCT1_FIELD.cpp_type = 10
+
+TEST_CFG_TES_FIELD.name = "tes"
+TEST_CFG_TES_FIELD.full_name = ".ftcfg.test_cfg.tes"
+TEST_CFG_TES_FIELD.number = 3
+TEST_CFG_TES_FIELD.index = 2
+TEST_CFG_TES_FIELD.label = 3
+TEST_CFG_TES_FIELD.has_default_value = false
+TEST_CFG_TES_FIELD.default_value = {}
+TEST_CFG_TES_FIELD.enum_type = config_predefine_pb.TESTENUM
+TEST_CFG_TES_FIELD.type = 14
+TEST_CFG_TES_FIELD.cpp_type = 8
+
+TEST_CFG.name = "test_cfg"
+TEST_CFG.full_name = ".ftcfg.test_cfg"
+TEST_CFG.nested_types = {}
+TEST_CFG.enum_types = {}
+TEST_CFG.fields = {TEST_CFG_ID_FIELD, TEST_CFG_TESTSTRUCT1_FIELD, TEST_CFG_TES_FIELD}
+TEST_CFG.is_extendable = false
+TEST_CFG.extensions = {}
+TEST_CFGS_ITEMS_FIELD.name = "items"
+TEST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.test_cfgs.items"
+TEST_CFGS_ITEMS_FIELD.number = 1
+TEST_CFGS_ITEMS_FIELD.index = 0
+TEST_CFGS_ITEMS_FIELD.label = 3
+TEST_CFGS_ITEMS_FIELD.has_default_value = false
+TEST_CFGS_ITEMS_FIELD.default_value = {}
+TEST_CFGS_ITEMS_FIELD.message_type = TEST_CFG
+TEST_CFGS_ITEMS_FIELD.type = 11
+TEST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TEST_CFGS.name = "test_cfgs"
+TEST_CFGS.full_name = ".ftcfg.test_cfgs"
+TEST_CFGS.nested_types = {}
+TEST_CFGS.enum_types = {}
+TEST_CFGS.fields = {TEST_CFGS_ITEMS_FIELD}
+TEST_CFGS.is_extendable = false
+TEST_CFGS.extensions = {}
+ITEM_CFG_ID_FIELD.name = "id"
+ITEM_CFG_ID_FIELD.full_name = ".ftcfg.item_cfg.id"
+ITEM_CFG_ID_FIELD.number = 1
+ITEM_CFG_ID_FIELD.index = 0
+ITEM_CFG_ID_FIELD.label = 2
+ITEM_CFG_ID_FIELD.has_default_value = false
+ITEM_CFG_ID_FIELD.default_value = 0
+ITEM_CFG_ID_FIELD.type = 13
+ITEM_CFG_ID_FIELD.cpp_type = 3
+
+ITEM_CFG_ITEM_NAME_FIELD.name = "item_name"
+ITEM_CFG_ITEM_NAME_FIELD.full_name = ".ftcfg.item_cfg.item_name"
+ITEM_CFG_ITEM_NAME_FIELD.number = 2
+ITEM_CFG_ITEM_NAME_FIELD.index = 1
+ITEM_CFG_ITEM_NAME_FIELD.label = 2
+ITEM_CFG_ITEM_NAME_FIELD.has_default_value = false
+ITEM_CFG_ITEM_NAME_FIELD.default_value = ""
+ITEM_CFG_ITEM_NAME_FIELD.type = 9
+ITEM_CFG_ITEM_NAME_FIELD.cpp_type = 9
+
+ITEM_CFG_FORMULA_ID_FIELD.name = "formula_id"
+ITEM_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.item_cfg.formula_id"
+ITEM_CFG_FORMULA_ID_FIELD.number = 3
+ITEM_CFG_FORMULA_ID_FIELD.index = 2
+ITEM_CFG_FORMULA_ID_FIELD.label = 2
+ITEM_CFG_FORMULA_ID_FIELD.has_default_value = false
+ITEM_CFG_FORMULA_ID_FIELD.default_value = 0
+ITEM_CFG_FORMULA_ID_FIELD.type = 5
+ITEM_CFG_FORMULA_ID_FIELD.cpp_type = 1
+
+ITEM_CFG_ITEM_DESC_FIELD.name = "item_desc"
+ITEM_CFG_ITEM_DESC_FIELD.full_name = ".ftcfg.item_cfg.item_desc"
+ITEM_CFG_ITEM_DESC_FIELD.number = 4
+ITEM_CFG_ITEM_DESC_FIELD.index = 3
+ITEM_CFG_ITEM_DESC_FIELD.label = 2
+ITEM_CFG_ITEM_DESC_FIELD.has_default_value = false
+ITEM_CFG_ITEM_DESC_FIELD.default_value = ""
+ITEM_CFG_ITEM_DESC_FIELD.type = 9
+ITEM_CFG_ITEM_DESC_FIELD.cpp_type = 9
+
+ITEM_CFG_STACK_MAX_FIELD.name = "stack_max"
+ITEM_CFG_STACK_MAX_FIELD.full_name = ".ftcfg.item_cfg.stack_max"
+ITEM_CFG_STACK_MAX_FIELD.number = 5
+ITEM_CFG_STACK_MAX_FIELD.index = 4
+ITEM_CFG_STACK_MAX_FIELD.label = 2
+ITEM_CFG_STACK_MAX_FIELD.has_default_value = false
+ITEM_CFG_STACK_MAX_FIELD.default_value = 0
+ITEM_CFG_STACK_MAX_FIELD.type = 5
+ITEM_CFG_STACK_MAX_FIELD.cpp_type = 1
+
+ITEM_CFG_NEED_LEVEL_FIELD.name = "need_level"
+ITEM_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.item_cfg.need_level"
+ITEM_CFG_NEED_LEVEL_FIELD.number = 6
+ITEM_CFG_NEED_LEVEL_FIELD.index = 5
+ITEM_CFG_NEED_LEVEL_FIELD.label = 2
+ITEM_CFG_NEED_LEVEL_FIELD.has_default_value = false
+ITEM_CFG_NEED_LEVEL_FIELD.default_value = 0
+ITEM_CFG_NEED_LEVEL_FIELD.type = 5
+ITEM_CFG_NEED_LEVEL_FIELD.cpp_type = 1
+
+ITEM_CFG_NEED_PROF_FIELD.name = "need_prof"
+ITEM_CFG_NEED_PROF_FIELD.full_name = ".ftcfg.item_cfg.need_prof"
+ITEM_CFG_NEED_PROF_FIELD.number = 7
+ITEM_CFG_NEED_PROF_FIELD.index = 6
+ITEM_CFG_NEED_PROF_FIELD.label = 2
+ITEM_CFG_NEED_PROF_FIELD.has_default_value = false
+ITEM_CFG_NEED_PROF_FIELD.default_value = nil
+ITEM_CFG_NEED_PROF_FIELD.enum_type = config_predefine_pb.EPROFTYPE
+ITEM_CFG_NEED_PROF_FIELD.type = 14
+ITEM_CFG_NEED_PROF_FIELD.cpp_type = 8
+
+ITEM_CFG_ITEM_TYPE_FIELD.name = "item_type"
+ITEM_CFG_ITEM_TYPE_FIELD.full_name = ".ftcfg.item_cfg.item_type"
+ITEM_CFG_ITEM_TYPE_FIELD.number = 8
+ITEM_CFG_ITEM_TYPE_FIELD.index = 7
+ITEM_CFG_ITEM_TYPE_FIELD.label = 2
+ITEM_CFG_ITEM_TYPE_FIELD.has_default_value = false
+ITEM_CFG_ITEM_TYPE_FIELD.default_value = nil
+ITEM_CFG_ITEM_TYPE_FIELD.enum_type = config_predefine_pb.EITEMTYPE
+ITEM_CFG_ITEM_TYPE_FIELD.type = 14
+ITEM_CFG_ITEM_TYPE_FIELD.cpp_type = 8
+
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.name = "item_sub_type"
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.full_name = ".ftcfg.item_cfg.item_sub_type"
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.number = 9
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.index = 8
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.label = 2
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.has_default_value = false
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.default_value = 0
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.type = 5
+ITEM_CFG_ITEM_SUB_TYPE_FIELD.cpp_type = 1
+
+ITEM_CFG_ITEM_PART_FIELD.name = "item_part"
+ITEM_CFG_ITEM_PART_FIELD.full_name = ".ftcfg.item_cfg.item_part"
+ITEM_CFG_ITEM_PART_FIELD.number = 10
+ITEM_CFG_ITEM_PART_FIELD.index = 9
+ITEM_CFG_ITEM_PART_FIELD.label = 3
+ITEM_CFG_ITEM_PART_FIELD.has_default_value = false
+ITEM_CFG_ITEM_PART_FIELD.default_value = {}
+ITEM_CFG_ITEM_PART_FIELD.type = 5
+ITEM_CFG_ITEM_PART_FIELD.cpp_type = 1
+
+ITEM_CFG_DISPLAY_TYPE_FIELD.name = "display_type"
+ITEM_CFG_DISPLAY_TYPE_FIELD.full_name = ".ftcfg.item_cfg.display_type"
+ITEM_CFG_DISPLAY_TYPE_FIELD.number = 11
+ITEM_CFG_DISPLAY_TYPE_FIELD.index = 10
+ITEM_CFG_DISPLAY_TYPE_FIELD.label = 2
+ITEM_CFG_DISPLAY_TYPE_FIELD.has_default_value = false
+ITEM_CFG_DISPLAY_TYPE_FIELD.default_value = 0
+ITEM_CFG_DISPLAY_TYPE_FIELD.type = 5
+ITEM_CFG_DISPLAY_TYPE_FIELD.cpp_type = 1
+
+ITEM_CFG_ITEM_COLOR_FIELD.name = "item_color"
+ITEM_CFG_ITEM_COLOR_FIELD.full_name = ".ftcfg.item_cfg.item_color"
+ITEM_CFG_ITEM_COLOR_FIELD.number = 12
+ITEM_CFG_ITEM_COLOR_FIELD.index = 11
+ITEM_CFG_ITEM_COLOR_FIELD.label = 2
+ITEM_CFG_ITEM_COLOR_FIELD.has_default_value = false
+ITEM_CFG_ITEM_COLOR_FIELD.default_value = nil
+ITEM_CFG_ITEM_COLOR_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
+ITEM_CFG_ITEM_COLOR_FIELD.type = 14
+ITEM_CFG_ITEM_COLOR_FIELD.cpp_type = 8
+
+ITEM_CFG_ITEM_ICON_FIELD.name = "item_icon"
+ITEM_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.item_cfg.item_icon"
+ITEM_CFG_ITEM_ICON_FIELD.number = 13
+ITEM_CFG_ITEM_ICON_FIELD.index = 12
+ITEM_CFG_ITEM_ICON_FIELD.label = 2
+ITEM_CFG_ITEM_ICON_FIELD.has_default_value = false
+ITEM_CFG_ITEM_ICON_FIELD.default_value = ""
+ITEM_CFG_ITEM_ICON_FIELD.type = 9
+ITEM_CFG_ITEM_ICON_FIELD.cpp_type = 9
+
+ITEM_CFG_ITEM_MARK_FIELD.name = "item_mark"
+ITEM_CFG_ITEM_MARK_FIELD.full_name = ".ftcfg.item_cfg.item_mark"
+ITEM_CFG_ITEM_MARK_FIELD.number = 14
+ITEM_CFG_ITEM_MARK_FIELD.index = 13
+ITEM_CFG_ITEM_MARK_FIELD.label = 2
+ITEM_CFG_ITEM_MARK_FIELD.has_default_value = false
+ITEM_CFG_ITEM_MARK_FIELD.default_value = 0
+ITEM_CFG_ITEM_MARK_FIELD.type = 5
+ITEM_CFG_ITEM_MARK_FIELD.cpp_type = 1
+
+ITEM_CFG_OWN_MAX_FIELD.name = "own_max"
+ITEM_CFG_OWN_MAX_FIELD.full_name = ".ftcfg.item_cfg.own_max"
+ITEM_CFG_OWN_MAX_FIELD.number = 15
+ITEM_CFG_OWN_MAX_FIELD.index = 14
+ITEM_CFG_OWN_MAX_FIELD.label = 2
+ITEM_CFG_OWN_MAX_FIELD.has_default_value = false
+ITEM_CFG_OWN_MAX_FIELD.default_value = 0
+ITEM_CFG_OWN_MAX_FIELD.type = 13
+ITEM_CFG_OWN_MAX_FIELD.cpp_type = 3
+
+ITEM_CFG_COULD_TRADE_FIELD.name = "could_trade"
+ITEM_CFG_COULD_TRADE_FIELD.full_name = ".ftcfg.item_cfg.could_trade"
+ITEM_CFG_COULD_TRADE_FIELD.number = 16
+ITEM_CFG_COULD_TRADE_FIELD.index = 15
+ITEM_CFG_COULD_TRADE_FIELD.label = 2
+ITEM_CFG_COULD_TRADE_FIELD.has_default_value = false
+ITEM_CFG_COULD_TRADE_FIELD.default_value = 0
+ITEM_CFG_COULD_TRADE_FIELD.type = 5
+ITEM_CFG_COULD_TRADE_FIELD.cpp_type = 1
+
+ITEM_CFG_TRADE_COOLDOWN_FIELD.name = "trade_cooldown"
+ITEM_CFG_TRADE_COOLDOWN_FIELD.full_name = ".ftcfg.item_cfg.trade_cooldown"
+ITEM_CFG_TRADE_COOLDOWN_FIELD.number = 17
+ITEM_CFG_TRADE_COOLDOWN_FIELD.index = 16
+ITEM_CFG_TRADE_COOLDOWN_FIELD.label = 2
+ITEM_CFG_TRADE_COOLDOWN_FIELD.has_default_value = false
+ITEM_CFG_TRADE_COOLDOWN_FIELD.default_value = 0
+ITEM_CFG_TRADE_COOLDOWN_FIELD.type = 5
+ITEM_CFG_TRADE_COOLDOWN_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_SELL_FIELD.name = "could_sell"
+ITEM_CFG_COULD_SELL_FIELD.full_name = ".ftcfg.item_cfg.could_sell"
+ITEM_CFG_COULD_SELL_FIELD.number = 18
+ITEM_CFG_COULD_SELL_FIELD.index = 17
+ITEM_CFG_COULD_SELL_FIELD.label = 2
+ITEM_CFG_COULD_SELL_FIELD.has_default_value = false
+ITEM_CFG_COULD_SELL_FIELD.default_value = 0
+ITEM_CFG_COULD_SELL_FIELD.type = 5
+ITEM_CFG_COULD_SELL_FIELD.cpp_type = 1
+
+ITEM_CFG_SELL_COST_TYPE_FIELD.name = "sell_cost_type"
+ITEM_CFG_SELL_COST_TYPE_FIELD.full_name = ".ftcfg.item_cfg.sell_cost_type"
+ITEM_CFG_SELL_COST_TYPE_FIELD.number = 19
+ITEM_CFG_SELL_COST_TYPE_FIELD.index = 18
+ITEM_CFG_SELL_COST_TYPE_FIELD.label = 2
+ITEM_CFG_SELL_COST_TYPE_FIELD.has_default_value = false
+ITEM_CFG_SELL_COST_TYPE_FIELD.default_value = 0
+ITEM_CFG_SELL_COST_TYPE_FIELD.type = 5
+ITEM_CFG_SELL_COST_TYPE_FIELD.cpp_type = 1
+
+ITEM_CFG_SELL_COST_NUM_FIELD.name = "sell_cost_num"
+ITEM_CFG_SELL_COST_NUM_FIELD.full_name = ".ftcfg.item_cfg.sell_cost_num"
+ITEM_CFG_SELL_COST_NUM_FIELD.number = 20
+ITEM_CFG_SELL_COST_NUM_FIELD.index = 19
+ITEM_CFG_SELL_COST_NUM_FIELD.label = 2
+ITEM_CFG_SELL_COST_NUM_FIELD.has_default_value = false
+ITEM_CFG_SELL_COST_NUM_FIELD.default_value = 0
+ITEM_CFG_SELL_COST_NUM_FIELD.type = 5
+ITEM_CFG_SELL_COST_NUM_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_USE_FIELD.name = "could_use"
+ITEM_CFG_COULD_USE_FIELD.full_name = ".ftcfg.item_cfg.could_use"
+ITEM_CFG_COULD_USE_FIELD.number = 21
+ITEM_CFG_COULD_USE_FIELD.index = 20
+ITEM_CFG_COULD_USE_FIELD.label = 2
+ITEM_CFG_COULD_USE_FIELD.has_default_value = false
+ITEM_CFG_COULD_USE_FIELD.default_value = 0
+ITEM_CFG_COULD_USE_FIELD.type = 5
+ITEM_CFG_COULD_USE_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_WINDOWUSE_FIELD.name = "could_windowuse"
+ITEM_CFG_COULD_WINDOWUSE_FIELD.full_name = ".ftcfg.item_cfg.could_windowuse"
+ITEM_CFG_COULD_WINDOWUSE_FIELD.number = 22
+ITEM_CFG_COULD_WINDOWUSE_FIELD.index = 21
+ITEM_CFG_COULD_WINDOWUSE_FIELD.label = 2
+ITEM_CFG_COULD_WINDOWUSE_FIELD.has_default_value = false
+ITEM_CFG_COULD_WINDOWUSE_FIELD.default_value = 0
+ITEM_CFG_COULD_WINDOWUSE_FIELD.type = 5
+ITEM_CFG_COULD_WINDOWUSE_FIELD.cpp_type = 1
+
+ITEM_CFG_WINDOWUSE_MAX_FIELD.name = "windowuse_max"
+ITEM_CFG_WINDOWUSE_MAX_FIELD.full_name = ".ftcfg.item_cfg.windowuse_max"
+ITEM_CFG_WINDOWUSE_MAX_FIELD.number = 23
+ITEM_CFG_WINDOWUSE_MAX_FIELD.index = 22
+ITEM_CFG_WINDOWUSE_MAX_FIELD.label = 2
+ITEM_CFG_WINDOWUSE_MAX_FIELD.has_default_value = false
+ITEM_CFG_WINDOWUSE_MAX_FIELD.default_value = 0
+ITEM_CFG_WINDOWUSE_MAX_FIELD.type = 5
+ITEM_CFG_WINDOWUSE_MAX_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_SHOW_USE_FIELD.name = "could_show_use"
+ITEM_CFG_COULD_SHOW_USE_FIELD.full_name = ".ftcfg.item_cfg.could_show_use"
+ITEM_CFG_COULD_SHOW_USE_FIELD.number = 24
+ITEM_CFG_COULD_SHOW_USE_FIELD.index = 23
+ITEM_CFG_COULD_SHOW_USE_FIELD.label = 2
+ITEM_CFG_COULD_SHOW_USE_FIELD.has_default_value = false
+ITEM_CFG_COULD_SHOW_USE_FIELD.default_value = 0
+ITEM_CFG_COULD_SHOW_USE_FIELD.type = 5
+ITEM_CFG_COULD_SHOW_USE_FIELD.cpp_type = 1
+
+ITEM_CFG_USE_DELAY_FIELD.name = "use_delay"
+ITEM_CFG_USE_DELAY_FIELD.full_name = ".ftcfg.item_cfg.use_delay"
+ITEM_CFG_USE_DELAY_FIELD.number = 25
+ITEM_CFG_USE_DELAY_FIELD.index = 24
+ITEM_CFG_USE_DELAY_FIELD.label = 2
+ITEM_CFG_USE_DELAY_FIELD.has_default_value = false
+ITEM_CFG_USE_DELAY_FIELD.default_value = 0
+ITEM_CFG_USE_DELAY_FIELD.type = 5
+ITEM_CFG_USE_DELAY_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_BULK_USE_FIELD.name = "could_bulk_use"
+ITEM_CFG_COULD_BULK_USE_FIELD.full_name = ".ftcfg.item_cfg.could_bulk_use"
+ITEM_CFG_COULD_BULK_USE_FIELD.number = 26
+ITEM_CFG_COULD_BULK_USE_FIELD.index = 25
+ITEM_CFG_COULD_BULK_USE_FIELD.label = 2
+ITEM_CFG_COULD_BULK_USE_FIELD.has_default_value = false
+ITEM_CFG_COULD_BULK_USE_FIELD.default_value = 0
+ITEM_CFG_COULD_BULK_USE_FIELD.type = 5
+ITEM_CFG_COULD_BULK_USE_FIELD.cpp_type = 1
+
+ITEM_CFG_CD_GROUP_ID_FIELD.name = "cd_group_id"
+ITEM_CFG_CD_GROUP_ID_FIELD.full_name = ".ftcfg.item_cfg.cd_group_id"
+ITEM_CFG_CD_GROUP_ID_FIELD.number = 27
+ITEM_CFG_CD_GROUP_ID_FIELD.index = 26
+ITEM_CFG_CD_GROUP_ID_FIELD.label = 2
+ITEM_CFG_CD_GROUP_ID_FIELD.has_default_value = false
+ITEM_CFG_CD_GROUP_ID_FIELD.default_value = 0
+ITEM_CFG_CD_GROUP_ID_FIELD.type = 5
+ITEM_CFG_CD_GROUP_ID_FIELD.cpp_type = 1
+
+ITEM_CFG_CD_TIME_FIELD.name = "cd_time"
+ITEM_CFG_CD_TIME_FIELD.full_name = ".ftcfg.item_cfg.cd_time"
+ITEM_CFG_CD_TIME_FIELD.number = 28
+ITEM_CFG_CD_TIME_FIELD.index = 27
+ITEM_CFG_CD_TIME_FIELD.label = 2
+ITEM_CFG_CD_TIME_FIELD.has_default_value = false
+ITEM_CFG_CD_TIME_FIELD.default_value = 0
+ITEM_CFG_CD_TIME_FIELD.type = 5
+ITEM_CFG_CD_TIME_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_IN_STORAGE_FIELD.name = "could_in_storage"
+ITEM_CFG_COULD_IN_STORAGE_FIELD.full_name = ".ftcfg.item_cfg.could_in_storage"
+ITEM_CFG_COULD_IN_STORAGE_FIELD.number = 29
+ITEM_CFG_COULD_IN_STORAGE_FIELD.index = 28
+ITEM_CFG_COULD_IN_STORAGE_FIELD.label = 2
+ITEM_CFG_COULD_IN_STORAGE_FIELD.has_default_value = false
+ITEM_CFG_COULD_IN_STORAGE_FIELD.default_value = 0
+ITEM_CFG_COULD_IN_STORAGE_FIELD.type = 5
+ITEM_CFG_COULD_IN_STORAGE_FIELD.cpp_type = 1
+
+ITEM_CFG_COULD_OBTAIN_FIELD.name = "could_obtain"
+ITEM_CFG_COULD_OBTAIN_FIELD.full_name = ".ftcfg.item_cfg.could_obtain"
+ITEM_CFG_COULD_OBTAIN_FIELD.number = 30
+ITEM_CFG_COULD_OBTAIN_FIELD.index = 29
+ITEM_CFG_COULD_OBTAIN_FIELD.label = 2
+ITEM_CFG_COULD_OBTAIN_FIELD.has_default_value = false
+ITEM_CFG_COULD_OBTAIN_FIELD.default_value = 0
+ITEM_CFG_COULD_OBTAIN_FIELD.type = 5
+ITEM_CFG_COULD_OBTAIN_FIELD.cpp_type = 1
+
+ITEM_CFG_OBTAIN_LIST_FIELD.name = "obtain_list"
+ITEM_CFG_OBTAIN_LIST_FIELD.full_name = ".ftcfg.item_cfg.obtain_list"
+ITEM_CFG_OBTAIN_LIST_FIELD.number = 31
+ITEM_CFG_OBTAIN_LIST_FIELD.index = 30
+ITEM_CFG_OBTAIN_LIST_FIELD.label = 2
+ITEM_CFG_OBTAIN_LIST_FIELD.has_default_value = false
+ITEM_CFG_OBTAIN_LIST_FIELD.default_value = 0
+ITEM_CFG_OBTAIN_LIST_FIELD.type = 5
+ITEM_CFG_OBTAIN_LIST_FIELD.cpp_type = 1
+
+ITEM_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
+ITEM_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.item_cfg.prop_effect1"
+ITEM_CFG_PROP_EFFECT1_FIELD.number = 32
+ITEM_CFG_PROP_EFFECT1_FIELD.index = 31
+ITEM_CFG_PROP_EFFECT1_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT1_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT1_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT1_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
+ITEM_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.item_cfg.prop_effect2"
+ITEM_CFG_PROP_EFFECT2_FIELD.number = 33
+ITEM_CFG_PROP_EFFECT2_FIELD.index = 32
+ITEM_CFG_PROP_EFFECT2_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT2_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT2_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT2_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
+ITEM_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.item_cfg.prop_effect3"
+ITEM_CFG_PROP_EFFECT3_FIELD.number = 34
+ITEM_CFG_PROP_EFFECT3_FIELD.index = 33
+ITEM_CFG_PROP_EFFECT3_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT3_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT3_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT3_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT4_FIELD.name = "prop_effect4"
+ITEM_CFG_PROP_EFFECT4_FIELD.full_name = ".ftcfg.item_cfg.prop_effect4"
+ITEM_CFG_PROP_EFFECT4_FIELD.number = 35
+ITEM_CFG_PROP_EFFECT4_FIELD.index = 34
+ITEM_CFG_PROP_EFFECT4_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT4_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT4_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT4_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT4_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT5_FIELD.name = "prop_effect5"
+ITEM_CFG_PROP_EFFECT5_FIELD.full_name = ".ftcfg.item_cfg.prop_effect5"
+ITEM_CFG_PROP_EFFECT5_FIELD.number = 36
+ITEM_CFG_PROP_EFFECT5_FIELD.index = 35
+ITEM_CFG_PROP_EFFECT5_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT5_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT5_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT5_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT5_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT6_FIELD.name = "prop_effect6"
+ITEM_CFG_PROP_EFFECT6_FIELD.full_name = ".ftcfg.item_cfg.prop_effect6"
+ITEM_CFG_PROP_EFFECT6_FIELD.number = 37
+ITEM_CFG_PROP_EFFECT6_FIELD.index = 36
+ITEM_CFG_PROP_EFFECT6_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT6_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT6_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT6_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT6_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT7_FIELD.name = "prop_effect7"
+ITEM_CFG_PROP_EFFECT7_FIELD.full_name = ".ftcfg.item_cfg.prop_effect7"
+ITEM_CFG_PROP_EFFECT7_FIELD.number = 38
+ITEM_CFG_PROP_EFFECT7_FIELD.index = 37
+ITEM_CFG_PROP_EFFECT7_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT7_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT7_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT7_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT7_FIELD.cpp_type = 9
+
+ITEM_CFG_PROP_EFFECT8_FIELD.name = "prop_effect8"
+ITEM_CFG_PROP_EFFECT8_FIELD.full_name = ".ftcfg.item_cfg.prop_effect8"
+ITEM_CFG_PROP_EFFECT8_FIELD.number = 39
+ITEM_CFG_PROP_EFFECT8_FIELD.index = 38
+ITEM_CFG_PROP_EFFECT8_FIELD.label = 2
+ITEM_CFG_PROP_EFFECT8_FIELD.has_default_value = false
+ITEM_CFG_PROP_EFFECT8_FIELD.default_value = ""
+ITEM_CFG_PROP_EFFECT8_FIELD.type = 9
+ITEM_CFG_PROP_EFFECT8_FIELD.cpp_type = 9
+
+ITEM_CFG_PRICE_GOLD_FIELD.name = "price_gold"
+ITEM_CFG_PRICE_GOLD_FIELD.full_name = ".ftcfg.item_cfg.price_gold"
+ITEM_CFG_PRICE_GOLD_FIELD.number = 40
+ITEM_CFG_PRICE_GOLD_FIELD.index = 39
+ITEM_CFG_PRICE_GOLD_FIELD.label = 2
+ITEM_CFG_PRICE_GOLD_FIELD.has_default_value = false
+ITEM_CFG_PRICE_GOLD_FIELD.default_value = 0
+ITEM_CFG_PRICE_GOLD_FIELD.type = 13
+ITEM_CFG_PRICE_GOLD_FIELD.cpp_type = 3
+
+ITEM_CFG_LUCK_VALUE_FIELD.name = "luck_value"
+ITEM_CFG_LUCK_VALUE_FIELD.full_name = ".ftcfg.item_cfg.luck_value"
+ITEM_CFG_LUCK_VALUE_FIELD.number = 41
+ITEM_CFG_LUCK_VALUE_FIELD.index = 40
+ITEM_CFG_LUCK_VALUE_FIELD.label = 2
+ITEM_CFG_LUCK_VALUE_FIELD.has_default_value = false
+ITEM_CFG_LUCK_VALUE_FIELD.default_value = 0
+ITEM_CFG_LUCK_VALUE_FIELD.type = 5
+ITEM_CFG_LUCK_VALUE_FIELD.cpp_type = 1
+
+ITEM_CFG_POP_VALUE_FIELD.name = "pop_value"
+ITEM_CFG_POP_VALUE_FIELD.full_name = ".ftcfg.item_cfg.pop_value"
+ITEM_CFG_POP_VALUE_FIELD.number = 42
+ITEM_CFG_POP_VALUE_FIELD.index = 41
+ITEM_CFG_POP_VALUE_FIELD.label = 2
+ITEM_CFG_POP_VALUE_FIELD.has_default_value = false
+ITEM_CFG_POP_VALUE_FIELD.default_value = 0
+ITEM_CFG_POP_VALUE_FIELD.type = 13
+ITEM_CFG_POP_VALUE_FIELD.cpp_type = 3
+
+ITEM_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+ITEM_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.item_cfg.combat_point"
+ITEM_CFG_COMBAT_POINT_FIELD.number = 43
+ITEM_CFG_COMBAT_POINT_FIELD.index = 42
+ITEM_CFG_COMBAT_POINT_FIELD.label = 2
+ITEM_CFG_COMBAT_POINT_FIELD.has_default_value = false
+ITEM_CFG_COMBAT_POINT_FIELD.default_value = 0
+ITEM_CFG_COMBAT_POINT_FIELD.type = 13
+ITEM_CFG_COMBAT_POINT_FIELD.cpp_type = 3
+
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.name = "effect_timelimited"
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.full_name = ".ftcfg.item_cfg.effect_timelimited"
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.number = 44
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.index = 43
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.label = 2
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.has_default_value = false
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.default_value = 0
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.type = 5
+ITEM_CFG_EFFECT_TIMELIMITED_FIELD.cpp_type = 1
+
+ITEM_CFG_DROP_ID_FIELD.name = "drop_id"
+ITEM_CFG_DROP_ID_FIELD.full_name = ".ftcfg.item_cfg.drop_id"
+ITEM_CFG_DROP_ID_FIELD.number = 45
+ITEM_CFG_DROP_ID_FIELD.index = 44
+ITEM_CFG_DROP_ID_FIELD.label = 2
+ITEM_CFG_DROP_ID_FIELD.has_default_value = false
+ITEM_CFG_DROP_ID_FIELD.default_value = 0
+ITEM_CFG_DROP_ID_FIELD.type = 13
+ITEM_CFG_DROP_ID_FIELD.cpp_type = 3
+
+ITEM_CFG_COST_TYPE_FIELD.name = "cost_type"
+ITEM_CFG_COST_TYPE_FIELD.full_name = ".ftcfg.item_cfg.cost_type"
+ITEM_CFG_COST_TYPE_FIELD.number = 46
+ITEM_CFG_COST_TYPE_FIELD.index = 45
+ITEM_CFG_COST_TYPE_FIELD.label = 3
+ITEM_CFG_COST_TYPE_FIELD.has_default_value = false
+ITEM_CFG_COST_TYPE_FIELD.default_value = {}
+ITEM_CFG_COST_TYPE_FIELD.type = 13
+ITEM_CFG_COST_TYPE_FIELD.cpp_type = 3
+
+ITEM_CFG_COST_COUNT_FIELD.name = "cost_count"
+ITEM_CFG_COST_COUNT_FIELD.full_name = ".ftcfg.item_cfg.cost_count"
+ITEM_CFG_COST_COUNT_FIELD.number = 47
+ITEM_CFG_COST_COUNT_FIELD.index = 46
+ITEM_CFG_COST_COUNT_FIELD.label = 3
+ITEM_CFG_COST_COUNT_FIELD.has_default_value = false
+ITEM_CFG_COST_COUNT_FIELD.default_value = {}
+ITEM_CFG_COST_COUNT_FIELD.type = 13
+ITEM_CFG_COST_COUNT_FIELD.cpp_type = 3
+
+ITEM_CFG_HOLE_NUM_FIELD.name = "hole_num"
+ITEM_CFG_HOLE_NUM_FIELD.full_name = ".ftcfg.item_cfg.hole_num"
+ITEM_CFG_HOLE_NUM_FIELD.number = 48
+ITEM_CFG_HOLE_NUM_FIELD.index = 47
+ITEM_CFG_HOLE_NUM_FIELD.label = 2
+ITEM_CFG_HOLE_NUM_FIELD.has_default_value = false
+ITEM_CFG_HOLE_NUM_FIELD.default_value = 0
+ITEM_CFG_HOLE_NUM_FIELD.type = 5
+ITEM_CFG_HOLE_NUM_FIELD.cpp_type = 1
+
+ITEM_CFG_INLAY_TYPE_FIELD.name = "inlay_type"
+ITEM_CFG_INLAY_TYPE_FIELD.full_name = ".ftcfg.item_cfg.inlay_type"
+ITEM_CFG_INLAY_TYPE_FIELD.number = 49
+ITEM_CFG_INLAY_TYPE_FIELD.index = 48
+ITEM_CFG_INLAY_TYPE_FIELD.label = 3
+ITEM_CFG_INLAY_TYPE_FIELD.has_default_value = false
+ITEM_CFG_INLAY_TYPE_FIELD.default_value = {}
+ITEM_CFG_INLAY_TYPE_FIELD.type = 5
+ITEM_CFG_INLAY_TYPE_FIELD.cpp_type = 1
+
+ITEM_CFG_INLAY_LEVEL_FIELD.name = "inlay_level"
+ITEM_CFG_INLAY_LEVEL_FIELD.full_name = ".ftcfg.item_cfg.inlay_level"
+ITEM_CFG_INLAY_LEVEL_FIELD.number = 50
+ITEM_CFG_INLAY_LEVEL_FIELD.index = 49
+ITEM_CFG_INLAY_LEVEL_FIELD.label = 2
+ITEM_CFG_INLAY_LEVEL_FIELD.has_default_value = false
+ITEM_CFG_INLAY_LEVEL_FIELD.default_value = 0
+ITEM_CFG_INLAY_LEVEL_FIELD.type = 5
+ITEM_CFG_INLAY_LEVEL_FIELD.cpp_type = 1
+
+ITEM_CFG.name = "item_cfg"
+ITEM_CFG.full_name = ".ftcfg.item_cfg"
+ITEM_CFG.nested_types = {}
+ITEM_CFG.enum_types = {}
+ITEM_CFG.fields = {ITEM_CFG_ID_FIELD, ITEM_CFG_ITEM_NAME_FIELD, ITEM_CFG_FORMULA_ID_FIELD, ITEM_CFG_ITEM_DESC_FIELD, ITEM_CFG_STACK_MAX_FIELD, ITEM_CFG_NEED_LEVEL_FIELD, ITEM_CFG_NEED_PROF_FIELD, ITEM_CFG_ITEM_TYPE_FIELD, ITEM_CFG_ITEM_SUB_TYPE_FIELD, ITEM_CFG_ITEM_PART_FIELD, ITEM_CFG_DISPLAY_TYPE_FIELD, ITEM_CFG_ITEM_COLOR_FIELD, ITEM_CFG_ITEM_ICON_FIELD, ITEM_CFG_ITEM_MARK_FIELD, ITEM_CFG_OWN_MAX_FIELD, ITEM_CFG_COULD_TRADE_FIELD, ITEM_CFG_TRADE_COOLDOWN_FIELD, ITEM_CFG_COULD_SELL_FIELD, ITEM_CFG_SELL_COST_TYPE_FIELD, ITEM_CFG_SELL_COST_NUM_FIELD, ITEM_CFG_COULD_USE_FIELD, ITEM_CFG_COULD_WINDOWUSE_FIELD, ITEM_CFG_WINDOWUSE_MAX_FIELD, ITEM_CFG_COULD_SHOW_USE_FIELD, ITEM_CFG_USE_DELAY_FIELD, ITEM_CFG_COULD_BULK_USE_FIELD, ITEM_CFG_CD_GROUP_ID_FIELD, ITEM_CFG_CD_TIME_FIELD, ITEM_CFG_COULD_IN_STORAGE_FIELD, ITEM_CFG_COULD_OBTAIN_FIELD, ITEM_CFG_OBTAIN_LIST_FIELD, ITEM_CFG_PROP_EFFECT1_FIELD, ITEM_CFG_PROP_EFFECT2_FIELD, ITEM_CFG_PROP_EFFECT3_FIELD, ITEM_CFG_PROP_EFFECT4_FIELD, ITEM_CFG_PROP_EFFECT5_FIELD, ITEM_CFG_PROP_EFFECT6_FIELD, ITEM_CFG_PROP_EFFECT7_FIELD, ITEM_CFG_PROP_EFFECT8_FIELD, ITEM_CFG_PRICE_GOLD_FIELD, ITEM_CFG_LUCK_VALUE_FIELD, ITEM_CFG_POP_VALUE_FIELD, ITEM_CFG_COMBAT_POINT_FIELD, ITEM_CFG_EFFECT_TIMELIMITED_FIELD, ITEM_CFG_DROP_ID_FIELD, ITEM_CFG_COST_TYPE_FIELD, ITEM_CFG_COST_COUNT_FIELD, ITEM_CFG_HOLE_NUM_FIELD, ITEM_CFG_INLAY_TYPE_FIELD, ITEM_CFG_INLAY_LEVEL_FIELD}
+ITEM_CFG.is_extendable = false
+ITEM_CFG.extensions = {}
+ITEM_CFGS_ITEMS_FIELD.name = "items"
+ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.item_cfgs.items"
+ITEM_CFGS_ITEMS_FIELD.number = 1
+ITEM_CFGS_ITEMS_FIELD.index = 0
+ITEM_CFGS_ITEMS_FIELD.label = 3
+ITEM_CFGS_ITEMS_FIELD.has_default_value = false
+ITEM_CFGS_ITEMS_FIELD.default_value = {}
+ITEM_CFGS_ITEMS_FIELD.message_type = ITEM_CFG
+ITEM_CFGS_ITEMS_FIELD.type = 11
+ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ITEM_CFGS.name = "item_cfgs"
+ITEM_CFGS.full_name = ".ftcfg.item_cfgs"
+ITEM_CFGS.nested_types = {}
+ITEM_CFGS.enum_types = {}
+ITEM_CFGS.fields = {ITEM_CFGS_ITEMS_FIELD}
+ITEM_CFGS.is_extendable = false
+ITEM_CFGS.extensions = {}
+FIGHTCRIME_CFG_ID_FIELD.name = "id"
+FIGHTCRIME_CFG_ID_FIELD.full_name = ".ftcfg.fightcrime_cfg.id"
+FIGHTCRIME_CFG_ID_FIELD.number = 1
+FIGHTCRIME_CFG_ID_FIELD.index = 0
+FIGHTCRIME_CFG_ID_FIELD.label = 2
+FIGHTCRIME_CFG_ID_FIELD.has_default_value = false
+FIGHTCRIME_CFG_ID_FIELD.default_value = 0
+FIGHTCRIME_CFG_ID_FIELD.type = 5
+FIGHTCRIME_CFG_ID_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_VALUE_FIELD.name = "value"
+FIGHTCRIME_CFG_VALUE_FIELD.full_name = ".ftcfg.fightcrime_cfg.value"
+FIGHTCRIME_CFG_VALUE_FIELD.number = 2
+FIGHTCRIME_CFG_VALUE_FIELD.index = 1
+FIGHTCRIME_CFG_VALUE_FIELD.label = 2
+FIGHTCRIME_CFG_VALUE_FIELD.has_default_value = false
+FIGHTCRIME_CFG_VALUE_FIELD.default_value = 0
+FIGHTCRIME_CFG_VALUE_FIELD.type = 5
+FIGHTCRIME_CFG_VALUE_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_COLOR_FIELD.name = "color"
+FIGHTCRIME_CFG_COLOR_FIELD.full_name = ".ftcfg.fightcrime_cfg.color"
+FIGHTCRIME_CFG_COLOR_FIELD.number = 3
+FIGHTCRIME_CFG_COLOR_FIELD.index = 2
+FIGHTCRIME_CFG_COLOR_FIELD.label = 2
+FIGHTCRIME_CFG_COLOR_FIELD.has_default_value = false
+FIGHTCRIME_CFG_COLOR_FIELD.default_value = 0
+FIGHTCRIME_CFG_COLOR_FIELD.type = 5
+FIGHTCRIME_CFG_COLOR_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_IMGBG_FIELD.name = "imgBg"
+FIGHTCRIME_CFG_IMGBG_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgBg"
+FIGHTCRIME_CFG_IMGBG_FIELD.number = 4
+FIGHTCRIME_CFG_IMGBG_FIELD.index = 3
+FIGHTCRIME_CFG_IMGBG_FIELD.label = 2
+FIGHTCRIME_CFG_IMGBG_FIELD.has_default_value = false
+FIGHTCRIME_CFG_IMGBG_FIELD.default_value = 0
+FIGHTCRIME_CFG_IMGBG_FIELD.type = 5
+FIGHTCRIME_CFG_IMGBG_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_IMGICON_FIELD.name = "imgIcon"
+FIGHTCRIME_CFG_IMGICON_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgIcon"
+FIGHTCRIME_CFG_IMGICON_FIELD.number = 5
+FIGHTCRIME_CFG_IMGICON_FIELD.index = 4
+FIGHTCRIME_CFG_IMGICON_FIELD.label = 2
+FIGHTCRIME_CFG_IMGICON_FIELD.has_default_value = false
+FIGHTCRIME_CFG_IMGICON_FIELD.default_value = 0
+FIGHTCRIME_CFG_IMGICON_FIELD.type = 5
+FIGHTCRIME_CFG_IMGICON_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_IMGFRAME_FIELD.name = "imgFrame"
+FIGHTCRIME_CFG_IMGFRAME_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgFrame"
+FIGHTCRIME_CFG_IMGFRAME_FIELD.number = 6
+FIGHTCRIME_CFG_IMGFRAME_FIELD.index = 5
+FIGHTCRIME_CFG_IMGFRAME_FIELD.label = 2
+FIGHTCRIME_CFG_IMGFRAME_FIELD.has_default_value = false
+FIGHTCRIME_CFG_IMGFRAME_FIELD.default_value = 0
+FIGHTCRIME_CFG_IMGFRAME_FIELD.type = 5
+FIGHTCRIME_CFG_IMGFRAME_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.name = "imgNumber"
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgNumber"
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.number = 7
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.index = 6
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.label = 2
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.has_default_value = false
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.default_value = 0
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.type = 5
+FIGHTCRIME_CFG_IMGNUMBER_FIELD.cpp_type = 1
+
+FIGHTCRIME_CFG.name = "fightcrime_cfg"
+FIGHTCRIME_CFG.full_name = ".ftcfg.fightcrime_cfg"
+FIGHTCRIME_CFG.nested_types = {}
+FIGHTCRIME_CFG.enum_types = {}
+FIGHTCRIME_CFG.fields = {FIGHTCRIME_CFG_ID_FIELD, FIGHTCRIME_CFG_VALUE_FIELD, FIGHTCRIME_CFG_COLOR_FIELD, FIGHTCRIME_CFG_IMGBG_FIELD, FIGHTCRIME_CFG_IMGICON_FIELD, FIGHTCRIME_CFG_IMGFRAME_FIELD, FIGHTCRIME_CFG_IMGNUMBER_FIELD}
+FIGHTCRIME_CFG.is_extendable = false
+FIGHTCRIME_CFG.extensions = {}
+FIGHTCRIME_CFGS_ITEMS_FIELD.name = "items"
+FIGHTCRIME_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcrime_cfgs.items"
+FIGHTCRIME_CFGS_ITEMS_FIELD.number = 1
+FIGHTCRIME_CFGS_ITEMS_FIELD.index = 0
+FIGHTCRIME_CFGS_ITEMS_FIELD.label = 3
+FIGHTCRIME_CFGS_ITEMS_FIELD.has_default_value = false
+FIGHTCRIME_CFGS_ITEMS_FIELD.default_value = {}
+FIGHTCRIME_CFGS_ITEMS_FIELD.message_type = FIGHTCRIME_CFG
+FIGHTCRIME_CFGS_ITEMS_FIELD.type = 11
+FIGHTCRIME_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FIGHTCRIME_CFGS.name = "fightcrime_cfgs"
+FIGHTCRIME_CFGS.full_name = ".ftcfg.fightcrime_cfgs"
+FIGHTCRIME_CFGS.nested_types = {}
+FIGHTCRIME_CFGS.enum_types = {}
+FIGHTCRIME_CFGS.fields = {FIGHTCRIME_CFGS_ITEMS_FIELD}
+FIGHTCRIME_CFGS.is_extendable = false
+FIGHTCRIME_CFGS.extensions = {}
+FIGHTCIRME_REWARD_CFG_ID_FIELD.name = "id"
+FIGHTCIRME_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.fightcirme_reward_cfg.id"
+FIGHTCIRME_REWARD_CFG_ID_FIELD.number = 1
+FIGHTCIRME_REWARD_CFG_ID_FIELD.index = 0
+FIGHTCIRME_REWARD_CFG_ID_FIELD.label = 2
+FIGHTCIRME_REWARD_CFG_ID_FIELD.has_default_value = false
+FIGHTCIRME_REWARD_CFG_ID_FIELD.default_value = 0
+FIGHTCIRME_REWARD_CFG_ID_FIELD.type = 5
+FIGHTCIRME_REWARD_CFG_ID_FIELD.cpp_type = 1
+
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.name = "items"
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.full_name = ".ftcfg.fightcirme_reward_cfg.items"
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.number = 2
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.index = 1
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.label = 3
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.has_default_value = false
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.default_value = {}
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.type = 13
+FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.cpp_type = 3
+
+FIGHTCIRME_REWARD_CFG.name = "fightcirme_reward_cfg"
+FIGHTCIRME_REWARD_CFG.full_name = ".ftcfg.fightcirme_reward_cfg"
+FIGHTCIRME_REWARD_CFG.nested_types = {}
+FIGHTCIRME_REWARD_CFG.enum_types = {}
+FIGHTCIRME_REWARD_CFG.fields = {FIGHTCIRME_REWARD_CFG_ID_FIELD, FIGHTCIRME_REWARD_CFG_ITEMS_FIELD}
+FIGHTCIRME_REWARD_CFG.is_extendable = false
+FIGHTCIRME_REWARD_CFG.extensions = {}
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.name = "items"
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcirme_reward_cfgs.items"
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.number = 1
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.index = 0
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.label = 3
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.message_type = FIGHTCIRME_REWARD_CFG
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.type = 11
+FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FIGHTCIRME_REWARD_CFGS.name = "fightcirme_reward_cfgs"
+FIGHTCIRME_REWARD_CFGS.full_name = ".ftcfg.fightcirme_reward_cfgs"
+FIGHTCIRME_REWARD_CFGS.nested_types = {}
+FIGHTCIRME_REWARD_CFGS.enum_types = {}
+FIGHTCIRME_REWARD_CFGS.fields = {FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD}
+FIGHTCIRME_REWARD_CFGS.is_extendable = false
+FIGHTCIRME_REWARD_CFGS.extensions = {}
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.name = "id"
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.id"
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.number = 1
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.index = 0
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.label = 2
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.has_default_value = false
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.default_value = 0
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.type = 5
+FIGHTCRIME_MONSTER_CFG_ID_FIELD.cpp_type = 1
+
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.name = "monsters"
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.monsters"
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.number = 2
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.index = 1
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.label = 3
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.has_default_value = false
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.default_value = {}
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.type = 13
+FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.cpp_type = 3
+
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.name = "icons"
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.icons"
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.number = 3
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.index = 2
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.label = 3
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.has_default_value = false
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.default_value = {}
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.type = 13
+FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.cpp_type = 3
+
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.name = "time"
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.time"
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.number = 4
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.index = 3
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.label = 2
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.has_default_value = false
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.default_value = 0.0
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.type = 2
+FIGHTCRIME_MONSTER_CFG_TIME_FIELD.cpp_type = 6
+
+FIGHTCRIME_MONSTER_CFG.name = "fightcrime_monster_cfg"
+FIGHTCRIME_MONSTER_CFG.full_name = ".ftcfg.fightcrime_monster_cfg"
+FIGHTCRIME_MONSTER_CFG.nested_types = {}
+FIGHTCRIME_MONSTER_CFG.enum_types = {}
+FIGHTCRIME_MONSTER_CFG.fields = {FIGHTCRIME_MONSTER_CFG_ID_FIELD, FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD, FIGHTCRIME_MONSTER_CFG_ICONS_FIELD, FIGHTCRIME_MONSTER_CFG_TIME_FIELD}
+FIGHTCRIME_MONSTER_CFG.is_extendable = false
+FIGHTCRIME_MONSTER_CFG.extensions = {}
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.name = "items"
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfgs.items"
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.number = 1
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.index = 0
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.label = 3
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.has_default_value = false
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.default_value = {}
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.message_type = FIGHTCRIME_MONSTER_CFG
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.type = 11
+FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FIGHTCRIME_MONSTER_CFGS.name = "fightcrime_monster_cfgs"
+FIGHTCRIME_MONSTER_CFGS.full_name = ".ftcfg.fightcrime_monster_cfgs"
+FIGHTCRIME_MONSTER_CFGS.nested_types = {}
+FIGHTCRIME_MONSTER_CFGS.enum_types = {}
+FIGHTCRIME_MONSTER_CFGS.fields = {FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD}
+FIGHTCRIME_MONSTER_CFGS.is_extendable = false
+FIGHTCRIME_MONSTER_CFGS.extensions = {}
+EQUIP_CFG_ID_FIELD.name = "id"
+EQUIP_CFG_ID_FIELD.full_name = ".ftcfg.equip_cfg.id"
+EQUIP_CFG_ID_FIELD.number = 1
+EQUIP_CFG_ID_FIELD.index = 0
+EQUIP_CFG_ID_FIELD.label = 2
+EQUIP_CFG_ID_FIELD.has_default_value = false
+EQUIP_CFG_ID_FIELD.default_value = 0
+EQUIP_CFG_ID_FIELD.type = 13
+EQUIP_CFG_ID_FIELD.cpp_type = 3
+
+EQUIP_CFG_UPGRADE_ID_FIELD.name = "upgrade_id"
+EQUIP_CFG_UPGRADE_ID_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_id"
+EQUIP_CFG_UPGRADE_ID_FIELD.number = 2
+EQUIP_CFG_UPGRADE_ID_FIELD.index = 1
+EQUIP_CFG_UPGRADE_ID_FIELD.label = 2
+EQUIP_CFG_UPGRADE_ID_FIELD.has_default_value = false
+EQUIP_CFG_UPGRADE_ID_FIELD.default_value = 0
+EQUIP_CFG_UPGRADE_ID_FIELD.type = 13
+EQUIP_CFG_UPGRADE_ID_FIELD.cpp_type = 3
+
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.name = "upgrade_material"
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_material"
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.number = 3
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.index = 2
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.label = 3
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.has_default_value = false
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.default_value = {}
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.type = 13
+EQUIP_CFG_UPGRADE_MATERIAL_FIELD.cpp_type = 3
+
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.name = "upgrade_req_level"
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_req_level"
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.number = 4
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.index = 3
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.label = 2
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.has_default_value = false
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.default_value = 0
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.type = 5
+EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.cpp_type = 1
+
+EQUIP_CFG_REFINE_MATERIAL_FIELD.name = "refine_material"
+EQUIP_CFG_REFINE_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.refine_material"
+EQUIP_CFG_REFINE_MATERIAL_FIELD.number = 5
+EQUIP_CFG_REFINE_MATERIAL_FIELD.index = 4
+EQUIP_CFG_REFINE_MATERIAL_FIELD.label = 2
+EQUIP_CFG_REFINE_MATERIAL_FIELD.has_default_value = false
+EQUIP_CFG_REFINE_MATERIAL_FIELD.default_value = 0
+EQUIP_CFG_REFINE_MATERIAL_FIELD.type = 13
+EQUIP_CFG_REFINE_MATERIAL_FIELD.cpp_type = 3
+
+EQUIP_CFG_REFINE_COUNT_FIELD.name = "refine_count"
+EQUIP_CFG_REFINE_COUNT_FIELD.full_name = ".ftcfg.equip_cfg.refine_count"
+EQUIP_CFG_REFINE_COUNT_FIELD.number = 6
+EQUIP_CFG_REFINE_COUNT_FIELD.index = 5
+EQUIP_CFG_REFINE_COUNT_FIELD.label = 2
+EQUIP_CFG_REFINE_COUNT_FIELD.has_default_value = false
+EQUIP_CFG_REFINE_COUNT_FIELD.default_value = 0
+EQUIP_CFG_REFINE_COUNT_FIELD.type = 5
+EQUIP_CFG_REFINE_COUNT_FIELD.cpp_type = 1
+
+EQUIP_CFG_REFINE_COST_FIELD.name = "refine_cost"
+EQUIP_CFG_REFINE_COST_FIELD.full_name = ".ftcfg.equip_cfg.refine_cost"
+EQUIP_CFG_REFINE_COST_FIELD.number = 7
+EQUIP_CFG_REFINE_COST_FIELD.index = 6
+EQUIP_CFG_REFINE_COST_FIELD.label = 2
+EQUIP_CFG_REFINE_COST_FIELD.has_default_value = false
+EQUIP_CFG_REFINE_COST_FIELD.default_value = 0
+EQUIP_CFG_REFINE_COST_FIELD.type = 5
+EQUIP_CFG_REFINE_COST_FIELD.cpp_type = 1
+
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.name = "active_strength_material"
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.active_strength_material"
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.number = 8
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.index = 7
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.label = 2
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.has_default_value = false
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.default_value = 0
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.type = 13
+EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.cpp_type = 3
+
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.name = "active_strength_count"
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.full_name = ".ftcfg.equip_cfg.active_strength_count"
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.number = 9
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.index = 8
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.label = 2
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.has_default_value = false
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.default_value = 0
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.type = 5
+EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.cpp_type = 1
+
+EQUIP_CFG_ACTIVE_COST_FIELD.name = "active_cost"
+EQUIP_CFG_ACTIVE_COST_FIELD.full_name = ".ftcfg.equip_cfg.active_cost"
+EQUIP_CFG_ACTIVE_COST_FIELD.number = 10
+EQUIP_CFG_ACTIVE_COST_FIELD.index = 9
+EQUIP_CFG_ACTIVE_COST_FIELD.label = 2
+EQUIP_CFG_ACTIVE_COST_FIELD.has_default_value = false
+EQUIP_CFG_ACTIVE_COST_FIELD.default_value = 0
+EQUIP_CFG_ACTIVE_COST_FIELD.type = 5
+EQUIP_CFG_ACTIVE_COST_FIELD.cpp_type = 1
+
+EQUIP_CFG.name = "equip_cfg"
+EQUIP_CFG.full_name = ".ftcfg.equip_cfg"
+EQUIP_CFG.nested_types = {}
+EQUIP_CFG.enum_types = {}
+EQUIP_CFG.fields = {EQUIP_CFG_ID_FIELD, EQUIP_CFG_UPGRADE_ID_FIELD, EQUIP_CFG_UPGRADE_MATERIAL_FIELD, EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD, EQUIP_CFG_REFINE_MATERIAL_FIELD, EQUIP_CFG_REFINE_COUNT_FIELD, EQUIP_CFG_REFINE_COST_FIELD, EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD, EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD, EQUIP_CFG_ACTIVE_COST_FIELD}
+EQUIP_CFG.is_extendable = false
+EQUIP_CFG.extensions = {}
+EQUIP_CFGS_ITEMS_FIELD.name = "items"
+EQUIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_cfgs.items"
+EQUIP_CFGS_ITEMS_FIELD.number = 1
+EQUIP_CFGS_ITEMS_FIELD.index = 0
+EQUIP_CFGS_ITEMS_FIELD.label = 3
+EQUIP_CFGS_ITEMS_FIELD.has_default_value = false
+EQUIP_CFGS_ITEMS_FIELD.default_value = {}
+EQUIP_CFGS_ITEMS_FIELD.message_type = EQUIP_CFG
+EQUIP_CFGS_ITEMS_FIELD.type = 11
+EQUIP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EQUIP_CFGS.name = "equip_cfgs"
+EQUIP_CFGS.full_name = ".ftcfg.equip_cfgs"
+EQUIP_CFGS.nested_types = {}
+EQUIP_CFGS.enum_types = {}
+EQUIP_CFGS.fields = {EQUIP_CFGS_ITEMS_FIELD}
+EQUIP_CFGS.is_extendable = false
+EQUIP_CFGS.extensions = {}
+EQUIP_SET_CFG_ID_FIELD.name = "id"
+EQUIP_SET_CFG_ID_FIELD.full_name = ".ftcfg.equip_set_cfg.id"
+EQUIP_SET_CFG_ID_FIELD.number = 1
+EQUIP_SET_CFG_ID_FIELD.index = 0
+EQUIP_SET_CFG_ID_FIELD.label = 2
+EQUIP_SET_CFG_ID_FIELD.has_default_value = false
+EQUIP_SET_CFG_ID_FIELD.default_value = 0
+EQUIP_SET_CFG_ID_FIELD.type = 13
+EQUIP_SET_CFG_ID_FIELD.cpp_type = 3
+
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.name = "equip_ids"
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.full_name = ".ftcfg.equip_set_cfg.equip_ids"
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.number = 2
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.index = 1
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.label = 3
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.has_default_value = false
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.default_value = {}
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.type = 13
+EQUIP_SET_CFG_EQUIP_IDS_FIELD.cpp_type = 3
+
+EQUIP_SET_CFG_SET_NAME_FIELD.name = "set_name"
+EQUIP_SET_CFG_SET_NAME_FIELD.full_name = ".ftcfg.equip_set_cfg.set_name"
+EQUIP_SET_CFG_SET_NAME_FIELD.number = 3
+EQUIP_SET_CFG_SET_NAME_FIELD.index = 2
+EQUIP_SET_CFG_SET_NAME_FIELD.label = 2
+EQUIP_SET_CFG_SET_NAME_FIELD.has_default_value = false
+EQUIP_SET_CFG_SET_NAME_FIELD.default_value = ""
+EQUIP_SET_CFG_SET_NAME_FIELD.type = 9
+EQUIP_SET_CFG_SET_NAME_FIELD.cpp_type = 9
+
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.name = "equip_level"
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.full_name = ".ftcfg.equip_set_cfg.equip_level"
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.number = 4
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.index = 3
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.label = 2
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.has_default_value = false
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.default_value = 0
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.type = 5
+EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.cpp_type = 1
+
+EQUIP_SET_CFG.name = "equip_set_cfg"
+EQUIP_SET_CFG.full_name = ".ftcfg.equip_set_cfg"
+EQUIP_SET_CFG.nested_types = {}
+EQUIP_SET_CFG.enum_types = {}
+EQUIP_SET_CFG.fields = {EQUIP_SET_CFG_ID_FIELD, EQUIP_SET_CFG_EQUIP_IDS_FIELD, EQUIP_SET_CFG_SET_NAME_FIELD, EQUIP_SET_CFG_EQUIP_LEVEL_FIELD}
+EQUIP_SET_CFG.is_extendable = false
+EQUIP_SET_CFG.extensions = {}
+EQUIP_SET_CFGS_ITEMS_FIELD.name = "items"
+EQUIP_SET_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_set_cfgs.items"
+EQUIP_SET_CFGS_ITEMS_FIELD.number = 1
+EQUIP_SET_CFGS_ITEMS_FIELD.index = 0
+EQUIP_SET_CFGS_ITEMS_FIELD.label = 3
+EQUIP_SET_CFGS_ITEMS_FIELD.has_default_value = false
+EQUIP_SET_CFGS_ITEMS_FIELD.default_value = {}
+EQUIP_SET_CFGS_ITEMS_FIELD.message_type = EQUIP_SET_CFG
+EQUIP_SET_CFGS_ITEMS_FIELD.type = 11
+EQUIP_SET_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EQUIP_SET_CFGS.name = "equip_set_cfgs"
+EQUIP_SET_CFGS.full_name = ".ftcfg.equip_set_cfgs"
+EQUIP_SET_CFGS.nested_types = {}
+EQUIP_SET_CFGS.enum_types = {}
+EQUIP_SET_CFGS.fields = {EQUIP_SET_CFGS_ITEMS_FIELD}
+EQUIP_SET_CFGS.is_extendable = false
+EQUIP_SET_CFGS.extensions = {}
+EQUIP_SET_PROP_CFG_ID_FIELD.name = "id"
+EQUIP_SET_PROP_CFG_ID_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.id"
+EQUIP_SET_PROP_CFG_ID_FIELD.number = 1
+EQUIP_SET_PROP_CFG_ID_FIELD.index = 0
+EQUIP_SET_PROP_CFG_ID_FIELD.label = 2
+EQUIP_SET_PROP_CFG_ID_FIELD.has_default_value = false
+EQUIP_SET_PROP_CFG_ID_FIELD.default_value = 0
+EQUIP_SET_PROP_CFG_ID_FIELD.type = 13
+EQUIP_SET_PROP_CFG_ID_FIELD.cpp_type = 3
+
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.name = "equip_count"
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.equip_count"
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.number = 2
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.index = 1
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.label = 2
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.has_default_value = false
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.default_value = 0
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.type = 13
+EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.cpp_type = 3
+
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.name = "active_prop"
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.active_prop"
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.number = 3
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.index = 2
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.label = 2
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.has_default_value = false
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.default_value = ""
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.type = 9
+EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.cpp_type = 9
+
+EQUIP_SET_PROP_CFG.name = "equip_set_prop_cfg"
+EQUIP_SET_PROP_CFG.full_name = ".ftcfg.equip_set_prop_cfg"
+EQUIP_SET_PROP_CFG.nested_types = {}
+EQUIP_SET_PROP_CFG.enum_types = {}
+EQUIP_SET_PROP_CFG.fields = {EQUIP_SET_PROP_CFG_ID_FIELD, EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD, EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD}
+EQUIP_SET_PROP_CFG.is_extendable = false
+EQUIP_SET_PROP_CFG.extensions = {}
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.name = "items"
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_set_prop_cfgs.items"
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.number = 1
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.index = 0
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.label = 3
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.has_default_value = false
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.default_value = {}
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.message_type = EQUIP_SET_PROP_CFG
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.type = 11
+EQUIP_SET_PROP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EQUIP_SET_PROP_CFGS.name = "equip_set_prop_cfgs"
+EQUIP_SET_PROP_CFGS.full_name = ".ftcfg.equip_set_prop_cfgs"
+EQUIP_SET_PROP_CFGS.nested_types = {}
+EQUIP_SET_PROP_CFGS.enum_types = {}
+EQUIP_SET_PROP_CFGS.fields = {EQUIP_SET_PROP_CFGS_ITEMS_FIELD}
+EQUIP_SET_PROP_CFGS.is_extendable = false
+EQUIP_SET_PROP_CFGS.extensions = {}
+STRENGTHEN_CFG_ID_FIELD.name = "id"
+STRENGTHEN_CFG_ID_FIELD.full_name = ".ftcfg.strengthen_cfg.id"
+STRENGTHEN_CFG_ID_FIELD.number = 1
+STRENGTHEN_CFG_ID_FIELD.index = 0
+STRENGTHEN_CFG_ID_FIELD.label = 2
+STRENGTHEN_CFG_ID_FIELD.has_default_value = false
+STRENGTHEN_CFG_ID_FIELD.default_value = 0
+STRENGTHEN_CFG_ID_FIELD.type = 13
+STRENGTHEN_CFG_ID_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.name = "seg_limit"
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.full_name = ".ftcfg.strengthen_cfg.seg_limit"
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.number = 2
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.index = 1
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.label = 2
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.has_default_value = false
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.default_value = 0
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.type = 13
+STRENGTHEN_CFG_SEG_LIMIT_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_RATE_FIELD.name = "rate"
+STRENGTHEN_CFG_RATE_FIELD.full_name = ".ftcfg.strengthen_cfg.rate"
+STRENGTHEN_CFG_RATE_FIELD.number = 3
+STRENGTHEN_CFG_RATE_FIELD.index = 2
+STRENGTHEN_CFG_RATE_FIELD.label = 2
+STRENGTHEN_CFG_RATE_FIELD.has_default_value = false
+STRENGTHEN_CFG_RATE_FIELD.default_value = 0
+STRENGTHEN_CFG_RATE_FIELD.type = 13
+STRENGTHEN_CFG_RATE_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.name = "req_level"
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.full_name = ".ftcfg.strengthen_cfg.req_level"
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.number = 4
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.index = 3
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.label = 2
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.has_default_value = false
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.default_value = 0
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.type = 13
+STRENGTHEN_CFG_REQ_LEVEL_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_MAT_ID_FIELD.name = "mat_id"
+STRENGTHEN_CFG_MAT_ID_FIELD.full_name = ".ftcfg.strengthen_cfg.mat_id"
+STRENGTHEN_CFG_MAT_ID_FIELD.number = 5
+STRENGTHEN_CFG_MAT_ID_FIELD.index = 4
+STRENGTHEN_CFG_MAT_ID_FIELD.label = 2
+STRENGTHEN_CFG_MAT_ID_FIELD.has_default_value = false
+STRENGTHEN_CFG_MAT_ID_FIELD.default_value = 0
+STRENGTHEN_CFG_MAT_ID_FIELD.type = 13
+STRENGTHEN_CFG_MAT_ID_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_MAT_NUM_FIELD.name = "mat_num"
+STRENGTHEN_CFG_MAT_NUM_FIELD.full_name = ".ftcfg.strengthen_cfg.mat_num"
+STRENGTHEN_CFG_MAT_NUM_FIELD.number = 6
+STRENGTHEN_CFG_MAT_NUM_FIELD.index = 5
+STRENGTHEN_CFG_MAT_NUM_FIELD.label = 2
+STRENGTHEN_CFG_MAT_NUM_FIELD.has_default_value = false
+STRENGTHEN_CFG_MAT_NUM_FIELD.default_value = 0
+STRENGTHEN_CFG_MAT_NUM_FIELD.type = 13
+STRENGTHEN_CFG_MAT_NUM_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect1"
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.number = 7
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.index = 6
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.label = 2
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.has_default_value = false
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.default_value = ""
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.type = 9
+STRENGTHEN_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
+
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect2"
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.number = 8
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.index = 7
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.label = 2
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.has_default_value = false
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.default_value = ""
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.type = 9
+STRENGTHEN_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
+
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect3"
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.number = 9
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.index = 8
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.label = 2
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.has_default_value = false
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.default_value = ""
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.type = 9
+STRENGTHEN_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
+
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.name = "prop_effect4"
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect4"
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.number = 10
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.index = 9
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.label = 2
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.has_default_value = false
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.default_value = ""
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.type = 9
+STRENGTHEN_CFG_PROP_EFFECT4_FIELD.cpp_type = 9
+
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.name = "extra_effect"
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.full_name = ".ftcfg.strengthen_cfg.extra_effect"
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.number = 11
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.index = 10
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.label = 2
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.has_default_value = false
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.default_value = 0
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.type = 13
+STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.name = "blessing_limit"
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.full_name = ".ftcfg.strengthen_cfg.blessing_limit"
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.number = 12
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.index = 11
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.label = 2
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.has_default_value = false
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.default_value = 0
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.type = 13
+STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.name = "assist_jewel"
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.full_name = ".ftcfg.strengthen_cfg.assist_jewel"
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.number = 13
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.index = 12
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.label = 3
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.has_default_value = false
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.default_value = {}
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.type = 13
+STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.strengthen_cfg.combat_point"
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.number = 14
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.index = 13
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.label = 2
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.has_default_value = false
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.default_value = 0
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.type = 13
+STRENGTHEN_CFG_COMBAT_POINT_FIELD.cpp_type = 3
+
+STRENGTHEN_CFG.name = "strengthen_cfg"
+STRENGTHEN_CFG.full_name = ".ftcfg.strengthen_cfg"
+STRENGTHEN_CFG.nested_types = {}
+STRENGTHEN_CFG.enum_types = {}
+STRENGTHEN_CFG.fields = {STRENGTHEN_CFG_ID_FIELD, STRENGTHEN_CFG_SEG_LIMIT_FIELD, STRENGTHEN_CFG_RATE_FIELD, STRENGTHEN_CFG_REQ_LEVEL_FIELD, STRENGTHEN_CFG_MAT_ID_FIELD, STRENGTHEN_CFG_MAT_NUM_FIELD, STRENGTHEN_CFG_PROP_EFFECT1_FIELD, STRENGTHEN_CFG_PROP_EFFECT2_FIELD, STRENGTHEN_CFG_PROP_EFFECT3_FIELD, STRENGTHEN_CFG_PROP_EFFECT4_FIELD, STRENGTHEN_CFG_EXTRA_EFFECT_FIELD, STRENGTHEN_CFG_BLESSING_LIMIT_FIELD, STRENGTHEN_CFG_ASSIST_JEWEL_FIELD, STRENGTHEN_CFG_COMBAT_POINT_FIELD}
+STRENGTHEN_CFG.is_extendable = false
+STRENGTHEN_CFG.extensions = {}
+STRENGTHEN_CFGS_ITEMS_FIELD.name = "items"
+STRENGTHEN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.strengthen_cfgs.items"
+STRENGTHEN_CFGS_ITEMS_FIELD.number = 1
+STRENGTHEN_CFGS_ITEMS_FIELD.index = 0
+STRENGTHEN_CFGS_ITEMS_FIELD.label = 3
+STRENGTHEN_CFGS_ITEMS_FIELD.has_default_value = false
+STRENGTHEN_CFGS_ITEMS_FIELD.default_value = {}
+STRENGTHEN_CFGS_ITEMS_FIELD.message_type = STRENGTHEN_CFG
+STRENGTHEN_CFGS_ITEMS_FIELD.type = 11
+STRENGTHEN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+STRENGTHEN_CFGS.name = "strengthen_cfgs"
+STRENGTHEN_CFGS.full_name = ".ftcfg.strengthen_cfgs"
+STRENGTHEN_CFGS.nested_types = {}
+STRENGTHEN_CFGS.enum_types = {}
+STRENGTHEN_CFGS.fields = {STRENGTHEN_CFGS_ITEMS_FIELD}
+STRENGTHEN_CFGS.is_extendable = false
+STRENGTHEN_CFGS.extensions = {}
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.name = "level"
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_make_list_cfg.level"
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.number = 1
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.index = 0
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_LEVEL_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.name = "weapon"
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.full_name = ".ftcfg.rune_make_list_cfg.weapon"
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.number = 2
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.index = 1
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_WEAPON_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.name = "head"
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.full_name = ".ftcfg.rune_make_list_cfg.head"
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.number = 3
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.index = 2
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_HEAD_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.name = "clothes"
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.full_name = ".ftcfg.rune_make_list_cfg.clothes"
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.number = 4
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.index = 3
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.name = "trousers"
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.full_name = ".ftcfg.rune_make_list_cfg.trousers"
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.number = 5
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.index = 4
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.name = "shoes"
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.full_name = ".ftcfg.rune_make_list_cfg.shoes"
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.number = 6
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.index = 5
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.label = 2
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.default_value = 0
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.type = 5
+RUNE_MAKE_LIST_CFG_SHOES_FIELD.cpp_type = 1
+
+RUNE_MAKE_LIST_CFG.name = "rune_make_list_cfg"
+RUNE_MAKE_LIST_CFG.full_name = ".ftcfg.rune_make_list_cfg"
+RUNE_MAKE_LIST_CFG.nested_types = {}
+RUNE_MAKE_LIST_CFG.enum_types = {}
+RUNE_MAKE_LIST_CFG.fields = {RUNE_MAKE_LIST_CFG_LEVEL_FIELD, RUNE_MAKE_LIST_CFG_WEAPON_FIELD, RUNE_MAKE_LIST_CFG_HEAD_FIELD, RUNE_MAKE_LIST_CFG_CLOTHES_FIELD, RUNE_MAKE_LIST_CFG_TROUSERS_FIELD, RUNE_MAKE_LIST_CFG_SHOES_FIELD}
+RUNE_MAKE_LIST_CFG.is_extendable = false
+RUNE_MAKE_LIST_CFG.extensions = {}
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.name = "items"
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_make_list_cfgs.items"
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.number = 1
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.index = 0
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.label = 3
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.message_type = RUNE_MAKE_LIST_CFG
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.type = 11
+RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_MAKE_LIST_CFGS.name = "rune_make_list_cfgs"
+RUNE_MAKE_LIST_CFGS.full_name = ".ftcfg.rune_make_list_cfgs"
+RUNE_MAKE_LIST_CFGS.nested_types = {}
+RUNE_MAKE_LIST_CFGS.enum_types = {}
+RUNE_MAKE_LIST_CFGS.fields = {RUNE_MAKE_LIST_CFGS_ITEMS_FIELD}
+RUNE_MAKE_LIST_CFGS.is_extendable = false
+RUNE_MAKE_LIST_CFGS.extensions = {}
+RUNE_MAKE_CFG_ID_FIELD.name = "id"
+RUNE_MAKE_CFG_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.id"
+RUNE_MAKE_CFG_ID_FIELD.number = 1
+RUNE_MAKE_CFG_ID_FIELD.index = 0
+RUNE_MAKE_CFG_ID_FIELD.label = 2
+RUNE_MAKE_CFG_ID_FIELD.has_default_value = false
+RUNE_MAKE_CFG_ID_FIELD.default_value = 0
+RUNE_MAKE_CFG_ID_FIELD.type = 13
+RUNE_MAKE_CFG_ID_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_COST_FIELD.name = "cost"
+RUNE_MAKE_CFG_COST_FIELD.full_name = ".ftcfg.rune_make_cfg.cost"
+RUNE_MAKE_CFG_COST_FIELD.number = 2
+RUNE_MAKE_CFG_COST_FIELD.index = 1
+RUNE_MAKE_CFG_COST_FIELD.label = 2
+RUNE_MAKE_CFG_COST_FIELD.has_default_value = false
+RUNE_MAKE_CFG_COST_FIELD.default_value = 0
+RUNE_MAKE_CFG_COST_FIELD.type = 5
+RUNE_MAKE_CFG_COST_FIELD.cpp_type = 1
+
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.name = "make_material"
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.full_name = ".ftcfg.rune_make_cfg.make_material"
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.number = 3
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.index = 2
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.label = 3
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.has_default_value = false
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.default_value = {}
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.type = 13
+RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.name = "elite_material"
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.full_name = ".ftcfg.rune_make_cfg.elite_material"
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.number = 4
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.index = 3
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.label = 3
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.has_default_value = false
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.default_value = {}
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.type = 13
+RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.name = "prop_count"
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.full_name = ".ftcfg.rune_make_cfg.prop_count"
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.number = 5
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.index = 4
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.label = 2
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.has_default_value = false
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.default_value = 0
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.type = 13
+RUNE_MAKE_CFG_PROP_COUNT_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.name = "special_spell_rate"
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.special_spell_rate"
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.number = 6
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.index = 5
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.label = 2
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.has_default_value = false
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.default_value = 0
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.type = 13
+RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.name = "special_spell_elite_rate"
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.special_spell_elite_rate"
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.number = 7
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.index = 6
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.label = 2
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.has_default_value = false
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.default_value = 0
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.type = 13
+RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.name = "spell_group_id"
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_group_id"
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.number = 8
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.index = 7
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.label = 2
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.has_default_value = false
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.default_value = 0
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.type = 13
+RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.name = "spell_rate"
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_rate"
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.number = 9
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.index = 8
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.label = 2
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.has_default_value = false
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.default_value = 0
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.type = 13
+RUNE_MAKE_CFG_SPELL_RATE_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.name = "spell_elite_rate"
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_elite_rate"
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.number = 10
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.index = 9
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.label = 2
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.has_default_value = false
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.default_value = 0
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.type = 13
+RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.name = "prop_group_id"
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.prop_group_id"
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.number = 11
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.index = 10
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.label = 3
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.has_default_value = false
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.default_value = {}
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.type = 13
+RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.name = "magic_group_id"
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.magic_group_id"
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.number = 12
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.index = 11
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.label = 3
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.has_default_value = false
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.default_value = {}
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.type = 13
+RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.cpp_type = 3
+
+RUNE_MAKE_CFG.name = "rune_make_cfg"
+RUNE_MAKE_CFG.full_name = ".ftcfg.rune_make_cfg"
+RUNE_MAKE_CFG.nested_types = {}
+RUNE_MAKE_CFG.enum_types = {}
+RUNE_MAKE_CFG.fields = {RUNE_MAKE_CFG_ID_FIELD, RUNE_MAKE_CFG_COST_FIELD, RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD, RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD, RUNE_MAKE_CFG_PROP_COUNT_FIELD, RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD, RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD, RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD, RUNE_MAKE_CFG_SPELL_RATE_FIELD, RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD, RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD, RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD}
+RUNE_MAKE_CFG.is_extendable = false
+RUNE_MAKE_CFG.extensions = {}
+RUNE_MAKE_CFGS_ITEMS_FIELD.name = "items"
+RUNE_MAKE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_make_cfgs.items"
+RUNE_MAKE_CFGS_ITEMS_FIELD.number = 1
+RUNE_MAKE_CFGS_ITEMS_FIELD.index = 0
+RUNE_MAKE_CFGS_ITEMS_FIELD.label = 3
+RUNE_MAKE_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_MAKE_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_MAKE_CFGS_ITEMS_FIELD.message_type = RUNE_MAKE_CFG
+RUNE_MAKE_CFGS_ITEMS_FIELD.type = 11
+RUNE_MAKE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_MAKE_CFGS.name = "rune_make_cfgs"
+RUNE_MAKE_CFGS.full_name = ".ftcfg.rune_make_cfgs"
+RUNE_MAKE_CFGS.nested_types = {}
+RUNE_MAKE_CFGS.enum_types = {}
+RUNE_MAKE_CFGS.fields = {RUNE_MAKE_CFGS_ITEMS_FIELD}
+RUNE_MAKE_CFGS.is_extendable = false
+RUNE_MAKE_CFGS.extensions = {}
+RUNE_PROP_GROUP_CFG_ID_FIELD.name = "id"
+RUNE_PROP_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.id"
+RUNE_PROP_GROUP_CFG_ID_FIELD.number = 1
+RUNE_PROP_GROUP_CFG_ID_FIELD.index = 0
+RUNE_PROP_GROUP_CFG_ID_FIELD.label = 2
+RUNE_PROP_GROUP_CFG_ID_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_ID_FIELD.default_value = 0
+RUNE_PROP_GROUP_CFG_ID_FIELD.type = 13
+RUNE_PROP_GROUP_CFG_ID_FIELD.cpp_type = 3
+
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.name = "assist_id"
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.assist_id"
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.number = 2
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.index = 1
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.label = 2
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.default_value = 0
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.type = 13
+RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.cpp_type = 3
+
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.name = "group_id"
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.group_id"
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.number = 3
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.index = 2
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.label = 2
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.default_value = 0
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.type = 13
+RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.cpp_type = 3
+
+RUNE_PROP_GROUP_CFG_PROP_FIELD.name = "prop"
+RUNE_PROP_GROUP_CFG_PROP_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop"
+RUNE_PROP_GROUP_CFG_PROP_FIELD.number = 4
+RUNE_PROP_GROUP_CFG_PROP_FIELD.index = 3
+RUNE_PROP_GROUP_CFG_PROP_FIELD.label = 2
+RUNE_PROP_GROUP_CFG_PROP_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_FIELD.default_value = ""
+RUNE_PROP_GROUP_CFG_PROP_FIELD.type = 9
+RUNE_PROP_GROUP_CFG_PROP_FIELD.cpp_type = 9
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.name = "prop_value1"
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value1"
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.number = 5
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.index = 4
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.name = "prop_value2"
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value2"
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.number = 6
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.index = 5
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.name = "prop_value3"
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value3"
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.number = 7
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.index = 6
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.name = "prop_value4"
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value4"
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.number = 8
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.index = 7
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.name = "prop_value5"
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value5"
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.number = 9
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.index = 8
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.name = "prop_value6"
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value6"
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.number = 10
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.index = 9
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.name = "prop_elite_value1"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value1"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.number = 11
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.index = 10
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.name = "prop_elite_value2"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value2"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.number = 12
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.index = 11
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.name = "prop_elite_value3"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value3"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.number = 13
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.index = 12
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.name = "prop_elite_value4"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value4"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.number = 14
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.index = 13
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.name = "prop_elite_value5"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value5"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.number = 15
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.index = 14
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.name = "prop_elite_value6"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value6"
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.number = 16
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.index = 15
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.label = 3
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.type = 1
+RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.cpp_type = 5
+
+RUNE_PROP_GROUP_CFG.name = "rune_prop_group_cfg"
+RUNE_PROP_GROUP_CFG.full_name = ".ftcfg.rune_prop_group_cfg"
+RUNE_PROP_GROUP_CFG.nested_types = {}
+RUNE_PROP_GROUP_CFG.enum_types = {}
+RUNE_PROP_GROUP_CFG.fields = {RUNE_PROP_GROUP_CFG_ID_FIELD, RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD, RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD, RUNE_PROP_GROUP_CFG_PROP_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD}
+RUNE_PROP_GROUP_CFG.is_extendable = false
+RUNE_PROP_GROUP_CFG.extensions = {}
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.name = "items"
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_prop_group_cfgs.items"
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.number = 1
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.index = 0
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.label = 3
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.message_type = RUNE_PROP_GROUP_CFG
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.type = 11
+RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_PROP_GROUP_CFGS.name = "rune_prop_group_cfgs"
+RUNE_PROP_GROUP_CFGS.full_name = ".ftcfg.rune_prop_group_cfgs"
+RUNE_PROP_GROUP_CFGS.nested_types = {}
+RUNE_PROP_GROUP_CFGS.enum_types = {}
+RUNE_PROP_GROUP_CFGS.fields = {RUNE_PROP_GROUP_CFGS_ITEMS_FIELD}
+RUNE_PROP_GROUP_CFGS.is_extendable = false
+RUNE_PROP_GROUP_CFGS.extensions = {}
+EQUIP_LIST_CFG_ID_FIELD.name = "id"
+EQUIP_LIST_CFG_ID_FIELD.full_name = ".ftcfg.equip_list_cfg.id"
+EQUIP_LIST_CFG_ID_FIELD.number = 1
+EQUIP_LIST_CFG_ID_FIELD.index = 0
+EQUIP_LIST_CFG_ID_FIELD.label = 2
+EQUIP_LIST_CFG_ID_FIELD.has_default_value = false
+EQUIP_LIST_CFG_ID_FIELD.default_value = 0
+EQUIP_LIST_CFG_ID_FIELD.type = 5
+EQUIP_LIST_CFG_ID_FIELD.cpp_type = 1
+
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.name = "equip_list"
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.full_name = ".ftcfg.equip_list_cfg.equip_list"
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.number = 2
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.index = 1
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.label = 3
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.has_default_value = false
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.default_value = {}
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.type = 13
+EQUIP_LIST_CFG_EQUIP_LIST_FIELD.cpp_type = 3
+
+EQUIP_LIST_CFG.name = "equip_list_cfg"
+EQUIP_LIST_CFG.full_name = ".ftcfg.equip_list_cfg"
+EQUIP_LIST_CFG.nested_types = {}
+EQUIP_LIST_CFG.enum_types = {}
+EQUIP_LIST_CFG.fields = {EQUIP_LIST_CFG_ID_FIELD, EQUIP_LIST_CFG_EQUIP_LIST_FIELD}
+EQUIP_LIST_CFG.is_extendable = false
+EQUIP_LIST_CFG.extensions = {}
+EQUIP_LIST_CFGS_ITEMS_FIELD.name = "items"
+EQUIP_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_list_cfgs.items"
+EQUIP_LIST_CFGS_ITEMS_FIELD.number = 1
+EQUIP_LIST_CFGS_ITEMS_FIELD.index = 0
+EQUIP_LIST_CFGS_ITEMS_FIELD.label = 3
+EQUIP_LIST_CFGS_ITEMS_FIELD.has_default_value = false
+EQUIP_LIST_CFGS_ITEMS_FIELD.default_value = {}
+EQUIP_LIST_CFGS_ITEMS_FIELD.message_type = EQUIP_LIST_CFG
+EQUIP_LIST_CFGS_ITEMS_FIELD.type = 11
+EQUIP_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EQUIP_LIST_CFGS.name = "equip_list_cfgs"
+EQUIP_LIST_CFGS.full_name = ".ftcfg.equip_list_cfgs"
+EQUIP_LIST_CFGS.nested_types = {}
+EQUIP_LIST_CFGS.enum_types = {}
+EQUIP_LIST_CFGS.fields = {EQUIP_LIST_CFGS_ITEMS_FIELD}
+EQUIP_LIST_CFGS.is_extendable = false
+EQUIP_LIST_CFGS.extensions = {}
+RUNE_SKILL_GROUP_CFG_ID_FIELD.name = "id"
+RUNE_SKILL_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.id"
+RUNE_SKILL_GROUP_CFG_ID_FIELD.number = 1
+RUNE_SKILL_GROUP_CFG_ID_FIELD.index = 0
+RUNE_SKILL_GROUP_CFG_ID_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_ID_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_ID_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_ID_FIELD.type = 13
+RUNE_SKILL_GROUP_CFG_ID_FIELD.cpp_type = 3
+
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.name = "group_id"
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.group_id"
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.number = 2
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.index = 1
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.type = 13
+RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.cpp_type = 3
+
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.name = "skill_id"
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.skill_id"
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.number = 3
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.index = 2
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.name = "level_rand"
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.level_rand"
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.number = 4
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.index = 3
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.label = 3
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.default_value = {}
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.type = 13
+RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.cpp_type = 3
+
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.name = "rate_1"
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_1"
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.number = 5
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.index = 4
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.name = "rate_2"
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_2"
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.number = 6
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.index = 5
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.name = "rate_3"
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_3"
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.number = 7
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.index = 6
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.name = "rate_4"
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_4"
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.number = 8
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.index = 7
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.name = "rate_5"
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_5"
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.number = 9
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.index = 8
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.label = 2
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.default_value = 0
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.type = 5
+RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.cpp_type = 1
+
+RUNE_SKILL_GROUP_CFG.name = "rune_skill_group_cfg"
+RUNE_SKILL_GROUP_CFG.full_name = ".ftcfg.rune_skill_group_cfg"
+RUNE_SKILL_GROUP_CFG.nested_types = {}
+RUNE_SKILL_GROUP_CFG.enum_types = {}
+RUNE_SKILL_GROUP_CFG.fields = {RUNE_SKILL_GROUP_CFG_ID_FIELD, RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD, RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD, RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD, RUNE_SKILL_GROUP_CFG_RATE_1_FIELD, RUNE_SKILL_GROUP_CFG_RATE_2_FIELD, RUNE_SKILL_GROUP_CFG_RATE_3_FIELD, RUNE_SKILL_GROUP_CFG_RATE_4_FIELD, RUNE_SKILL_GROUP_CFG_RATE_5_FIELD}
+RUNE_SKILL_GROUP_CFG.is_extendable = false
+RUNE_SKILL_GROUP_CFG.extensions = {}
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.name = "items"
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_skill_group_cfgs.items"
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.number = 1
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.index = 0
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.label = 3
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.message_type = RUNE_SKILL_GROUP_CFG
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.type = 11
+RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_SKILL_GROUP_CFGS.name = "rune_skill_group_cfgs"
+RUNE_SKILL_GROUP_CFGS.full_name = ".ftcfg.rune_skill_group_cfgs"
+RUNE_SKILL_GROUP_CFGS.nested_types = {}
+RUNE_SKILL_GROUP_CFGS.enum_types = {}
+RUNE_SKILL_GROUP_CFGS.fields = {RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD}
+RUNE_SKILL_GROUP_CFGS.is_extendable = false
+RUNE_SKILL_GROUP_CFGS.extensions = {}
+RUNE_DECOMPOSE_CFG_ID_FIELD.name = "id"
+RUNE_DECOMPOSE_CFG_ID_FIELD.full_name = ".ftcfg.rune_decompose_cfg.id"
+RUNE_DECOMPOSE_CFG_ID_FIELD.number = 1
+RUNE_DECOMPOSE_CFG_ID_FIELD.index = 0
+RUNE_DECOMPOSE_CFG_ID_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ID_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ID_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ID_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ID_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.name = "silver"
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.full_name = ".ftcfg.rune_decompose_cfg.silver"
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.number = 2
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.index = 1
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.label = 3
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.default_value = {}
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.type = 5
+RUNE_DECOMPOSE_CFG_SILVER_FIELD.cpp_type = 1
+
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.name = "gold"
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.full_name = ".ftcfg.rune_decompose_cfg.gold"
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.number = 3
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.index = 2
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.label = 3
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.default_value = {}
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.type = 5
+RUNE_DECOMPOSE_CFG_GOLD_FIELD.cpp_type = 1
+
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.name = "item_id1"
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id1"
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.number = 4
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.index = 3
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.name = "item_rate1"
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate1"
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.number = 5
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.index = 4
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.name = "item_count1"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count1"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.number = 6
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.index = 5
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.name = "item_id2"
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id2"
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.number = 7
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.index = 6
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.name = "item_rate2"
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate2"
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.number = 8
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.index = 7
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.name = "item_count2"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count2"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.number = 9
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.index = 8
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.name = "item_id3"
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id3"
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.number = 10
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.index = 9
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.name = "item_rate3"
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate3"
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.number = 11
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.index = 10
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.name = "item_count3"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count3"
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.number = 12
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.index = 11
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.label = 2
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.default_value = 0
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.type = 13
+RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.cpp_type = 3
+
+RUNE_DECOMPOSE_CFG.name = "rune_decompose_cfg"
+RUNE_DECOMPOSE_CFG.full_name = ".ftcfg.rune_decompose_cfg"
+RUNE_DECOMPOSE_CFG.nested_types = {}
+RUNE_DECOMPOSE_CFG.enum_types = {}
+RUNE_DECOMPOSE_CFG.fields = {RUNE_DECOMPOSE_CFG_ID_FIELD, RUNE_DECOMPOSE_CFG_SILVER_FIELD, RUNE_DECOMPOSE_CFG_GOLD_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD}
+RUNE_DECOMPOSE_CFG.is_extendable = false
+RUNE_DECOMPOSE_CFG.extensions = {}
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.name = "items"
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_decompose_cfgs.items"
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.number = 1
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.index = 0
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.label = 3
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.message_type = RUNE_DECOMPOSE_CFG
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.type = 11
+RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_DECOMPOSE_CFGS.name = "rune_decompose_cfgs"
+RUNE_DECOMPOSE_CFGS.full_name = ".ftcfg.rune_decompose_cfgs"
+RUNE_DECOMPOSE_CFGS.nested_types = {}
+RUNE_DECOMPOSE_CFGS.enum_types = {}
+RUNE_DECOMPOSE_CFGS.fields = {RUNE_DECOMPOSE_CFGS_ITEMS_FIELD}
+RUNE_DECOMPOSE_CFGS.is_extendable = false
+RUNE_DECOMPOSE_CFGS.extensions = {}
+JEWELRY_MAKE_CFG_ID_FIELD.name = "id"
+JEWELRY_MAKE_CFG_ID_FIELD.full_name = ".ftcfg.jewelry_make_cfg.id"
+JEWELRY_MAKE_CFG_ID_FIELD.number = 1
+JEWELRY_MAKE_CFG_ID_FIELD.index = 0
+JEWELRY_MAKE_CFG_ID_FIELD.label = 2
+JEWELRY_MAKE_CFG_ID_FIELD.has_default_value = false
+JEWELRY_MAKE_CFG_ID_FIELD.default_value = 0
+JEWELRY_MAKE_CFG_ID_FIELD.type = 13
+JEWELRY_MAKE_CFG_ID_FIELD.cpp_type = 3
+
+JEWELRY_MAKE_CFG_POP_COST_FIELD.name = "pop_cost"
+JEWELRY_MAKE_CFG_POP_COST_FIELD.full_name = ".ftcfg.jewelry_make_cfg.pop_cost"
+JEWELRY_MAKE_CFG_POP_COST_FIELD.number = 2
+JEWELRY_MAKE_CFG_POP_COST_FIELD.index = 1
+JEWELRY_MAKE_CFG_POP_COST_FIELD.label = 2
+JEWELRY_MAKE_CFG_POP_COST_FIELD.has_default_value = false
+JEWELRY_MAKE_CFG_POP_COST_FIELD.default_value = 0
+JEWELRY_MAKE_CFG_POP_COST_FIELD.type = 5
+JEWELRY_MAKE_CFG_POP_COST_FIELD.cpp_type = 1
+
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.name = "money_cost"
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.full_name = ".ftcfg.jewelry_make_cfg.money_cost"
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.number = 3
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.index = 2
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.label = 2
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.has_default_value = false
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.default_value = 0
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.type = 5
+JEWELRY_MAKE_CFG_MONEY_COST_FIELD.cpp_type = 1
+
+JEWELRY_MAKE_CFG.name = "jewelry_make_cfg"
+JEWELRY_MAKE_CFG.full_name = ".ftcfg.jewelry_make_cfg"
+JEWELRY_MAKE_CFG.nested_types = {}
+JEWELRY_MAKE_CFG.enum_types = {}
+JEWELRY_MAKE_CFG.fields = {JEWELRY_MAKE_CFG_ID_FIELD, JEWELRY_MAKE_CFG_POP_COST_FIELD, JEWELRY_MAKE_CFG_MONEY_COST_FIELD}
+JEWELRY_MAKE_CFG.is_extendable = false
+JEWELRY_MAKE_CFG.extensions = {}
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.name = "items"
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jewelry_make_cfgs.items"
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.number = 1
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.index = 0
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.label = 3
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.has_default_value = false
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.default_value = {}
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.message_type = JEWELRY_MAKE_CFG
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.type = 11
+JEWELRY_MAKE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+JEWELRY_MAKE_CFGS.name = "jewelry_make_cfgs"
+JEWELRY_MAKE_CFGS.full_name = ".ftcfg.jewelry_make_cfgs"
+JEWELRY_MAKE_CFGS.nested_types = {}
+JEWELRY_MAKE_CFGS.enum_types = {}
+JEWELRY_MAKE_CFGS.fields = {JEWELRY_MAKE_CFGS_ITEMS_FIELD}
+JEWELRY_MAKE_CFGS.is_extendable = false
+JEWELRY_MAKE_CFGS.extensions = {}
+WORLD_MAP_CFG_ID_FIELD.name = "id"
+WORLD_MAP_CFG_ID_FIELD.full_name = ".ftcfg.world_map_cfg.id"
+WORLD_MAP_CFG_ID_FIELD.number = 1
+WORLD_MAP_CFG_ID_FIELD.index = 0
+WORLD_MAP_CFG_ID_FIELD.label = 2
+WORLD_MAP_CFG_ID_FIELD.has_default_value = false
+WORLD_MAP_CFG_ID_FIELD.default_value = 0
+WORLD_MAP_CFG_ID_FIELD.type = 5
+WORLD_MAP_CFG_ID_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_SCENE_NAME_FIELD.name = "scene_name"
+WORLD_MAP_CFG_SCENE_NAME_FIELD.full_name = ".ftcfg.world_map_cfg.scene_name"
+WORLD_MAP_CFG_SCENE_NAME_FIELD.number = 2
+WORLD_MAP_CFG_SCENE_NAME_FIELD.index = 1
+WORLD_MAP_CFG_SCENE_NAME_FIELD.label = 2
+WORLD_MAP_CFG_SCENE_NAME_FIELD.has_default_value = false
+WORLD_MAP_CFG_SCENE_NAME_FIELD.default_value = 0
+WORLD_MAP_CFG_SCENE_NAME_FIELD.type = 5
+WORLD_MAP_CFG_SCENE_NAME_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.name = "scene_nameshow"
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.full_name = ".ftcfg.world_map_cfg.scene_nameshow"
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.number = 3
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.index = 2
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.label = 2
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.has_default_value = false
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.default_value = ""
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.type = 9
+WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.cpp_type = 9
+
+WORLD_MAP_CFG_OPEN_LV_FIELD.name = "open_lv"
+WORLD_MAP_CFG_OPEN_LV_FIELD.full_name = ".ftcfg.world_map_cfg.open_lv"
+WORLD_MAP_CFG_OPEN_LV_FIELD.number = 4
+WORLD_MAP_CFG_OPEN_LV_FIELD.index = 3
+WORLD_MAP_CFG_OPEN_LV_FIELD.label = 2
+WORLD_MAP_CFG_OPEN_LV_FIELD.has_default_value = false
+WORLD_MAP_CFG_OPEN_LV_FIELD.default_value = 0
+WORLD_MAP_CFG_OPEN_LV_FIELD.type = 5
+WORLD_MAP_CFG_OPEN_LV_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.name = "openlv_show"
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.full_name = ".ftcfg.world_map_cfg.openlv_show"
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.number = 5
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.index = 4
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.label = 2
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.has_default_value = false
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.default_value = 0
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.type = 5
+WORLD_MAP_CFG_OPENLV_SHOW_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.name = "language_id"
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.full_name = ".ftcfg.world_map_cfg.language_id"
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.number = 6
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.index = 5
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.label = 2
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.has_default_value = false
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.default_value = ""
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.type = 9
+WORLD_MAP_CFG_LANGUAGE_ID_FIELD.cpp_type = 9
+
+WORLD_MAP_CFG_SCENE_ID_FIELD.name = "scene_id"
+WORLD_MAP_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.world_map_cfg.scene_id"
+WORLD_MAP_CFG_SCENE_ID_FIELD.number = 7
+WORLD_MAP_CFG_SCENE_ID_FIELD.index = 6
+WORLD_MAP_CFG_SCENE_ID_FIELD.label = 2
+WORLD_MAP_CFG_SCENE_ID_FIELD.has_default_value = false
+WORLD_MAP_CFG_SCENE_ID_FIELD.default_value = 0
+WORLD_MAP_CFG_SCENE_ID_FIELD.type = 5
+WORLD_MAP_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.name = "initial_whether"
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.full_name = ".ftcfg.world_map_cfg.initial_whether"
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.number = 8
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.index = 7
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.label = 2
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.has_default_value = false
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.default_value = 0
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.type = 5
+WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG_SCENE_ICON_FIELD.name = "scene_icon"
+WORLD_MAP_CFG_SCENE_ICON_FIELD.full_name = ".ftcfg.world_map_cfg.scene_icon"
+WORLD_MAP_CFG_SCENE_ICON_FIELD.number = 9
+WORLD_MAP_CFG_SCENE_ICON_FIELD.index = 8
+WORLD_MAP_CFG_SCENE_ICON_FIELD.label = 2
+WORLD_MAP_CFG_SCENE_ICON_FIELD.has_default_value = false
+WORLD_MAP_CFG_SCENE_ICON_FIELD.default_value = 0
+WORLD_MAP_CFG_SCENE_ICON_FIELD.type = 5
+WORLD_MAP_CFG_SCENE_ICON_FIELD.cpp_type = 1
+
+WORLD_MAP_CFG.name = "world_map_cfg"
+WORLD_MAP_CFG.full_name = ".ftcfg.world_map_cfg"
+WORLD_MAP_CFG.nested_types = {}
+WORLD_MAP_CFG.enum_types = {}
+WORLD_MAP_CFG.fields = {WORLD_MAP_CFG_ID_FIELD, WORLD_MAP_CFG_SCENE_NAME_FIELD, WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD, WORLD_MAP_CFG_OPEN_LV_FIELD, WORLD_MAP_CFG_OPENLV_SHOW_FIELD, WORLD_MAP_CFG_LANGUAGE_ID_FIELD, WORLD_MAP_CFG_SCENE_ID_FIELD, WORLD_MAP_CFG_INITIAL_WHETHER_FIELD, WORLD_MAP_CFG_SCENE_ICON_FIELD}
+WORLD_MAP_CFG.is_extendable = false
+WORLD_MAP_CFG.extensions = {}
+WORLD_MAP_CFGS_ITEMS_FIELD.name = "items"
+WORLD_MAP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.world_map_cfgs.items"
+WORLD_MAP_CFGS_ITEMS_FIELD.number = 1
+WORLD_MAP_CFGS_ITEMS_FIELD.index = 0
+WORLD_MAP_CFGS_ITEMS_FIELD.label = 3
+WORLD_MAP_CFGS_ITEMS_FIELD.has_default_value = false
+WORLD_MAP_CFGS_ITEMS_FIELD.default_value = {}
+WORLD_MAP_CFGS_ITEMS_FIELD.message_type = WORLD_MAP_CFG
+WORLD_MAP_CFGS_ITEMS_FIELD.type = 11
+WORLD_MAP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+WORLD_MAP_CFGS.name = "world_map_cfgs"
+WORLD_MAP_CFGS.full_name = ".ftcfg.world_map_cfgs"
+WORLD_MAP_CFGS.nested_types = {}
+WORLD_MAP_CFGS.enum_types = {}
+WORLD_MAP_CFGS.fields = {WORLD_MAP_CFGS_ITEMS_FIELD}
+WORLD_MAP_CFGS.is_extendable = false
+WORLD_MAP_CFGS.extensions = {}
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.name = "partner_quality"
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.full_name = ".ftcfg.partner_currency_cfg.partner_quality"
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.number = 1
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.index = 0
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.label = 2
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.has_default_value = false
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.default_value = nil
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.type = 14
+PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.cpp_type = 8
+
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.name = "currency_num"
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.full_name = ".ftcfg.partner_currency_cfg.currency_num"
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.number = 2
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.index = 1
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.label = 3
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.has_default_value = false
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.default_value = {}
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.type = 5
+PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.cpp_type = 1
+
+PARTNER_CURRENCY_CFG.name = "partner_currency_cfg"
+PARTNER_CURRENCY_CFG.full_name = ".ftcfg.partner_currency_cfg"
+PARTNER_CURRENCY_CFG.nested_types = {}
+PARTNER_CURRENCY_CFG.enum_types = {}
+PARTNER_CURRENCY_CFG.fields = {PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD, PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD}
+PARTNER_CURRENCY_CFG.is_extendable = false
+PARTNER_CURRENCY_CFG.extensions = {}
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_currency_cfgs.items"
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.number = 1
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.index = 0
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.label = 3
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.message_type = PARTNER_CURRENCY_CFG
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.type = 11
+PARTNER_CURRENCY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_CURRENCY_CFGS.name = "partner_currency_cfgs"
+PARTNER_CURRENCY_CFGS.full_name = ".ftcfg.partner_currency_cfgs"
+PARTNER_CURRENCY_CFGS.nested_types = {}
+PARTNER_CURRENCY_CFGS.enum_types = {}
+PARTNER_CURRENCY_CFGS.fields = {PARTNER_CURRENCY_CFGS_ITEMS_FIELD}
+PARTNER_CURRENCY_CFGS.is_extendable = false
+PARTNER_CURRENCY_CFGS.extensions = {}
+PARTNER_ACTIVATION_CFG_ID_FIELD.name = "id"
+PARTNER_ACTIVATION_CFG_ID_FIELD.full_name = ".ftcfg.partner_activation_cfg.id"
+PARTNER_ACTIVATION_CFG_ID_FIELD.number = 1
+PARTNER_ACTIVATION_CFG_ID_FIELD.index = 0
+PARTNER_ACTIVATION_CFG_ID_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_ID_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_ID_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_ID_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.name = "plotid"
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.full_name = ".ftcfg.partner_activation_cfg.plotid"
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.number = 2
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.index = 1
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PLOTID_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.name = "branchplotid"
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.full_name = ".ftcfg.partner_activation_cfg.branchplotid"
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.number = 3
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.index = 2
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.name = "partnerid"
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.full_name = ".ftcfg.partner_activation_cfg.partnerid"
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.number = 4
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.index = 3
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.name = "partnerimpressionlevel"
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.full_name = ".ftcfg.partner_activation_cfg.partnerimpressionlevel"
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.number = 5
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.index = 4
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.name = "combatpower"
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.full_name = ".ftcfg.partner_activation_cfg.combatpower"
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.number = 6
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.index = 5
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_NAME_FIELD.name = "name"
+PARTNER_ACTIVATION_CFG_NAME_FIELD.full_name = ".ftcfg.partner_activation_cfg.name"
+PARTNER_ACTIVATION_CFG_NAME_FIELD.number = 7
+PARTNER_ACTIVATION_CFG_NAME_FIELD.index = 6
+PARTNER_ACTIVATION_CFG_NAME_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_NAME_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_NAME_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_NAME_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_NAME_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_ICON_FIELD.name = "icon"
+PARTNER_ACTIVATION_CFG_ICON_FIELD.full_name = ".ftcfg.partner_activation_cfg.icon"
+PARTNER_ACTIVATION_CFG_ICON_FIELD.number = 8
+PARTNER_ACTIVATION_CFG_ICON_FIELD.index = 7
+PARTNER_ACTIVATION_CFG_ICON_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_ICON_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_ICON_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_ICON_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_ICON_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_DESC_FIELD.name = "desc"
+PARTNER_ACTIVATION_CFG_DESC_FIELD.full_name = ".ftcfg.partner_activation_cfg.desc"
+PARTNER_ACTIVATION_CFG_DESC_FIELD.number = 9
+PARTNER_ACTIVATION_CFG_DESC_FIELD.index = 8
+PARTNER_ACTIVATION_CFG_DESC_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_DESC_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_DESC_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_DESC_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_DESC_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.name = "moodids"
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.full_name = ".ftcfg.partner_activation_cfg.moodids"
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.number = 10
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.index = 9
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.name = "proportions"
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.full_name = ".ftcfg.partner_activation_cfg.proportions"
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.number = 11
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.index = 10
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.name = "maximpressionlevel"
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.full_name = ".ftcfg.partner_activation_cfg.maximpressionlevel"
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.number = 12
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.index = 11
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.default_value = 0
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_GITS_FIELD.name = "gits"
+PARTNER_ACTIVATION_CFG_GITS_FIELD.full_name = ".ftcfg.partner_activation_cfg.gits"
+PARTNER_ACTIVATION_CFG_GITS_FIELD.number = 13
+PARTNER_ACTIVATION_CFG_GITS_FIELD.index = 12
+PARTNER_ACTIVATION_CFG_GITS_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_GITS_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_GITS_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_GITS_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_GITS_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.name = "presentation1"
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation1"
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.number = 14
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.index = 13
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.name = "presentation2"
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation2"
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.number = 15
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.index = 14
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.name = "presentation3"
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation3"
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.number = 16
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.index = 15
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.label = 3
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.type = 5
+PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.cpp_type = 1
+
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.name = "move_head"
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_head"
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.number = 17
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.index = 16
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.name = "head_time"
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.head_time"
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.number = 18
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.index = 17
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.default_value = 0.0
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.type = 2
+PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.cpp_type = 6
+
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.name = "move_body"
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_body"
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.number = 19
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.index = 18
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.name = "body_time"
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.body_time"
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.number = 20
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.index = 19
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.default_value = 0.0
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.type = 2
+PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.cpp_type = 6
+
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.name = "move_leg"
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_leg"
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.number = 21
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.index = 20
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.name = "leg_time"
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.leg_time"
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.number = 22
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.index = 21
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.default_value = 0.0
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.type = 2
+PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.cpp_type = 6
+
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.name = "move_promote"
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_promote"
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.number = 23
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.index = 22
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.default_value = ""
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.type = 9
+PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.cpp_type = 9
+
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.name = "pronote_time"
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.pronote_time"
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.number = 24
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.index = 23
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.label = 2
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.default_value = 0.0
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.type = 2
+PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.cpp_type = 6
+
+PARTNER_ACTIVATION_CFG.name = "partner_activation_cfg"
+PARTNER_ACTIVATION_CFG.full_name = ".ftcfg.partner_activation_cfg"
+PARTNER_ACTIVATION_CFG.nested_types = {}
+PARTNER_ACTIVATION_CFG.enum_types = {}
+PARTNER_ACTIVATION_CFG.fields = {PARTNER_ACTIVATION_CFG_ID_FIELD, PARTNER_ACTIVATION_CFG_PLOTID_FIELD, PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD, PARTNER_ACTIVATION_CFG_PARTNERID_FIELD, PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD, PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD, PARTNER_ACTIVATION_CFG_NAME_FIELD, PARTNER_ACTIVATION_CFG_ICON_FIELD, PARTNER_ACTIVATION_CFG_DESC_FIELD, PARTNER_ACTIVATION_CFG_MOODIDS_FIELD, PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD, PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD, PARTNER_ACTIVATION_CFG_GITS_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD, PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD, PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD, PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD, PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD, PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD}
+PARTNER_ACTIVATION_CFG.is_extendable = false
+PARTNER_ACTIVATION_CFG.extensions = {}
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_activation_cfgs.items"
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.number = 1
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.index = 0
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.label = 3
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.message_type = PARTNER_ACTIVATION_CFG
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.type = 11
+PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_ACTIVATION_CFGS.name = "partner_activation_cfgs"
+PARTNER_ACTIVATION_CFGS.full_name = ".ftcfg.partner_activation_cfgs"
+PARTNER_ACTIVATION_CFGS.nested_types = {}
+PARTNER_ACTIVATION_CFGS.enum_types = {}
+PARTNER_ACTIVATION_CFGS.fields = {PARTNER_ACTIVATION_CFGS_ITEMS_FIELD}
+PARTNER_ACTIVATION_CFGS.is_extendable = false
+PARTNER_ACTIVATION_CFGS.extensions = {}
+PARTNER_MOOD_CFG_ID_FIELD.name = "id"
+PARTNER_MOOD_CFG_ID_FIELD.full_name = ".ftcfg.partner_mood_cfg.id"
+PARTNER_MOOD_CFG_ID_FIELD.number = 1
+PARTNER_MOOD_CFG_ID_FIELD.index = 0
+PARTNER_MOOD_CFG_ID_FIELD.label = 2
+PARTNER_MOOD_CFG_ID_FIELD.has_default_value = false
+PARTNER_MOOD_CFG_ID_FIELD.default_value = 0
+PARTNER_MOOD_CFG_ID_FIELD.type = 5
+PARTNER_MOOD_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_MOOD_CFG_GIFTID_FIELD.name = "giftid"
+PARTNER_MOOD_CFG_GIFTID_FIELD.full_name = ".ftcfg.partner_mood_cfg.giftid"
+PARTNER_MOOD_CFG_GIFTID_FIELD.number = 2
+PARTNER_MOOD_CFG_GIFTID_FIELD.index = 1
+PARTNER_MOOD_CFG_GIFTID_FIELD.label = 3
+PARTNER_MOOD_CFG_GIFTID_FIELD.has_default_value = false
+PARTNER_MOOD_CFG_GIFTID_FIELD.default_value = {}
+PARTNER_MOOD_CFG_GIFTID_FIELD.type = 5
+PARTNER_MOOD_CFG_GIFTID_FIELD.cpp_type = 1
+
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.name = "moodtext"
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.full_name = ".ftcfg.partner_mood_cfg.moodtext"
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.number = 3
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.index = 2
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.label = 2
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.has_default_value = false
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.default_value = ""
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.type = 9
+PARTNER_MOOD_CFG_MOODTEXT_FIELD.cpp_type = 9
+
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.name = "multiple"
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.full_name = ".ftcfg.partner_mood_cfg.multiple"
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.number = 4
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.index = 3
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.label = 2
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.has_default_value = false
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.default_value = 0
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.type = 5
+PARTNER_MOOD_CFG_MULTIPLE_FIELD.cpp_type = 1
+
+PARTNER_MOOD_CFG.name = "partner_mood_cfg"
+PARTNER_MOOD_CFG.full_name = ".ftcfg.partner_mood_cfg"
+PARTNER_MOOD_CFG.nested_types = {}
+PARTNER_MOOD_CFG.enum_types = {}
+PARTNER_MOOD_CFG.fields = {PARTNER_MOOD_CFG_ID_FIELD, PARTNER_MOOD_CFG_GIFTID_FIELD, PARTNER_MOOD_CFG_MOODTEXT_FIELD, PARTNER_MOOD_CFG_MULTIPLE_FIELD}
+PARTNER_MOOD_CFG.is_extendable = false
+PARTNER_MOOD_CFG.extensions = {}
+PARTNER_MOOD_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_MOOD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_mood_cfgs.items"
+PARTNER_MOOD_CFGS_ITEMS_FIELD.number = 1
+PARTNER_MOOD_CFGS_ITEMS_FIELD.index = 0
+PARTNER_MOOD_CFGS_ITEMS_FIELD.label = 3
+PARTNER_MOOD_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_MOOD_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_MOOD_CFGS_ITEMS_FIELD.message_type = PARTNER_MOOD_CFG
+PARTNER_MOOD_CFGS_ITEMS_FIELD.type = 11
+PARTNER_MOOD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_MOOD_CFGS.name = "partner_mood_cfgs"
+PARTNER_MOOD_CFGS.full_name = ".ftcfg.partner_mood_cfgs"
+PARTNER_MOOD_CFGS.nested_types = {}
+PARTNER_MOOD_CFGS.enum_types = {}
+PARTNER_MOOD_CFGS.fields = {PARTNER_MOOD_CFGS_ITEMS_FIELD}
+PARTNER_MOOD_CFGS.is_extendable = false
+PARTNER_MOOD_CFGS.extensions = {}
+PARTNER_IMPRESSION_CFG_ID_FIELD.name = "id"
+PARTNER_IMPRESSION_CFG_ID_FIELD.full_name = ".ftcfg.partner_impression_cfg.id"
+PARTNER_IMPRESSION_CFG_ID_FIELD.number = 1
+PARTNER_IMPRESSION_CFG_ID_FIELD.index = 0
+PARTNER_IMPRESSION_CFG_ID_FIELD.label = 2
+PARTNER_IMPRESSION_CFG_ID_FIELD.has_default_value = false
+PARTNER_IMPRESSION_CFG_ID_FIELD.default_value = 0
+PARTNER_IMPRESSION_CFG_ID_FIELD.type = 5
+PARTNER_IMPRESSION_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.name = "partnerid"
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.full_name = ".ftcfg.partner_impression_cfg.partnerid"
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.number = 2
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.index = 1
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.label = 2
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.has_default_value = false
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.default_value = 0
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.type = 5
+PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.cpp_type = 1
+
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.name = "level"
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_impression_cfg.level"
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.number = 3
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.index = 2
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.label = 2
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.has_default_value = false
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.default_value = 0
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.type = 5
+PARTNER_IMPRESSION_CFG_LEVEL_FIELD.cpp_type = 1
+
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.name = "biographyid"
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.full_name = ".ftcfg.partner_impression_cfg.biographyid"
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.number = 4
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.index = 3
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.label = 2
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.has_default_value = false
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.default_value = 0
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.type = 5
+PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.cpp_type = 1
+
+PARTNER_IMPRESSION_CFG.name = "partner_impression_cfg"
+PARTNER_IMPRESSION_CFG.full_name = ".ftcfg.partner_impression_cfg"
+PARTNER_IMPRESSION_CFG.nested_types = {}
+PARTNER_IMPRESSION_CFG.enum_types = {}
+PARTNER_IMPRESSION_CFG.fields = {PARTNER_IMPRESSION_CFG_ID_FIELD, PARTNER_IMPRESSION_CFG_PARTNERID_FIELD, PARTNER_IMPRESSION_CFG_LEVEL_FIELD, PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD}
+PARTNER_IMPRESSION_CFG.is_extendable = false
+PARTNER_IMPRESSION_CFG.extensions = {}
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_impression_cfgs.items"
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.number = 1
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.index = 0
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.label = 3
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.message_type = PARTNER_IMPRESSION_CFG
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.type = 11
+PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_IMPRESSION_CFGS.name = "partner_impression_cfgs"
+PARTNER_IMPRESSION_CFGS.full_name = ".ftcfg.partner_impression_cfgs"
+PARTNER_IMPRESSION_CFGS.nested_types = {}
+PARTNER_IMPRESSION_CFGS.enum_types = {}
+PARTNER_IMPRESSION_CFGS.fields = {PARTNER_IMPRESSION_CFGS_ITEMS_FIELD}
+PARTNER_IMPRESSION_CFGS.is_extendable = false
+PARTNER_IMPRESSION_CFGS.extensions = {}
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.name = "id"
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.id"
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.number = 1
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.index = 0
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.label = 2
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.has_default_value = false
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.default_value = 0
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.type = 5
+PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.name = "type"
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.type"
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.number = 2
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.index = 1
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.label = 2
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.has_default_value = false
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.default_value = 0
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.type = 5
+PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.cpp_type = 1
+
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.name = "level"
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.level"
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.number = 3
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.index = 2
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.label = 2
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.has_default_value = false
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.default_value = 0
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.type = 5
+PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.cpp_type = 1
+
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.name = "exp"
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.exp"
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.number = 4
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.index = 3
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.label = 2
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.has_default_value = false
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.default_value = 0
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.type = 5
+PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.cpp_type = 1
+
+PARTNER_IMPRE_LEVELUP_CFG.name = "partner_impre_levelup_cfg"
+PARTNER_IMPRE_LEVELUP_CFG.full_name = ".ftcfg.partner_impre_levelup_cfg"
+PARTNER_IMPRE_LEVELUP_CFG.nested_types = {}
+PARTNER_IMPRE_LEVELUP_CFG.enum_types = {}
+PARTNER_IMPRE_LEVELUP_CFG.fields = {PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD, PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD, PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD, PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD}
+PARTNER_IMPRE_LEVELUP_CFG.is_extendable = false
+PARTNER_IMPRE_LEVELUP_CFG.extensions = {}
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfgs.items"
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.number = 1
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.index = 0
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.label = 3
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.message_type = PARTNER_IMPRE_LEVELUP_CFG
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.type = 11
+PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_IMPRE_LEVELUP_CFGS.name = "partner_impre_levelup_cfgs"
+PARTNER_IMPRE_LEVELUP_CFGS.full_name = ".ftcfg.partner_impre_levelup_cfgs"
+PARTNER_IMPRE_LEVELUP_CFGS.nested_types = {}
+PARTNER_IMPRE_LEVELUP_CFGS.enum_types = {}
+PARTNER_IMPRE_LEVELUP_CFGS.fields = {PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD}
+PARTNER_IMPRE_LEVELUP_CFGS.is_extendable = false
+PARTNER_IMPRE_LEVELUP_CFGS.extensions = {}
+PARTNER_MULTIPLE_CFG_ID_FIELD.name = "id"
+PARTNER_MULTIPLE_CFG_ID_FIELD.full_name = ".ftcfg.partner_multiple_cfg.id"
+PARTNER_MULTIPLE_CFG_ID_FIELD.number = 1
+PARTNER_MULTIPLE_CFG_ID_FIELD.index = 0
+PARTNER_MULTIPLE_CFG_ID_FIELD.label = 2
+PARTNER_MULTIPLE_CFG_ID_FIELD.has_default_value = false
+PARTNER_MULTIPLE_CFG_ID_FIELD.default_value = 0
+PARTNER_MULTIPLE_CFG_ID_FIELD.type = 5
+PARTNER_MULTIPLE_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.name = "clickgrowth"
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.full_name = ".ftcfg.partner_multiple_cfg.clickgrowth"
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.number = 2
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.index = 1
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.label = 2
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.has_default_value = false
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.default_value = 0
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.type = 5
+PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.cpp_type = 1
+
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.name = "probability"
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.full_name = ".ftcfg.partner_multiple_cfg.probability"
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.number = 3
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.index = 2
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.label = 3
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.has_default_value = false
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.default_value = {}
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.type = 5
+PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.cpp_type = 1
+
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.name = "multiple"
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.full_name = ".ftcfg.partner_multiple_cfg.multiple"
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.number = 4
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.index = 3
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.label = 3
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.has_default_value = false
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.default_value = {}
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.type = 5
+PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.cpp_type = 1
+
+PARTNER_MULTIPLE_CFG.name = "partner_multiple_cfg"
+PARTNER_MULTIPLE_CFG.full_name = ".ftcfg.partner_multiple_cfg"
+PARTNER_MULTIPLE_CFG.nested_types = {}
+PARTNER_MULTIPLE_CFG.enum_types = {}
+PARTNER_MULTIPLE_CFG.fields = {PARTNER_MULTIPLE_CFG_ID_FIELD, PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD, PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD, PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD}
+PARTNER_MULTIPLE_CFG.is_extendable = false
+PARTNER_MULTIPLE_CFG.extensions = {}
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_multiple_cfgs.items"
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.number = 1
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.index = 0
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.label = 3
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.message_type = PARTNER_MULTIPLE_CFG
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.type = 11
+PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_MULTIPLE_CFGS.name = "partner_multiple_cfgs"
+PARTNER_MULTIPLE_CFGS.full_name = ".ftcfg.partner_multiple_cfgs"
+PARTNER_MULTIPLE_CFGS.nested_types = {}
+PARTNER_MULTIPLE_CFGS.enum_types = {}
+PARTNER_MULTIPLE_CFGS.fields = {PARTNER_MULTIPLE_CFGS_ITEMS_FIELD}
+PARTNER_MULTIPLE_CFGS.is_extendable = false
+PARTNER_MULTIPLE_CFGS.extensions = {}
+PARTNER_STAR_CFG_ID_FIELD.name = "id"
+PARTNER_STAR_CFG_ID_FIELD.full_name = ".ftcfg.partner_star_cfg.id"
+PARTNER_STAR_CFG_ID_FIELD.number = 1
+PARTNER_STAR_CFG_ID_FIELD.index = 0
+PARTNER_STAR_CFG_ID_FIELD.label = 2
+PARTNER_STAR_CFG_ID_FIELD.has_default_value = false
+PARTNER_STAR_CFG_ID_FIELD.default_value = 0
+PARTNER_STAR_CFG_ID_FIELD.type = 5
+PARTNER_STAR_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.name = "partner_type"
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.full_name = ".ftcfg.partner_star_cfg.partner_type"
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.number = 2
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.index = 1
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.label = 2
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.has_default_value = false
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.default_value = 0
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.type = 5
+PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STAR_FIELD.name = "star"
+PARTNER_STAR_CFG_STAR_FIELD.full_name = ".ftcfg.partner_star_cfg.star"
+PARTNER_STAR_CFG_STAR_FIELD.number = 3
+PARTNER_STAR_CFG_STAR_FIELD.index = 2
+PARTNER_STAR_CFG_STAR_FIELD.label = 2
+PARTNER_STAR_CFG_STAR_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STAR_FIELD.default_value = 0
+PARTNER_STAR_CFG_STAR_FIELD.type = 5
+PARTNER_STAR_CFG_STAR_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.name = "study_group"
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.full_name = ".ftcfg.partner_star_cfg.study_group"
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.number = 4
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.index = 3
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.label = 2
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.default_value = 0
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.type = 5
+PARTNER_STAR_CFG_STUDY_GROUP_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.name = "study_limit"
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.full_name = ".ftcfg.partner_star_cfg.study_limit"
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.number = 5
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.index = 4
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.label = 2
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.default_value = 0
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.type = 5
+PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STUDY_FIELD.name = "study"
+PARTNER_STAR_CFG_STUDY_FIELD.full_name = ".ftcfg.partner_star_cfg.study"
+PARTNER_STAR_CFG_STUDY_FIELD.number = 6
+PARTNER_STAR_CFG_STUDY_FIELD.index = 5
+PARTNER_STAR_CFG_STUDY_FIELD.label = 2
+PARTNER_STAR_CFG_STUDY_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STUDY_FIELD.default_value = 0
+PARTNER_STAR_CFG_STUDY_FIELD.type = 5
+PARTNER_STAR_CFG_STUDY_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.name = "study_item"
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.study_item"
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.number = 7
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.index = 6
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.label = 2
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.default_value = 0
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.type = 5
+PARTNER_STAR_CFG_STUDY_ITEM_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STUDY_COST_FIELD.name = "study_cost"
+PARTNER_STAR_CFG_STUDY_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.study_cost"
+PARTNER_STAR_CFG_STUDY_COST_FIELD.number = 8
+PARTNER_STAR_CFG_STUDY_COST_FIELD.index = 7
+PARTNER_STAR_CFG_STUDY_COST_FIELD.label = 2
+PARTNER_STAR_CFG_STUDY_COST_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STUDY_COST_FIELD.default_value = 0
+PARTNER_STAR_CFG_STUDY_COST_FIELD.type = 5
+PARTNER_STAR_CFG_STUDY_COST_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.name = "exclude_item"
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.exclude_item"
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.number = 9
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.index = 8
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.label = 2
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.has_default_value = false
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.default_value = 0
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.type = 5
+PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.name = "exclude_cost"
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.exclude_cost"
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.number = 10
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.index = 9
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.label = 2
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.has_default_value = false
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.default_value = 0
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.type = 5
+PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.name = "star_prop1"
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop1"
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.number = 11
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.index = 10
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.label = 2
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.default_value = ""
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.type = 9
+PARTNER_STAR_CFG_STAR_PROP1_FIELD.cpp_type = 9
+
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.name = "star_prop2"
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop2"
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.number = 12
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.index = 11
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.label = 2
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.default_value = ""
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.type = 9
+PARTNER_STAR_CFG_STAR_PROP2_FIELD.cpp_type = 9
+
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.name = "star_prop3"
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop3"
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.number = 13
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.index = 12
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.label = 2
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.has_default_value = false
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.default_value = ""
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.type = 9
+PARTNER_STAR_CFG_STAR_PROP3_FIELD.cpp_type = 9
+
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.name = "upstar_item"
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.upstar_item"
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.number = 14
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.index = 13
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.label = 2
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.has_default_value = false
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.default_value = 0
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.type = 5
+PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.name = "upstar_cost"
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.upstar_cost"
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.number = 15
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.index = 14
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.label = 2
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.has_default_value = false
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.default_value = 0
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.type = 5
+PARTNER_STAR_CFG_UPSTAR_COST_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.name = "rebuild_item"
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.rebuild_item"
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.number = 16
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.index = 15
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.label = 2
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.has_default_value = false
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.default_value = 0
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.type = 5
+PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.name = "rebuild_cost"
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.rebuild_cost"
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.number = 17
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.index = 16
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.label = 2
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.has_default_value = false
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.default_value = 0
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.type = 5
+PARTNER_STAR_CFG_REBUILD_COST_FIELD.cpp_type = 1
+
+PARTNER_STAR_CFG.name = "partner_star_cfg"
+PARTNER_STAR_CFG.full_name = ".ftcfg.partner_star_cfg"
+PARTNER_STAR_CFG.nested_types = {}
+PARTNER_STAR_CFG.enum_types = {}
+PARTNER_STAR_CFG.fields = {PARTNER_STAR_CFG_ID_FIELD, PARTNER_STAR_CFG_PARTNER_TYPE_FIELD, PARTNER_STAR_CFG_STAR_FIELD, PARTNER_STAR_CFG_STUDY_GROUP_FIELD, PARTNER_STAR_CFG_STUDY_LIMIT_FIELD, PARTNER_STAR_CFG_STUDY_FIELD, PARTNER_STAR_CFG_STUDY_ITEM_FIELD, PARTNER_STAR_CFG_STUDY_COST_FIELD, PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD, PARTNER_STAR_CFG_EXCLUDE_COST_FIELD, PARTNER_STAR_CFG_STAR_PROP1_FIELD, PARTNER_STAR_CFG_STAR_PROP2_FIELD, PARTNER_STAR_CFG_STAR_PROP3_FIELD, PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD, PARTNER_STAR_CFG_UPSTAR_COST_FIELD, PARTNER_STAR_CFG_REBUILD_ITEM_FIELD, PARTNER_STAR_CFG_REBUILD_COST_FIELD}
+PARTNER_STAR_CFG.is_extendable = false
+PARTNER_STAR_CFG.extensions = {}
+PARTNER_STAR_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_STAR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_star_cfgs.items"
+PARTNER_STAR_CFGS_ITEMS_FIELD.number = 1
+PARTNER_STAR_CFGS_ITEMS_FIELD.index = 0
+PARTNER_STAR_CFGS_ITEMS_FIELD.label = 3
+PARTNER_STAR_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_STAR_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_STAR_CFGS_ITEMS_FIELD.message_type = PARTNER_STAR_CFG
+PARTNER_STAR_CFGS_ITEMS_FIELD.type = 11
+PARTNER_STAR_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_STAR_CFGS.name = "partner_star_cfgs"
+PARTNER_STAR_CFGS.full_name = ".ftcfg.partner_star_cfgs"
+PARTNER_STAR_CFGS.nested_types = {}
+PARTNER_STAR_CFGS.enum_types = {}
+PARTNER_STAR_CFGS.fields = {PARTNER_STAR_CFGS_ITEMS_FIELD}
+PARTNER_STAR_CFGS.is_extendable = false
+PARTNER_STAR_CFGS.extensions = {}
+PARTNER_STUDY_CFG_ID_FIELD.name = "id"
+PARTNER_STUDY_CFG_ID_FIELD.full_name = ".ftcfg.partner_study_cfg.id"
+PARTNER_STUDY_CFG_ID_FIELD.number = 1
+PARTNER_STUDY_CFG_ID_FIELD.index = 0
+PARTNER_STUDY_CFG_ID_FIELD.label = 2
+PARTNER_STUDY_CFG_ID_FIELD.has_default_value = false
+PARTNER_STUDY_CFG_ID_FIELD.default_value = 0
+PARTNER_STUDY_CFG_ID_FIELD.type = 5
+PARTNER_STUDY_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.name = "study_group"
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.full_name = ".ftcfg.partner_study_cfg.study_group"
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.number = 2
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.index = 1
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.label = 2
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.has_default_value = false
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.default_value = 0
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.type = 5
+PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.cpp_type = 1
+
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.name = "study_prop"
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.full_name = ".ftcfg.partner_study_cfg.study_prop"
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.number = 3
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.index = 2
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.label = 2
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.has_default_value = false
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.default_value = ""
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.type = 9
+PARTNER_STUDY_CFG_STUDY_PROP_FIELD.cpp_type = 9
+
+PARTNER_STUDY_CFG.name = "partner_study_cfg"
+PARTNER_STUDY_CFG.full_name = ".ftcfg.partner_study_cfg"
+PARTNER_STUDY_CFG.nested_types = {}
+PARTNER_STUDY_CFG.enum_types = {}
+PARTNER_STUDY_CFG.fields = {PARTNER_STUDY_CFG_ID_FIELD, PARTNER_STUDY_CFG_STUDY_GROUP_FIELD, PARTNER_STUDY_CFG_STUDY_PROP_FIELD}
+PARTNER_STUDY_CFG.is_extendable = false
+PARTNER_STUDY_CFG.extensions = {}
+PARTNER_STUDY_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_STUDY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_study_cfgs.items"
+PARTNER_STUDY_CFGS_ITEMS_FIELD.number = 1
+PARTNER_STUDY_CFGS_ITEMS_FIELD.index = 0
+PARTNER_STUDY_CFGS_ITEMS_FIELD.label = 3
+PARTNER_STUDY_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_STUDY_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_STUDY_CFGS_ITEMS_FIELD.message_type = PARTNER_STUDY_CFG
+PARTNER_STUDY_CFGS_ITEMS_FIELD.type = 11
+PARTNER_STUDY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_STUDY_CFGS.name = "partner_study_cfgs"
+PARTNER_STUDY_CFGS.full_name = ".ftcfg.partner_study_cfgs"
+PARTNER_STUDY_CFGS.nested_types = {}
+PARTNER_STUDY_CFGS.enum_types = {}
+PARTNER_STUDY_CFGS.fields = {PARTNER_STUDY_CFGS_ITEMS_FIELD}
+PARTNER_STUDY_CFGS.is_extendable = false
+PARTNER_STUDY_CFGS.extensions = {}
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.name = "id"
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.id"
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.number = 1
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.index = 0
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.label = 2
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.default_value = 0
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.type = 13
+PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.cpp_type = 3
+
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.name = "fragment_num"
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.fragment_num"
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.number = 2
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.index = 1
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.label = 2
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.default_value = 0
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.type = 5
+PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.cpp_type = 1
+
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.name = "need_fragment_num"
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.need_fragment_num"
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.number = 3
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.index = 2
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.label = 2
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.default_value = 0
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.type = 5
+PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.cpp_type = 1
+
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.name = "currency_type"
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.currency_type"
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.number = 4
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.index = 3
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.label = 2
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.default_value = 0
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.type = 5
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.cpp_type = 1
+
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.name = "currency_num"
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.currency_num"
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.number = 5
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.index = 4
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.label = 2
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.default_value = 0
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.type = 5
+PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.cpp_type = 1
+
+PARTNER_ITEM_COMPOUND_CFG.name = "partner_item_compound_cfg"
+PARTNER_ITEM_COMPOUND_CFG.full_name = ".ftcfg.partner_item_compound_cfg"
+PARTNER_ITEM_COMPOUND_CFG.nested_types = {}
+PARTNER_ITEM_COMPOUND_CFG.enum_types = {}
+PARTNER_ITEM_COMPOUND_CFG.fields = {PARTNER_ITEM_COMPOUND_CFG_ID_FIELD, PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD, PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD, PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD, PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD}
+PARTNER_ITEM_COMPOUND_CFG.is_extendable = false
+PARTNER_ITEM_COMPOUND_CFG.extensions = {}
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_item_compound_cfgs.items"
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.number = 1
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.index = 0
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.label = 3
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.message_type = PARTNER_ITEM_COMPOUND_CFG
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.type = 11
+PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_ITEM_COMPOUND_CFGS.name = "partner_item_compound_cfgs"
+PARTNER_ITEM_COMPOUND_CFGS.full_name = ".ftcfg.partner_item_compound_cfgs"
+PARTNER_ITEM_COMPOUND_CFGS.nested_types = {}
+PARTNER_ITEM_COMPOUND_CFGS.enum_types = {}
+PARTNER_ITEM_COMPOUND_CFGS.fields = {PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD}
+PARTNER_ITEM_COMPOUND_CFGS.is_extendable = false
+PARTNER_ITEM_COMPOUND_CFGS.extensions = {}
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.name = "key"
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.full_name = ".ftcfg.partenr_experience_cfg.key"
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.number = 1
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.index = 0
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.label = 2
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.default_value = 0
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.type = 13
+PARTENR_EXPERIENCE_CFG_KEY_FIELD.cpp_type = 3
+
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.name = "cost_item"
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.cost_item"
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.number = 2
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.index = 1
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.label = 2
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.default_value = 0
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.type = 5
+PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.cpp_type = 1
+
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.name = "cost_item_num"
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.cost_item_num"
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.number = 3
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.index = 2
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.label = 2
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.default_value = 0
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.type = 5
+PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.cpp_type = 1
+
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.name = "experience_num"
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.experience_num"
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.number = 4
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.index = 3
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.label = 2
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.default_value = 0
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.type = 5
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.cpp_type = 1
+
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.name = "experience_event"
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.full_name = ".ftcfg.partenr_experience_cfg.experience_event"
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.number = 5
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.index = 4
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.label = 3
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.default_value = {}
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.type = 5
+PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.cpp_type = 1
+
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.name = "event_type"
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.partenr_experience_cfg.event_type"
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.number = 6
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.index = 5
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.label = 3
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.default_value = {}
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.type = 5
+PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.cpp_type = 1
+
+PARTENR_EXPERIENCE_CFG.name = "partenr_experience_cfg"
+PARTENR_EXPERIENCE_CFG.full_name = ".ftcfg.partenr_experience_cfg"
+PARTENR_EXPERIENCE_CFG.nested_types = {}
+PARTENR_EXPERIENCE_CFG.enum_types = {}
+PARTENR_EXPERIENCE_CFG.fields = {PARTENR_EXPERIENCE_CFG_KEY_FIELD, PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD, PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD, PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD, PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD, PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD}
+PARTENR_EXPERIENCE_CFG.is_extendable = false
+PARTENR_EXPERIENCE_CFG.extensions = {}
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.name = "items"
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partenr_experience_cfgs.items"
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.number = 1
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.index = 0
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.label = 3
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.has_default_value = false
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.default_value = {}
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.message_type = PARTENR_EXPERIENCE_CFG
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.type = 11
+PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTENR_EXPERIENCE_CFGS.name = "partenr_experience_cfgs"
+PARTENR_EXPERIENCE_CFGS.full_name = ".ftcfg.partenr_experience_cfgs"
+PARTENR_EXPERIENCE_CFGS.nested_types = {}
+PARTENR_EXPERIENCE_CFGS.enum_types = {}
+PARTENR_EXPERIENCE_CFGS.fields = {PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD}
+PARTENR_EXPERIENCE_CFGS.is_extendable = false
+PARTENR_EXPERIENCE_CFGS.extensions = {}
+PARTNER_BASE_CFG_ID_FIELD.name = "id"
+PARTNER_BASE_CFG_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.id"
+PARTNER_BASE_CFG_ID_FIELD.number = 1
+PARTNER_BASE_CFG_ID_FIELD.index = 0
+PARTNER_BASE_CFG_ID_FIELD.label = 2
+PARTNER_BASE_CFG_ID_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ID_FIELD.default_value = 0
+PARTNER_BASE_CFG_ID_FIELD.type = 13
+PARTNER_BASE_CFG_ID_FIELD.cpp_type = 3
+
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.name = "show_name"
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.partner_base_cfg.show_name"
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.number = 2
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.index = 1
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.label = 2
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.has_default_value = false
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.default_value = ""
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.type = 9
+PARTNER_BASE_CFG_SHOW_NAME_FIELD.cpp_type = 9
+
+PARTNER_BASE_CFG_LOCK_FIELD.name = "lock"
+PARTNER_BASE_CFG_LOCK_FIELD.full_name = ".ftcfg.partner_base_cfg.lock"
+PARTNER_BASE_CFG_LOCK_FIELD.number = 3
+PARTNER_BASE_CFG_LOCK_FIELD.index = 2
+PARTNER_BASE_CFG_LOCK_FIELD.label = 2
+PARTNER_BASE_CFG_LOCK_FIELD.has_default_value = false
+PARTNER_BASE_CFG_LOCK_FIELD.default_value = 0
+PARTNER_BASE_CFG_LOCK_FIELD.type = 5
+PARTNER_BASE_CFG_LOCK_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_HEAD_FIELD.name = "head"
+PARTNER_BASE_CFG_HEAD_FIELD.full_name = ".ftcfg.partner_base_cfg.head"
+PARTNER_BASE_CFG_HEAD_FIELD.number = 4
+PARTNER_BASE_CFG_HEAD_FIELD.index = 3
+PARTNER_BASE_CFG_HEAD_FIELD.label = 2
+PARTNER_BASE_CFG_HEAD_FIELD.has_default_value = false
+PARTNER_BASE_CFG_HEAD_FIELD.default_value = 0
+PARTNER_BASE_CFG_HEAD_FIELD.type = 5
+PARTNER_BASE_CFG_HEAD_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_DRAW_FIELD.name = "draw"
+PARTNER_BASE_CFG_DRAW_FIELD.full_name = ".ftcfg.partner_base_cfg.draw"
+PARTNER_BASE_CFG_DRAW_FIELD.number = 5
+PARTNER_BASE_CFG_DRAW_FIELD.index = 4
+PARTNER_BASE_CFG_DRAW_FIELD.label = 2
+PARTNER_BASE_CFG_DRAW_FIELD.has_default_value = false
+PARTNER_BASE_CFG_DRAW_FIELD.default_value = 0
+PARTNER_BASE_CFG_DRAW_FIELD.type = 5
+PARTNER_BASE_CFG_DRAW_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_TYPE_FIELD.name = "type"
+PARTNER_BASE_CFG_TYPE_FIELD.full_name = ".ftcfg.partner_base_cfg.type"
+PARTNER_BASE_CFG_TYPE_FIELD.number = 6
+PARTNER_BASE_CFG_TYPE_FIELD.index = 5
+PARTNER_BASE_CFG_TYPE_FIELD.label = 2
+PARTNER_BASE_CFG_TYPE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_TYPE_FIELD.default_value = 0
+PARTNER_BASE_CFG_TYPE_FIELD.type = 5
+PARTNER_BASE_CFG_TYPE_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_POKEDEX_FIELD.name = "pokedex"
+PARTNER_BASE_CFG_POKEDEX_FIELD.full_name = ".ftcfg.partner_base_cfg.pokedex"
+PARTNER_BASE_CFG_POKEDEX_FIELD.number = 7
+PARTNER_BASE_CFG_POKEDEX_FIELD.index = 6
+PARTNER_BASE_CFG_POKEDEX_FIELD.label = 2
+PARTNER_BASE_CFG_POKEDEX_FIELD.has_default_value = false
+PARTNER_BASE_CFG_POKEDEX_FIELD.default_value = 0
+PARTNER_BASE_CFG_POKEDEX_FIELD.type = 5
+PARTNER_BASE_CFG_POKEDEX_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_SKILLS_FIELD.name = "skills"
+PARTNER_BASE_CFG_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.skills"
+PARTNER_BASE_CFG_SKILLS_FIELD.number = 8
+PARTNER_BASE_CFG_SKILLS_FIELD.index = 7
+PARTNER_BASE_CFG_SKILLS_FIELD.label = 3
+PARTNER_BASE_CFG_SKILLS_FIELD.has_default_value = false
+PARTNER_BASE_CFG_SKILLS_FIELD.default_value = {}
+PARTNER_BASE_CFG_SKILLS_FIELD.type = 5
+PARTNER_BASE_CFG_SKILLS_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_AVATAR_FIELD.name = "avatar"
+PARTNER_BASE_CFG_AVATAR_FIELD.full_name = ".ftcfg.partner_base_cfg.avatar"
+PARTNER_BASE_CFG_AVATAR_FIELD.number = 9
+PARTNER_BASE_CFG_AVATAR_FIELD.index = 8
+PARTNER_BASE_CFG_AVATAR_FIELD.label = 2
+PARTNER_BASE_CFG_AVATAR_FIELD.has_default_value = false
+PARTNER_BASE_CFG_AVATAR_FIELD.default_value = 0
+PARTNER_BASE_CFG_AVATAR_FIELD.type = 5
+PARTNER_BASE_CFG_AVATAR_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.name = "act_idle"
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.full_name = ".ftcfg.partner_base_cfg.act_idle"
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.number = 10
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.index = 9
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.label = 2
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.default_value = ""
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.type = 9
+PARTNER_BASE_CFG_ACT_IDLE_FIELD.cpp_type = 9
+
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.name = "act_move"
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.full_name = ".ftcfg.partner_base_cfg.act_move"
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.number = 11
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.index = 10
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.label = 2
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.default_value = ""
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.type = 9
+PARTNER_BASE_CFG_ACT_MOVE_FIELD.cpp_type = 9
+
+PARTNER_BASE_CFG_ACT_BORN_FIELD.name = "act_born"
+PARTNER_BASE_CFG_ACT_BORN_FIELD.full_name = ".ftcfg.partner_base_cfg.act_born"
+PARTNER_BASE_CFG_ACT_BORN_FIELD.number = 12
+PARTNER_BASE_CFG_ACT_BORN_FIELD.index = 11
+PARTNER_BASE_CFG_ACT_BORN_FIELD.label = 2
+PARTNER_BASE_CFG_ACT_BORN_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ACT_BORN_FIELD.default_value = ""
+PARTNER_BASE_CFG_ACT_BORN_FIELD.type = 9
+PARTNER_BASE_CFG_ACT_BORN_FIELD.cpp_type = 9
+
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.name = "act_dead"
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.full_name = ".ftcfg.partner_base_cfg.act_dead"
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.number = 13
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.index = 12
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.label = 2
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.default_value = ""
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.type = 9
+PARTNER_BASE_CFG_ACT_DEAD_FIELD.cpp_type = 9
+
+PARTNER_BASE_CFG_RESURRECTION_FIELD.name = "resurrection"
+PARTNER_BASE_CFG_RESURRECTION_FIELD.full_name = ".ftcfg.partner_base_cfg.resurrection"
+PARTNER_BASE_CFG_RESURRECTION_FIELD.number = 14
+PARTNER_BASE_CFG_RESURRECTION_FIELD.index = 13
+PARTNER_BASE_CFG_RESURRECTION_FIELD.label = 2
+PARTNER_BASE_CFG_RESURRECTION_FIELD.has_default_value = false
+PARTNER_BASE_CFG_RESURRECTION_FIELD.default_value = 0
+PARTNER_BASE_CFG_RESURRECTION_FIELD.type = 5
+PARTNER_BASE_CFG_RESURRECTION_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.name = "addition_ratio"
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.full_name = ".ftcfg.partner_base_cfg.addition_ratio"
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.number = 15
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.index = 14
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.label = 2
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.default_value = 0.0
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.type = 1
+PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.cpp_type = 5
+
+PARTNER_BASE_CFG_QUALITY_FIELD.name = "quality"
+PARTNER_BASE_CFG_QUALITY_FIELD.full_name = ".ftcfg.partner_base_cfg.quality"
+PARTNER_BASE_CFG_QUALITY_FIELD.number = 16
+PARTNER_BASE_CFG_QUALITY_FIELD.index = 15
+PARTNER_BASE_CFG_QUALITY_FIELD.label = 2
+PARTNER_BASE_CFG_QUALITY_FIELD.has_default_value = false
+PARTNER_BASE_CFG_QUALITY_FIELD.default_value = 0
+PARTNER_BASE_CFG_QUALITY_FIELD.type = 5
+PARTNER_BASE_CFG_QUALITY_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.name = "growth_cap"
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.full_name = ".ftcfg.partner_base_cfg.growth_cap"
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.number = 17
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.index = 16
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.label = 3
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.has_default_value = false
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.default_value = {}
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.type = 5
+PARTNER_BASE_CFG_GROWTH_CAP_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.name = "use_item_id"
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.use_item_id"
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.number = 18
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.index = 17
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.label = 2
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.has_default_value = false
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.default_value = 0
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.type = 13
+PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.cpp_type = 3
+
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.name = "use_item_num"
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.use_item_num"
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.number = 19
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.index = 18
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.label = 2
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.has_default_value = false
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.default_value = 0
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.type = 5
+PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.name = "can_use_omnipotent"
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.full_name = ".ftcfg.partner_base_cfg.can_use_omnipotent"
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.number = 20
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.index = 19
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.label = 2
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.has_default_value = false
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.default_value = 0
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.type = 5
+PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_END_SKILLS_FIELD.name = "end_skills"
+PARTNER_BASE_CFG_END_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.end_skills"
+PARTNER_BASE_CFG_END_SKILLS_FIELD.number = 21
+PARTNER_BASE_CFG_END_SKILLS_FIELD.index = 20
+PARTNER_BASE_CFG_END_SKILLS_FIELD.label = 2
+PARTNER_BASE_CFG_END_SKILLS_FIELD.has_default_value = false
+PARTNER_BASE_CFG_END_SKILLS_FIELD.default_value = 0
+PARTNER_BASE_CFG_END_SKILLS_FIELD.type = 5
+PARTNER_BASE_CFG_END_SKILLS_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.name = "passive_skills"
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.passive_skills"
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.number = 22
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.index = 21
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.label = 3
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.has_default_value = false
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.default_value = {}
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.type = 5
+PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.name = "experience_max"
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.full_name = ".ftcfg.partner_base_cfg.experience_max"
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.number = 23
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.index = 22
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.label = 2
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.has_default_value = false
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.default_value = 0
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.type = 5
+PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.name = "resources_type"
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_type"
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.number = 24
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.index = 23
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.label = 2
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.default_value = 0
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.type = 5
+PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.name = "resources_num"
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_num"
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.number = 25
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.index = 24
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.label = 2
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.has_default_value = false
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.default_value = 0
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.type = 5
+PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.name = "resources_id"
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_id"
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.number = 26
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.index = 25
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.label = 2
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.has_default_value = false
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.default_value = 0
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.type = 5
+PARTNER_BASE_CFG_RESOURCES_ID_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.name = "items_id"
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.items_id"
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.number = 27
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.index = 26
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.label = 3
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.default_value = {}
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.type = 5
+PARTNER_BASE_CFG_ITEMS_ID_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.name = "items_count"
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.full_name = ".ftcfg.partner_base_cfg.items_count"
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.number = 28
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.index = 27
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.label = 3
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.has_default_value = false
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.default_value = {}
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.type = 5
+PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_RANGE_FIELD.name = "range"
+PARTNER_BASE_CFG_RANGE_FIELD.full_name = ".ftcfg.partner_base_cfg.range"
+PARTNER_BASE_CFG_RANGE_FIELD.number = 29
+PARTNER_BASE_CFG_RANGE_FIELD.index = 28
+PARTNER_BASE_CFG_RANGE_FIELD.label = 2
+PARTNER_BASE_CFG_RANGE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_RANGE_FIELD.default_value = 0
+PARTNER_BASE_CFG_RANGE_FIELD.type = 5
+PARTNER_BASE_CFG_RANGE_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.name = "fetters_num"
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.fetters_num"
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.number = 30
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.index = 29
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.label = 2
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.has_default_value = false
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.default_value = 0
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.type = 5
+PARTNER_BASE_CFG_FETTERS_NUM_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.name = "partner_id"
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.partner_id"
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.number = 31
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.index = 30
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.label = 2
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.has_default_value = false
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.default_value = 0
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.type = 5
+PARTNER_BASE_CFG_PARTNER_ID_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG_IS_RARE_FIELD.name = "is_rare"
+PARTNER_BASE_CFG_IS_RARE_FIELD.full_name = ".ftcfg.partner_base_cfg.is_rare"
+PARTNER_BASE_CFG_IS_RARE_FIELD.number = 32
+PARTNER_BASE_CFG_IS_RARE_FIELD.index = 31
+PARTNER_BASE_CFG_IS_RARE_FIELD.label = 2
+PARTNER_BASE_CFG_IS_RARE_FIELD.has_default_value = false
+PARTNER_BASE_CFG_IS_RARE_FIELD.default_value = false
+PARTNER_BASE_CFG_IS_RARE_FIELD.type = 8
+PARTNER_BASE_CFG_IS_RARE_FIELD.cpp_type = 7
+
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.name = "divine_group"
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.full_name = ".ftcfg.partner_base_cfg.divine_group"
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.number = 33
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.index = 32
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.label = 2
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.has_default_value = false
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.default_value = 0
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.type = 5
+PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.cpp_type = 1
+
+PARTNER_BASE_CFG.name = "partner_base_cfg"
+PARTNER_BASE_CFG.full_name = ".ftcfg.partner_base_cfg"
+PARTNER_BASE_CFG.nested_types = {}
+PARTNER_BASE_CFG.enum_types = {}
+PARTNER_BASE_CFG.fields = {PARTNER_BASE_CFG_ID_FIELD, PARTNER_BASE_CFG_SHOW_NAME_FIELD, PARTNER_BASE_CFG_LOCK_FIELD, PARTNER_BASE_CFG_HEAD_FIELD, PARTNER_BASE_CFG_DRAW_FIELD, PARTNER_BASE_CFG_TYPE_FIELD, PARTNER_BASE_CFG_POKEDEX_FIELD, PARTNER_BASE_CFG_SKILLS_FIELD, PARTNER_BASE_CFG_AVATAR_FIELD, PARTNER_BASE_CFG_ACT_IDLE_FIELD, PARTNER_BASE_CFG_ACT_MOVE_FIELD, PARTNER_BASE_CFG_ACT_BORN_FIELD, PARTNER_BASE_CFG_ACT_DEAD_FIELD, PARTNER_BASE_CFG_RESURRECTION_FIELD, PARTNER_BASE_CFG_ADDITION_RATIO_FIELD, PARTNER_BASE_CFG_QUALITY_FIELD, PARTNER_BASE_CFG_GROWTH_CAP_FIELD, PARTNER_BASE_CFG_USE_ITEM_ID_FIELD, PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD, PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD, PARTNER_BASE_CFG_END_SKILLS_FIELD, PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD, PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD, PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD, PARTNER_BASE_CFG_RESOURCES_NUM_FIELD, PARTNER_BASE_CFG_RESOURCES_ID_FIELD, PARTNER_BASE_CFG_ITEMS_ID_FIELD, PARTNER_BASE_CFG_ITEMS_COUNT_FIELD, PARTNER_BASE_CFG_RANGE_FIELD, PARTNER_BASE_CFG_FETTERS_NUM_FIELD, PARTNER_BASE_CFG_PARTNER_ID_FIELD, PARTNER_BASE_CFG_IS_RARE_FIELD, PARTNER_BASE_CFG_DIVINE_GROUP_FIELD}
+PARTNER_BASE_CFG.is_extendable = false
+PARTNER_BASE_CFG.extensions = {}
+PARTNER_BASE_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_base_cfgs.items"
+PARTNER_BASE_CFGS_ITEMS_FIELD.number = 1
+PARTNER_BASE_CFGS_ITEMS_FIELD.index = 0
+PARTNER_BASE_CFGS_ITEMS_FIELD.label = 3
+PARTNER_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_BASE_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_BASE_CFGS_ITEMS_FIELD.message_type = PARTNER_BASE_CFG
+PARTNER_BASE_CFGS_ITEMS_FIELD.type = 11
+PARTNER_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_BASE_CFGS.name = "partner_base_cfgs"
+PARTNER_BASE_CFGS.full_name = ".ftcfg.partner_base_cfgs"
+PARTNER_BASE_CFGS.nested_types = {}
+PARTNER_BASE_CFGS.enum_types = {}
+PARTNER_BASE_CFGS.fields = {PARTNER_BASE_CFGS_ITEMS_FIELD}
+PARTNER_BASE_CFGS.is_extendable = false
+PARTNER_BASE_CFGS.extensions = {}
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.name = "id"
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.full_name = ".ftcfg.partner_attribute_cfg.id"
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.number = 1
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.index = 0
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.label = 2
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.has_default_value = false
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.default_value = 0
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.type = 5
+PARTNER_ATTRIBUTE_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.name = "levelup_exp"
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.full_name = ".ftcfg.partner_attribute_cfg.levelup_exp"
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.number = 2
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.index = 1
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.label = 2
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.has_default_value = false
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.default_value = 0.0
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.type = 1
+PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.cpp_type = 5
+
+PARTNER_ATTRIBUTE_CFG.name = "partner_attribute_cfg"
+PARTNER_ATTRIBUTE_CFG.full_name = ".ftcfg.partner_attribute_cfg"
+PARTNER_ATTRIBUTE_CFG.nested_types = {}
+PARTNER_ATTRIBUTE_CFG.enum_types = {}
+PARTNER_ATTRIBUTE_CFG.fields = {PARTNER_ATTRIBUTE_CFG_ID_FIELD, PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD}
+PARTNER_ATTRIBUTE_CFG.is_extendable = false
+PARTNER_ATTRIBUTE_CFG.extensions = {}
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_attribute_cfgs.items"
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.number = 1
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.index = 0
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.label = 3
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.message_type = PARTNER_ATTRIBUTE_CFG
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.type = 11
+PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_ATTRIBUTE_CFGS.name = "partner_attribute_cfgs"
+PARTNER_ATTRIBUTE_CFGS.full_name = ".ftcfg.partner_attribute_cfgs"
+PARTNER_ATTRIBUTE_CFGS.nested_types = {}
+PARTNER_ATTRIBUTE_CFGS.enum_types = {}
+PARTNER_ATTRIBUTE_CFGS.fields = {PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD}
+PARTNER_ATTRIBUTE_CFGS.is_extendable = false
+PARTNER_ATTRIBUTE_CFGS.extensions = {}
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.name = "id"
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.id"
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.number = 1
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.index = 0
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.default_value = 0
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.name = "name"
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.name"
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.number = 2
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.index = 1
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.default_value = ""
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.type = 9
+PARTNER_PASSIVESKILL_CFG_NAME_FIELD.cpp_type = 9
+
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.name = "level"
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.level"
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.number = 3
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.index = 2
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.default_value = 0
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.name = "icon"
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.icon"
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.number = 4
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.index = 3
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.default_value = 0
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_ICON_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.name = "pokedex_type"
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.pokedex_type"
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.number = 5
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.index = 4
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.label = 3
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.default_value = {}
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.name = "prop_type"
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.prop_type"
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.number = 6
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.index = 5
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.label = 3
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.default_value = {}
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.type = 14
+PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.name = "att_type"
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.att_type"
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.number = 7
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.index = 6
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.label = 3
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.default_value = {}
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.type = 14
+PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.cpp_type = 8
+
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.name = "att_value"
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.att_value"
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.number = 8
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.index = 7
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.label = 3
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.default_value = {}
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.type = 2
+PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.cpp_type = 6
+
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.name = "desc"
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.desc"
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.number = 9
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.index = 8
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.default_value = ""
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.type = 9
+PARTNER_PASSIVESKILL_CFG_DESC_FIELD.cpp_type = 9
+
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.name = "pokedex_desc"
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.pokedex_desc"
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.number = 10
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.index = 9
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.default_value = ""
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.type = 9
+PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.cpp_type = 9
+
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.name = "next_level"
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.next_level"
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.number = 11
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.index = 10
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.default_value = 0
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.name = "upper_level"
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.upper_level"
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.number = 12
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.index = 11
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.label = 2
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.default_value = 0
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.type = 5
+PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.cpp_type = 1
+
+PARTNER_PASSIVESKILL_CFG.name = "partner_passiveskill_cfg"
+PARTNER_PASSIVESKILL_CFG.full_name = ".ftcfg.partner_passiveskill_cfg"
+PARTNER_PASSIVESKILL_CFG.nested_types = {}
+PARTNER_PASSIVESKILL_CFG.enum_types = {}
+PARTNER_PASSIVESKILL_CFG.fields = {PARTNER_PASSIVESKILL_CFG_ID_FIELD, PARTNER_PASSIVESKILL_CFG_NAME_FIELD, PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD, PARTNER_PASSIVESKILL_CFG_ICON_FIELD, PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD, PARTNER_PASSIVESKILL_CFG_DESC_FIELD, PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD, PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD, PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD}
+PARTNER_PASSIVESKILL_CFG.is_extendable = false
+PARTNER_PASSIVESKILL_CFG.extensions = {}
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_passiveskill_cfgs.items"
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.number = 1
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.index = 0
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.label = 3
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.message_type = PARTNER_PASSIVESKILL_CFG
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.type = 11
+PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_PASSIVESKILL_CFGS.name = "partner_passiveskill_cfgs"
+PARTNER_PASSIVESKILL_CFGS.full_name = ".ftcfg.partner_passiveskill_cfgs"
+PARTNER_PASSIVESKILL_CFGS.nested_types = {}
+PARTNER_PASSIVESKILL_CFGS.enum_types = {}
+PARTNER_PASSIVESKILL_CFGS.fields = {PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD}
+PARTNER_PASSIVESKILL_CFGS.is_extendable = false
+PARTNER_PASSIVESKILL_CFGS.extensions = {}
+PARTNER_CHIP_CFG_ID_FIELD.name = "id"
+PARTNER_CHIP_CFG_ID_FIELD.full_name = ".ftcfg.partner_chip_cfg.id"
+PARTNER_CHIP_CFG_ID_FIELD.number = 1
+PARTNER_CHIP_CFG_ID_FIELD.index = 0
+PARTNER_CHIP_CFG_ID_FIELD.label = 2
+PARTNER_CHIP_CFG_ID_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_ID_FIELD.default_value = 0
+PARTNER_CHIP_CFG_ID_FIELD.type = 13
+PARTNER_CHIP_CFG_ID_FIELD.cpp_type = 3
+
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.name = "chip_name"
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.full_name = ".ftcfg.partner_chip_cfg.chip_name"
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.number = 2
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.index = 1
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.label = 2
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.default_value = ""
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.type = 9
+PARTNER_CHIP_CFG_CHIP_NAME_FIELD.cpp_type = 9
+
+PARTNER_CHIP_CFG_ICON_FIELD.name = "icon"
+PARTNER_CHIP_CFG_ICON_FIELD.full_name = ".ftcfg.partner_chip_cfg.icon"
+PARTNER_CHIP_CFG_ICON_FIELD.number = 3
+PARTNER_CHIP_CFG_ICON_FIELD.index = 2
+PARTNER_CHIP_CFG_ICON_FIELD.label = 2
+PARTNER_CHIP_CFG_ICON_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_ICON_FIELD.default_value = ""
+PARTNER_CHIP_CFG_ICON_FIELD.type = 9
+PARTNER_CHIP_CFG_ICON_FIELD.cpp_type = 9
+
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.name = "change_need_num1"
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_num1"
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.number = 4
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.index = 3
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.label = 2
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.default_value = 0
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.type = 5
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.cpp_type = 1
+
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.name = "change_need_num2"
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_num2"
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.number = 5
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.index = 4
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.label = 2
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.default_value = 0
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.type = 5
+PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.cpp_type = 1
+
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.name = "change_need_prop"
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_prop"
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.number = 6
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.index = 5
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.label = 2
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.default_value = 0
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.type = 13
+PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.cpp_type = 3
+
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.name = "change_need_propnum"
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_propnum"
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.number = 7
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.index = 6
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.label = 2
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.has_default_value = false
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.default_value = 0
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.type = 5
+PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.cpp_type = 1
+
+PARTNER_CHIP_CFG.name = "partner_chip_cfg"
+PARTNER_CHIP_CFG.full_name = ".ftcfg.partner_chip_cfg"
+PARTNER_CHIP_CFG.nested_types = {}
+PARTNER_CHIP_CFG.enum_types = {}
+PARTNER_CHIP_CFG.fields = {PARTNER_CHIP_CFG_ID_FIELD, PARTNER_CHIP_CFG_CHIP_NAME_FIELD, PARTNER_CHIP_CFG_ICON_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD}
+PARTNER_CHIP_CFG.is_extendable = false
+PARTNER_CHIP_CFG.extensions = {}
+PARTNER_CHIP_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_CHIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_chip_cfgs.items"
+PARTNER_CHIP_CFGS_ITEMS_FIELD.number = 1
+PARTNER_CHIP_CFGS_ITEMS_FIELD.index = 0
+PARTNER_CHIP_CFGS_ITEMS_FIELD.label = 3
+PARTNER_CHIP_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_CHIP_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_CHIP_CFGS_ITEMS_FIELD.message_type = PARTNER_CHIP_CFG
+PARTNER_CHIP_CFGS_ITEMS_FIELD.type = 11
+PARTNER_CHIP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_CHIP_CFGS.name = "partner_chip_cfgs"
+PARTNER_CHIP_CFGS.full_name = ".ftcfg.partner_chip_cfgs"
+PARTNER_CHIP_CFGS.nested_types = {}
+PARTNER_CHIP_CFGS.enum_types = {}
+PARTNER_CHIP_CFGS.fields = {PARTNER_CHIP_CFGS_ITEMS_FIELD}
+PARTNER_CHIP_CFGS.is_extendable = false
+PARTNER_CHIP_CFGS.extensions = {}
+FETTER_CFG_ID_FIELD.name = "id"
+FETTER_CFG_ID_FIELD.full_name = ".ftcfg.fetter_cfg.id"
+FETTER_CFG_ID_FIELD.number = 1
+FETTER_CFG_ID_FIELD.index = 0
+FETTER_CFG_ID_FIELD.label = 2
+FETTER_CFG_ID_FIELD.has_default_value = false
+FETTER_CFG_ID_FIELD.default_value = 0
+FETTER_CFG_ID_FIELD.type = 13
+FETTER_CFG_ID_FIELD.cpp_type = 3
+
+FETTER_CFG_TID_FIELD.name = "tid"
+FETTER_CFG_TID_FIELD.full_name = ".ftcfg.fetter_cfg.tid"
+FETTER_CFG_TID_FIELD.number = 2
+FETTER_CFG_TID_FIELD.index = 1
+FETTER_CFG_TID_FIELD.label = 2
+FETTER_CFG_TID_FIELD.has_default_value = false
+FETTER_CFG_TID_FIELD.default_value = 0
+FETTER_CFG_TID_FIELD.type = 13
+FETTER_CFG_TID_FIELD.cpp_type = 3
+
+FETTER_CFG_FETTER_NAME_FIELD.name = "fetter_name"
+FETTER_CFG_FETTER_NAME_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_name"
+FETTER_CFG_FETTER_NAME_FIELD.number = 3
+FETTER_CFG_FETTER_NAME_FIELD.index = 2
+FETTER_CFG_FETTER_NAME_FIELD.label = 2
+FETTER_CFG_FETTER_NAME_FIELD.has_default_value = false
+FETTER_CFG_FETTER_NAME_FIELD.default_value = ""
+FETTER_CFG_FETTER_NAME_FIELD.type = 9
+FETTER_CFG_FETTER_NAME_FIELD.cpp_type = 9
+
+FETTER_CFG_FETTER_DESC_FIELD.name = "fetter_desc"
+FETTER_CFG_FETTER_DESC_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_desc"
+FETTER_CFG_FETTER_DESC_FIELD.number = 4
+FETTER_CFG_FETTER_DESC_FIELD.index = 3
+FETTER_CFG_FETTER_DESC_FIELD.label = 2
+FETTER_CFG_FETTER_DESC_FIELD.has_default_value = false
+FETTER_CFG_FETTER_DESC_FIELD.default_value = ""
+FETTER_CFG_FETTER_DESC_FIELD.type = 9
+FETTER_CFG_FETTER_DESC_FIELD.cpp_type = 9
+
+FETTER_CFG_FETTER_OBJECT_FIELD.name = "fetter_object"
+FETTER_CFG_FETTER_OBJECT_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_object"
+FETTER_CFG_FETTER_OBJECT_FIELD.number = 5
+FETTER_CFG_FETTER_OBJECT_FIELD.index = 4
+FETTER_CFG_FETTER_OBJECT_FIELD.label = 3
+FETTER_CFG_FETTER_OBJECT_FIELD.has_default_value = false
+FETTER_CFG_FETTER_OBJECT_FIELD.default_value = {}
+FETTER_CFG_FETTER_OBJECT_FIELD.type = 13
+FETTER_CFG_FETTER_OBJECT_FIELD.cpp_type = 3
+
+FETTER_CFG.name = "fetter_cfg"
+FETTER_CFG.full_name = ".ftcfg.fetter_cfg"
+FETTER_CFG.nested_types = {}
+FETTER_CFG.enum_types = {}
+FETTER_CFG.fields = {FETTER_CFG_ID_FIELD, FETTER_CFG_TID_FIELD, FETTER_CFG_FETTER_NAME_FIELD, FETTER_CFG_FETTER_DESC_FIELD, FETTER_CFG_FETTER_OBJECT_FIELD}
+FETTER_CFG.is_extendable = false
+FETTER_CFG.extensions = {}
+FETTER_CFGS_ITEMS_FIELD.name = "items"
+FETTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fetter_cfgs.items"
+FETTER_CFGS_ITEMS_FIELD.number = 1
+FETTER_CFGS_ITEMS_FIELD.index = 0
+FETTER_CFGS_ITEMS_FIELD.label = 3
+FETTER_CFGS_ITEMS_FIELD.has_default_value = false
+FETTER_CFGS_ITEMS_FIELD.default_value = {}
+FETTER_CFGS_ITEMS_FIELD.message_type = FETTER_CFG
+FETTER_CFGS_ITEMS_FIELD.type = 11
+FETTER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FETTER_CFGS.name = "fetter_cfgs"
+FETTER_CFGS.full_name = ".ftcfg.fetter_cfgs"
+FETTER_CFGS.nested_types = {}
+FETTER_CFGS.enum_types = {}
+FETTER_CFGS.fields = {FETTER_CFGS_ITEMS_FIELD}
+FETTER_CFGS.is_extendable = false
+FETTER_CFGS.extensions = {}
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.name = "id"
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.id"
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.number = 1
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.index = 0
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.label = 2
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.default_value = 0
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.type = 13
+PARTNER_EQUIPHECHENG_CFG_ID_FIELD.cpp_type = 3
+
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.name = "name"
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.name"
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.number = 2
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.index = 1
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.label = 2
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.default_value = ""
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.type = 9
+PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.cpp_type = 9
+
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.name = "stuffid"
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.stuffid"
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.number = 3
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.index = 2
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.label = 3
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.default_value = {}
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.type = 13
+PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.cpp_type = 3
+
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.name = "stuffid2"
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.stuffid2"
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.number = 4
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.index = 3
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.label = 3
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.default_value = {}
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.type = 13
+PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.cpp_type = 3
+
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.name = "composite_display"
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.composite_display"
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.number = 5
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.index = 4
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.label = 2
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.default_value = 0
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.type = 5
+PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.cpp_type = 1
+
+PARTNER_EQUIPHECHENG_CFG.name = "partner_equiphecheng_cfg"
+PARTNER_EQUIPHECHENG_CFG.full_name = ".ftcfg.partner_equiphecheng_cfg"
+PARTNER_EQUIPHECHENG_CFG.nested_types = {}
+PARTNER_EQUIPHECHENG_CFG.enum_types = {}
+PARTNER_EQUIPHECHENG_CFG.fields = {PARTNER_EQUIPHECHENG_CFG_ID_FIELD, PARTNER_EQUIPHECHENG_CFG_NAME_FIELD, PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD, PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD, PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD}
+PARTNER_EQUIPHECHENG_CFG.is_extendable = false
+PARTNER_EQUIPHECHENG_CFG.extensions = {}
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfgs.items"
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.number = 1
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.index = 0
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.label = 3
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.message_type = PARTNER_EQUIPHECHENG_CFG
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.type = 11
+PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_EQUIPHECHENG_CFGS.name = "partner_equiphecheng_cfgs"
+PARTNER_EQUIPHECHENG_CFGS.full_name = ".ftcfg.partner_equiphecheng_cfgs"
+PARTNER_EQUIPHECHENG_CFGS.nested_types = {}
+PARTNER_EQUIPHECHENG_CFGS.enum_types = {}
+PARTNER_EQUIPHECHENG_CFGS.fields = {PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD}
+PARTNER_EQUIPHECHENG_CFGS.is_extendable = false
+PARTNER_EQUIPHECHENG_CFGS.extensions = {}
+PARTNER_FORMATION_CFG_ID_FIELD.name = "id"
+PARTNER_FORMATION_CFG_ID_FIELD.full_name = ".ftcfg.partner_formation_cfg.id"
+PARTNER_FORMATION_CFG_ID_FIELD.number = 1
+PARTNER_FORMATION_CFG_ID_FIELD.index = 0
+PARTNER_FORMATION_CFG_ID_FIELD.label = 2
+PARTNER_FORMATION_CFG_ID_FIELD.has_default_value = false
+PARTNER_FORMATION_CFG_ID_FIELD.default_value = 0
+PARTNER_FORMATION_CFG_ID_FIELD.type = 5
+PARTNER_FORMATION_CFG_ID_FIELD.cpp_type = 1
+
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.name = "prop_add1"
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add1"
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.number = 2
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.index = 1
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.label = 2
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.has_default_value = false
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.default_value = nil
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.type = 14
+PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.cpp_type = 8
+
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.name = "prop_add2"
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add2"
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.number = 3
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.index = 2
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.label = 2
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.has_default_value = false
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.default_value = nil
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.type = 14
+PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.cpp_type = 8
+
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.name = "prop_add3"
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add3"
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.number = 4
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.index = 3
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.label = 2
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.has_default_value = false
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.default_value = nil
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.type = 14
+PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.cpp_type = 8
+
+PARTNER_FORMATION_CFG.name = "partner_formation_cfg"
+PARTNER_FORMATION_CFG.full_name = ".ftcfg.partner_formation_cfg"
+PARTNER_FORMATION_CFG.nested_types = {}
+PARTNER_FORMATION_CFG.enum_types = {}
+PARTNER_FORMATION_CFG.fields = {PARTNER_FORMATION_CFG_ID_FIELD, PARTNER_FORMATION_CFG_PROP_ADD1_FIELD, PARTNER_FORMATION_CFG_PROP_ADD2_FIELD, PARTNER_FORMATION_CFG_PROP_ADD3_FIELD}
+PARTNER_FORMATION_CFG.is_extendable = false
+PARTNER_FORMATION_CFG.extensions = {}
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.name = "items"
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_formation_cfgs.items"
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.number = 1
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.index = 0
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.label = 3
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.has_default_value = false
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.default_value = {}
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.message_type = PARTNER_FORMATION_CFG
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.type = 11
+PARTNER_FORMATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+PARTNER_FORMATION_CFGS.name = "partner_formation_cfgs"
+PARTNER_FORMATION_CFGS.full_name = ".ftcfg.partner_formation_cfgs"
+PARTNER_FORMATION_CFGS.nested_types = {}
+PARTNER_FORMATION_CFGS.enum_types = {}
+PARTNER_FORMATION_CFGS.fields = {PARTNER_FORMATION_CFGS_ITEMS_FIELD}
+PARTNER_FORMATION_CFGS.is_extendable = false
+PARTNER_FORMATION_CFGS.extensions = {}
+GUILD_MISSION_CFG_ID_FIELD.name = "id"
+GUILD_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.guild_mission_cfg.id"
+GUILD_MISSION_CFG_ID_FIELD.number = 1
+GUILD_MISSION_CFG_ID_FIELD.index = 0
+GUILD_MISSION_CFG_ID_FIELD.label = 2
+GUILD_MISSION_CFG_ID_FIELD.has_default_value = false
+GUILD_MISSION_CFG_ID_FIELD.default_value = 0
+GUILD_MISSION_CFG_ID_FIELD.type = 13
+GUILD_MISSION_CFG_ID_FIELD.cpp_type = 3
+
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.name = "guild_task_level"
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_level"
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.number = 2
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.index = 1
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.label = 2
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.default_value = 0
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.type = 5
+GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.cpp_type = 1
+
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.name = "guild_task_day"
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_day"
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.number = 3
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.index = 2
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.label = 3
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.default_value = {}
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.type = 5
+GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.cpp_type = 1
+
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.name = "guild_task_quality"
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_quality"
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.number = 4
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.index = 3
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.label = 2
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.default_value = nil
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.enum_type = config_predefine_pb.EGUILDQUALITYTYPE
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.type = 14
+GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.cpp_type = 8
+
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.name = "guild_task_targetid"
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_targetid"
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.number = 5
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.index = 4
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.label = 2
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.default_value = 0
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.type = 5
+GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.cpp_type = 1
+
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.name = "guild_task_condition_type"
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_condition_type"
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.number = 6
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.index = 5
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.label = 2
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.default_value = nil
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.enum_type = config_predefine_pb.EGUILDTASKTYPE
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.type = 14
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.cpp_type = 8
+
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.name = "guild_task_condition_number"
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_condition_number"
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.number = 7
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.index = 6
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.label = 3
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.default_value = {}
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.type = 5
+GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.cpp_type = 1
+
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.name = "guild_task_rewaedid"
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_rewaedid"
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.number = 8
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.index = 7
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.label = 2
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.has_default_value = false
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.default_value = 0
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.type = 5
+GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.cpp_type = 1
+
+GUILD_MISSION_CFG.name = "guild_mission_cfg"
+GUILD_MISSION_CFG.full_name = ".ftcfg.guild_mission_cfg"
+GUILD_MISSION_CFG.nested_types = {}
+GUILD_MISSION_CFG.enum_types = {}
+GUILD_MISSION_CFG.fields = {GUILD_MISSION_CFG_ID_FIELD, GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD, GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD, GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD, GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD, GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD, GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD, GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD}
+GUILD_MISSION_CFG.is_extendable = false
+GUILD_MISSION_CFG.extensions = {}
+GUILD_MISSION_CFGS_ITEMS_FIELD.name = "items"
+GUILD_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_mission_cfgs.items"
+GUILD_MISSION_CFGS_ITEMS_FIELD.number = 1
+GUILD_MISSION_CFGS_ITEMS_FIELD.index = 0
+GUILD_MISSION_CFGS_ITEMS_FIELD.label = 3
+GUILD_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_MISSION_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_MISSION_CFGS_ITEMS_FIELD.message_type = GUILD_MISSION_CFG
+GUILD_MISSION_CFGS_ITEMS_FIELD.type = 11
+GUILD_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_MISSION_CFGS.name = "guild_mission_cfgs"
+GUILD_MISSION_CFGS.full_name = ".ftcfg.guild_mission_cfgs"
+GUILD_MISSION_CFGS.nested_types = {}
+GUILD_MISSION_CFGS.enum_types = {}
+GUILD_MISSION_CFGS.fields = {GUILD_MISSION_CFGS_ITEMS_FIELD}
+GUILD_MISSION_CFGS.is_extendable = false
+GUILD_MISSION_CFGS.extensions = {}
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.name = "id"
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.id"
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.number = 1
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.index = 0
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.label = 2
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.has_default_value = false
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.default_value = 0
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.type = 13
+GUILD_BUILDING_MISSION_CFG_ID_FIELD.cpp_type = 3
+
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.name = "submit_condition"
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.submit_condition"
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.number = 2
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.index = 1
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.label = 3
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.has_default_value = false
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.default_value = {}
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.type = 5
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.cpp_type = 1
+
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.name = "submit_condition_reward"
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.submit_condition_reward"
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.number = 3
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.index = 2
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.label = 3
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.has_default_value = false
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.default_value = {}
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.type = 5
+GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.cpp_type = 1
+
+GUILD_BUILDING_MISSION_CFG.name = "guild_building_mission_cfg"
+GUILD_BUILDING_MISSION_CFG.full_name = ".ftcfg.guild_building_mission_cfg"
+GUILD_BUILDING_MISSION_CFG.nested_types = {}
+GUILD_BUILDING_MISSION_CFG.enum_types = {}
+GUILD_BUILDING_MISSION_CFG.fields = {GUILD_BUILDING_MISSION_CFG_ID_FIELD, GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD, GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD}
+GUILD_BUILDING_MISSION_CFG.is_extendable = false
+GUILD_BUILDING_MISSION_CFG.extensions = {}
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.name = "items"
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_building_mission_cfgs.items"
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.number = 1
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.index = 0
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.label = 3
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.message_type = GUILD_BUILDING_MISSION_CFG
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.type = 11
+GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_BUILDING_MISSION_CFGS.name = "guild_building_mission_cfgs"
+GUILD_BUILDING_MISSION_CFGS.full_name = ".ftcfg.guild_building_mission_cfgs"
+GUILD_BUILDING_MISSION_CFGS.nested_types = {}
+GUILD_BUILDING_MISSION_CFGS.enum_types = {}
+GUILD_BUILDING_MISSION_CFGS.fields = {GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD}
+GUILD_BUILDING_MISSION_CFGS.is_extendable = false
+GUILD_BUILDING_MISSION_CFGS.extensions = {}
+BUILDING_MISSION_POOL_CFG_ID_FIELD.name = "id"
+BUILDING_MISSION_POOL_CFG_ID_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.id"
+BUILDING_MISSION_POOL_CFG_ID_FIELD.number = 1
+BUILDING_MISSION_POOL_CFG_ID_FIELD.index = 0
+BUILDING_MISSION_POOL_CFG_ID_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_ID_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_ID_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_ID_FIELD.type = 13
+BUILDING_MISSION_POOL_CFG_ID_FIELD.cpp_type = 3
+
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.name = "need_item_id"
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.need_item_id"
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.number = 2
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.index = 1
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.type = 5
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.cpp_type = 1
+
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.name = "need_item_number"
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.need_item_number"
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.number = 3
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.index = 2
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.type = 5
+BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.cpp_type = 1
+
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.name = "is_help"
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.is_help"
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.number = 4
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.index = 3
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.default_value = false
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.type = 8
+BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.cpp_type = 7
+
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.name = "buy_coin_type"
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.buy_coin_type"
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.number = 5
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.index = 4
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.type = 5
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.cpp_type = 1
+
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.name = "buy_coin_type_nember"
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.buy_coin_type_nember"
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.number = 6
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.index = 5
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.type = 5
+BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.cpp_type = 1
+
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.name = "help_reward"
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.help_reward"
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.number = 7
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.index = 6
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.label = 2
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.default_value = 0
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.type = 5
+BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.cpp_type = 1
+
+BUILDING_MISSION_POOL_CFG.name = "building_mission_pool_cfg"
+BUILDING_MISSION_POOL_CFG.full_name = ".ftcfg.building_mission_pool_cfg"
+BUILDING_MISSION_POOL_CFG.nested_types = {}
+BUILDING_MISSION_POOL_CFG.enum_types = {}
+BUILDING_MISSION_POOL_CFG.fields = {BUILDING_MISSION_POOL_CFG_ID_FIELD, BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD, BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD, BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD, BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD, BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD, BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD}
+BUILDING_MISSION_POOL_CFG.is_extendable = false
+BUILDING_MISSION_POOL_CFG.extensions = {}
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.name = "items"
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.building_mission_pool_cfgs.items"
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.number = 1
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.index = 0
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.label = 3
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.has_default_value = false
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.default_value = {}
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.message_type = BUILDING_MISSION_POOL_CFG
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.type = 11
+BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BUILDING_MISSION_POOL_CFGS.name = "building_mission_pool_cfgs"
+BUILDING_MISSION_POOL_CFGS.full_name = ".ftcfg.building_mission_pool_cfgs"
+BUILDING_MISSION_POOL_CFGS.nested_types = {}
+BUILDING_MISSION_POOL_CFGS.enum_types = {}
+BUILDING_MISSION_POOL_CFGS.fields = {BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD}
+BUILDING_MISSION_POOL_CFGS.is_extendable = false
+BUILDING_MISSION_POOL_CFGS.extensions = {}
+GUILD_MISSION_BASE_CFG_ID_FIELD.name = "id"
+GUILD_MISSION_BASE_CFG_ID_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.id"
+GUILD_MISSION_BASE_CFG_ID_FIELD.number = 1
+GUILD_MISSION_BASE_CFG_ID_FIELD.index = 0
+GUILD_MISSION_BASE_CFG_ID_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_ID_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_ID_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_ID_FIELD.type = 13
+GUILD_MISSION_BASE_CFG_ID_FIELD.cpp_type = 3
+
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.name = "quality_probability_white"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_white"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.number = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.index = 1
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.name = "quality_probability_Green"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Green"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.number = 3
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.index = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.name = "quality_probability_Blue"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Blue"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.number = 4
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.index = 3
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.name = "quality_probability_Purple"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Purple"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.number = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.index = 4
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.name = "quality_probability_Orange"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Orange"
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.number = 6
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.index = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.name = "refresh_cost_item"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_item"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.number = 7
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.index = 6
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.name = "refresh_cost_item_number"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_item_number"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.number = 8
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.index = 7
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.name = "refresh_cost_cion_type"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_cion_type"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.number = 9
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.index = 8
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.name = "refresh_cost_cion_number"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_cion_number"
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.number = 10
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.index = 9
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.label = 2
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.default_value = 0
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.type = 5
+GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.cpp_type = 1
+
+GUILD_MISSION_BASE_CFG.name = "guild_mission_base_cfg"
+GUILD_MISSION_BASE_CFG.full_name = ".ftcfg.guild_mission_base_cfg"
+GUILD_MISSION_BASE_CFG.nested_types = {}
+GUILD_MISSION_BASE_CFG.enum_types = {}
+GUILD_MISSION_BASE_CFG.fields = {GUILD_MISSION_BASE_CFG_ID_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD}
+GUILD_MISSION_BASE_CFG.is_extendable = false
+GUILD_MISSION_BASE_CFG.extensions = {}
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.name = "items"
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_mission_base_cfgs.items"
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.number = 1
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.index = 0
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.label = 3
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.message_type = GUILD_MISSION_BASE_CFG
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.type = 11
+GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_MISSION_BASE_CFGS.name = "guild_mission_base_cfgs"
+GUILD_MISSION_BASE_CFGS.full_name = ".ftcfg.guild_mission_base_cfgs"
+GUILD_MISSION_BASE_CFGS.nested_types = {}
+GUILD_MISSION_BASE_CFGS.enum_types = {}
+GUILD_MISSION_BASE_CFGS.fields = {GUILD_MISSION_BASE_CFGS_ITEMS_FIELD}
+GUILD_MISSION_BASE_CFGS.is_extendable = false
+GUILD_MISSION_BASE_CFGS.extensions = {}
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.name = "guild_practice_group"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_group"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.number = 1
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.index = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.name = "guild_practice_level"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_level"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.number = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.index = 1
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.name = "guild_practice_type"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_type"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.number = 3
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.index = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.name = "guild_practice_icon"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_icon"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.number = 4
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.index = 3
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.name = "guild_practice_name"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_name"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.number = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.index = 4
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.name = "guild_practice_effect_describe"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_effect_describe"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.number = 6
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.index = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.name = "guild_practice_battle"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_battle"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.number = 7
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.index = 6
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.name = "guild_practice_cost_level"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_level"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.number = 8
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.index = 7
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.name = "guild_practice_cost_cointype1"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_cointype1"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.number = 9
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.index = 8
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.label = 3
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.default_value = {}
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.name = "guild_practice_cost_cointype2"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_cointype2"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.number = 10
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.index = 9
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.label = 3
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.default_value = {}
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.name = "guild_practice_cost_item"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_item"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.number = 11
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.index = 10
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.name = "guild_practice_cost_number"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_number"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.number = 12
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.index = 11
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.name = "guild_practice_exp"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_exp"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.number = 13
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.index = 12
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.name = "guild_practice_exp_max"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_exp_max"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.number = 14
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.index = 13
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.name = "guild_practice_attribute"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_attribute"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.number = 15
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.index = 14
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.default_value = ""
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.type = 9
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.cpp_type = 9
+
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.name = "guild_practice_buff"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_buff"
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.number = 16
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.index = 15
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CONT_CFG.name = "guild_practice_group_cont_cfg"
+GUILD_PRACTICE_GROUP_CONT_CFG.full_name = ".ftcfg.guild_practice_group_cont_cfg"
+GUILD_PRACTICE_GROUP_CONT_CFG.nested_types = {}
+GUILD_PRACTICE_GROUP_CONT_CFG.enum_types = {}
+GUILD_PRACTICE_GROUP_CONT_CFG.fields = {GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD}
+GUILD_PRACTICE_GROUP_CONT_CFG.is_extendable = false
+GUILD_PRACTICE_GROUP_CONT_CFG.extensions = {}
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.name = "items"
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfgs.items"
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.number = 1
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.index = 0
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.label = 3
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.message_type = GUILD_PRACTICE_GROUP_CONT_CFG
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.type = 11
+GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_PRACTICE_GROUP_CONT_CFGS.name = "guild_practice_group_cont_cfgs"
+GUILD_PRACTICE_GROUP_CONT_CFGS.full_name = ".ftcfg.guild_practice_group_cont_cfgs"
+GUILD_PRACTICE_GROUP_CONT_CFGS.nested_types = {}
+GUILD_PRACTICE_GROUP_CONT_CFGS.enum_types = {}
+GUILD_PRACTICE_GROUP_CONT_CFGS.fields = {GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD}
+GUILD_PRACTICE_GROUP_CONT_CFGS.is_extendable = false
+GUILD_PRACTICE_GROUP_CONT_CFGS.extensions = {}
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.name = "id"
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.guild_practice_group_cfg.id"
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.number = 1
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.index = 0
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.label = 2
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.default_value = 0
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.type = 13
+GUILD_PRACTICE_GROUP_CFG_ID_FIELD.cpp_type = 3
+
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.name = "guild_practice_group"
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.full_name = ".ftcfg.guild_practice_group_cfg.guild_practice_group"
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.number = 2
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.index = 1
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.label = 3
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.default_value = {}
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.type = 5
+GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.cpp_type = 1
+
+GUILD_PRACTICE_GROUP_CFG.name = "guild_practice_group_cfg"
+GUILD_PRACTICE_GROUP_CFG.full_name = ".ftcfg.guild_practice_group_cfg"
+GUILD_PRACTICE_GROUP_CFG.nested_types = {}
+GUILD_PRACTICE_GROUP_CFG.enum_types = {}
+GUILD_PRACTICE_GROUP_CFG.fields = {GUILD_PRACTICE_GROUP_CFG_ID_FIELD, GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD}
+GUILD_PRACTICE_GROUP_CFG.is_extendable = false
+GUILD_PRACTICE_GROUP_CFG.extensions = {}
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.name = "items"
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_practice_group_cfgs.items"
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.number = 1
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.index = 0
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.label = 3
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.message_type = GUILD_PRACTICE_GROUP_CFG
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.type = 11
+GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_PRACTICE_GROUP_CFGS.name = "guild_practice_group_cfgs"
+GUILD_PRACTICE_GROUP_CFGS.full_name = ".ftcfg.guild_practice_group_cfgs"
+GUILD_PRACTICE_GROUP_CFGS.nested_types = {}
+GUILD_PRACTICE_GROUP_CFGS.enum_types = {}
+GUILD_PRACTICE_GROUP_CFGS.fields = {GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD}
+GUILD_PRACTICE_GROUP_CFGS.is_extendable = false
+GUILD_PRACTICE_GROUP_CFGS.extensions = {}
+GUILD_BASE_CFG_ID_FIELD.name = "id"
+GUILD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.guild_base_cfg.id"
+GUILD_BASE_CFG_ID_FIELD.number = 1
+GUILD_BASE_CFG_ID_FIELD.index = 0
+GUILD_BASE_CFG_ID_FIELD.label = 2
+GUILD_BASE_CFG_ID_FIELD.has_default_value = false
+GUILD_BASE_CFG_ID_FIELD.default_value = 0
+GUILD_BASE_CFG_ID_FIELD.type = 13
+GUILD_BASE_CFG_ID_FIELD.cpp_type = 3
+
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.name = "Guild_remove_cost_money"
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_remove_cost_money"
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.number = 2
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.index = 1
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.name = "Day_cost_money"
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.full_name = ".ftcfg.guild_base_cfg.Day_cost_money"
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.number = 3
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.index = 2
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.label = 2
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.has_default_value = false
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.default_value = 0
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.type = 5
+GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.name = "Guild_upper_limit"
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_upper_limit"
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.number = 4
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.index = 3
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.name = "Guild_apprentice_limit"
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_apprentice_limit"
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.number = 5
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.index = 4
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.name = "Guild_vice_leader_limit"
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_vice_leader_limit"
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.number = 6
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.index = 5
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.name = "Guild_elite_limit"
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_elite_limit"
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.number = 7
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.index = 6
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.name = "Guild_baby_limit"
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_baby_limit"
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.number = 8
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.index = 7
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.name = "Guild_unlock_shop"
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_shop"
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.number = 9
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.index = 8
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.name = "Guild_unlock_task"
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_task"
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.number = 10
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.index = 9
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.name = "Guild_unlock_levelup"
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_levelup"
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.number = 11
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.index = 10
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.name = "Guild_unlock_guidance"
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_guidance"
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.number = 12
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.index = 11
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.name = "Guild_unlock_build_task"
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_build_task"
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.number = 13
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.index = 12
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.name = "Guild_unlock_build_practice"
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_build_practice"
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.number = 14
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.index = 13
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.name = "Guild_practice_help_max"
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_practice_help_max"
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.number = 15
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.index = 14
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.name = "Guild_type_practice1"
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_type_practice1"
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.number = 16
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.index = 15
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.name = "Guild_type_practice2"
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_type_practice2"
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.number = 17
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.index = 16
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.name = "Guild_name_cost_type"
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_name_cost_type"
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.number = 18
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.index = 17
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.name = "Guild_name_cost_number"
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_name_cost_number"
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.number = 19
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.index = 18
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.label = 2
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.has_default_value = false
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.default_value = 0
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.type = 5
+GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.cpp_type = 1
+
+GUILD_BASE_CFG.name = "guild_base_cfg"
+GUILD_BASE_CFG.full_name = ".ftcfg.guild_base_cfg"
+GUILD_BASE_CFG.nested_types = {}
+GUILD_BASE_CFG.enum_types = {}
+GUILD_BASE_CFG.fields = {GUILD_BASE_CFG_ID_FIELD, GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD, GUILD_BASE_CFG_DAY_COST_MONEY_FIELD, GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD, GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD, GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD, GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD, GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD, GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD}
+GUILD_BASE_CFG.is_extendable = false
+GUILD_BASE_CFG.extensions = {}
+GUILD_BASE_CFGS_ITEMS_FIELD.name = "items"
+GUILD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_base_cfgs.items"
+GUILD_BASE_CFGS_ITEMS_FIELD.number = 1
+GUILD_BASE_CFGS_ITEMS_FIELD.index = 0
+GUILD_BASE_CFGS_ITEMS_FIELD.label = 3
+GUILD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_BASE_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_BASE_CFGS_ITEMS_FIELD.message_type = GUILD_BASE_CFG
+GUILD_BASE_CFGS_ITEMS_FIELD.type = 11
+GUILD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_BASE_CFGS.name = "guild_base_cfgs"
+GUILD_BASE_CFGS.full_name = ".ftcfg.guild_base_cfgs"
+GUILD_BASE_CFGS.nested_types = {}
+GUILD_BASE_CFGS.enum_types = {}
+GUILD_BASE_CFGS.fields = {GUILD_BASE_CFGS_ITEMS_FIELD}
+GUILD_BASE_CFGS.is_extendable = false
+GUILD_BASE_CFGS.extensions = {}
+GUILD_FLAG_CFG_ID_FIELD.name = "id"
+GUILD_FLAG_CFG_ID_FIELD.full_name = ".ftcfg.guild_flag_cfg.id"
+GUILD_FLAG_CFG_ID_FIELD.number = 1
+GUILD_FLAG_CFG_ID_FIELD.index = 0
+GUILD_FLAG_CFG_ID_FIELD.label = 2
+GUILD_FLAG_CFG_ID_FIELD.has_default_value = false
+GUILD_FLAG_CFG_ID_FIELD.default_value = 0
+GUILD_FLAG_CFG_ID_FIELD.type = 5
+GUILD_FLAG_CFG_ID_FIELD.cpp_type = 1
+
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.name = "Guild_big_flag_icon"
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_big_flag_icon"
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.number = 2
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.index = 1
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.label = 2
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.has_default_value = false
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.default_value = 0
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.type = 5
+GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.cpp_type = 1
+
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.name = "Guild_samll_flag_icon"
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_samll_flag_icon"
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.number = 3
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.index = 2
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.label = 2
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.has_default_value = false
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.default_value = ""
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.type = 9
+GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.cpp_type = 9
+
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.name = "Guild_flag_money"
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_flag_money"
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.number = 4
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.index = 3
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.label = 2
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.has_default_value = false
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.default_value = 0
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.type = 5
+GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.cpp_type = 1
+
+GUILD_FLAG_CFG.name = "guild_flag_cfg"
+GUILD_FLAG_CFG.full_name = ".ftcfg.guild_flag_cfg"
+GUILD_FLAG_CFG.nested_types = {}
+GUILD_FLAG_CFG.enum_types = {}
+GUILD_FLAG_CFG.fields = {GUILD_FLAG_CFG_ID_FIELD, GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD, GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD, GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD}
+GUILD_FLAG_CFG.is_extendable = false
+GUILD_FLAG_CFG.extensions = {}
+GUILD_FLAG_CFGS_ITEMS_FIELD.name = "items"
+GUILD_FLAG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_flag_cfgs.items"
+GUILD_FLAG_CFGS_ITEMS_FIELD.number = 1
+GUILD_FLAG_CFGS_ITEMS_FIELD.index = 0
+GUILD_FLAG_CFGS_ITEMS_FIELD.label = 3
+GUILD_FLAG_CFGS_ITEMS_FIELD.has_default_value = false
+GUILD_FLAG_CFGS_ITEMS_FIELD.default_value = {}
+GUILD_FLAG_CFGS_ITEMS_FIELD.message_type = GUILD_FLAG_CFG
+GUILD_FLAG_CFGS_ITEMS_FIELD.type = 11
+GUILD_FLAG_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUILD_FLAG_CFGS.name = "guild_flag_cfgs"
+GUILD_FLAG_CFGS.full_name = ".ftcfg.guild_flag_cfgs"
+GUILD_FLAG_CFGS.nested_types = {}
+GUILD_FLAG_CFGS.enum_types = {}
+GUILD_FLAG_CFGS.fields = {GUILD_FLAG_CFGS_ITEMS_FIELD}
+GUILD_FLAG_CFGS.is_extendable = false
+GUILD_FLAG_CFGS.extensions = {}
+GUIL_POST_CFG_ID_FIELD.name = "id"
+GUIL_POST_CFG_ID_FIELD.full_name = ".ftcfg.guil_post_cfg.id"
+GUIL_POST_CFG_ID_FIELD.number = 1
+GUIL_POST_CFG_ID_FIELD.index = 0
+GUIL_POST_CFG_ID_FIELD.label = 2
+GUIL_POST_CFG_ID_FIELD.has_default_value = false
+GUIL_POST_CFG_ID_FIELD.default_value = 0
+GUIL_POST_CFG_ID_FIELD.type = 13
+GUIL_POST_CFG_ID_FIELD.cpp_type = 3
+
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.name = "Guild_post_languageid"
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_post_languageid"
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.number = 2
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.index = 1
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.label = 2
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.type = 5
+GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.name = "Guild_remove"
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_remove"
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.number = 3
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.index = 2
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.label = 2
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.type = 5
+GUIL_POST_CFG_GUILD_REMOVE_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_MAIL_FIELD.name = "Guild_mail"
+GUIL_POST_CFG_GUILD_MAIL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_mail"
+GUIL_POST_CFG_GUILD_MAIL_FIELD.number = 4
+GUIL_POST_CFG_GUILD_MAIL_FIELD.index = 3
+GUIL_POST_CFG_GUILD_MAIL_FIELD.label = 2
+GUIL_POST_CFG_GUILD_MAIL_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_MAIL_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_MAIL_FIELD.type = 5
+GUIL_POST_CFG_GUILD_MAIL_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.name = "Guild_appointment"
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_appointment"
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.number = 5
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.index = 4
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.label = 2
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.type = 5
+GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.name = "Guild_expel"
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_expel"
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.number = 6
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.index = 5
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.label = 2
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.type = 5
+GUIL_POST_CFG_GUILD_EXPEL_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.name = "Guild_invitation"
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_invitation"
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.number = 7
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.index = 6
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.label = 2
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.type = 5
+GUIL_POST_CFG_GUILD_INVITATION_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.name = "Guild_approval"
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_approval"
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.number = 8
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.index = 7
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.label = 2
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.type = 5
+GUIL_POST_CFG_GUILD_APPROVAL_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_TEAM_FIELD.name = "Guild_team"
+GUIL_POST_CFG_GUILD_TEAM_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_team"
+GUIL_POST_CFG_GUILD_TEAM_FIELD.number = 9
+GUIL_POST_CFG_GUILD_TEAM_FIELD.index = 8
+GUIL_POST_CFG_GUILD_TEAM_FIELD.label = 2
+GUIL_POST_CFG_GUILD_TEAM_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_TEAM_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_TEAM_FIELD.type = 5
+GUIL_POST_CFG_GUILD_TEAM_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_CALL_FIELD.name = "Guild_call"
+GUIL_POST_CFG_GUILD_CALL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_call"
+GUIL_POST_CFG_GUILD_CALL_FIELD.number = 10
+GUIL_POST_CFG_GUILD_CALL_FIELD.index = 9
+GUIL_POST_CFG_GUILD_CALL_FIELD.label = 2
+GUIL_POST_CFG_GUILD_CALL_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_CALL_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_CALL_FIELD.type = 5
+GUIL_POST_CFG_GUILD_CALL_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.name = "Guild_hostile"
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_hostile"
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.number = 11
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.index = 10
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.label = 2
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.type = 5
+GUIL_POST_CFG_GUILD_HOSTILE_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.name = "Guild_territorial_transfer"
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_territorial_transfer"
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.number = 12
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.index = 11
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.label = 2
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.type = 5
+GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.name = "Guild_flag_modify"
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_flag_modify"
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.number = 13
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.index = 12
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.label = 2
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.type = 5
+GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.name = "Guild_name_modify"
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_name_modify"
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.number = 14
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.index = 13
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.label = 2
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.type = 5
+GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.cpp_type = 1
+
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.name = "Guild_notice"
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_notice"
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.number = 15
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.index = 14
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.label = 2
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.has_default_value = false
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.default_value = 0
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.type = 5
+GUIL_POST_CFG_GUILD_NOTICE_FIELD.cpp_type = 1
+
+GUIL_POST_CFG.name = "guil_post_cfg"
+GUIL_POST_CFG.full_name = ".ftcfg.guil_post_cfg"
+GUIL_POST_CFG.nested_types = {}
+GUIL_POST_CFG.enum_types = {}
+GUIL_POST_CFG.fields = {GUIL_POST_CFG_ID_FIELD, GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD, GUIL_POST_CFG_GUILD_REMOVE_FIELD, GUIL_POST_CFG_GUILD_MAIL_FIELD, GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD, GUIL_POST_CFG_GUILD_EXPEL_FIELD, GUIL_POST_CFG_GUILD_INVITATION_FIELD, GUIL_POST_CFG_GUILD_APPROVAL_FIELD, GUIL_POST_CFG_GUILD_TEAM_FIELD, GUIL_POST_CFG_GUILD_CALL_FIELD, GUIL_POST_CFG_GUILD_HOSTILE_FIELD, GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD, GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD, GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD, GUIL_POST_CFG_GUILD_NOTICE_FIELD}
+GUIL_POST_CFG.is_extendable = false
+GUIL_POST_CFG.extensions = {}
+GUIL_POST_CFGS_ITEMS_FIELD.name = "items"
+GUIL_POST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guil_post_cfgs.items"
+GUIL_POST_CFGS_ITEMS_FIELD.number = 1
+GUIL_POST_CFGS_ITEMS_FIELD.index = 0
+GUIL_POST_CFGS_ITEMS_FIELD.label = 3
+GUIL_POST_CFGS_ITEMS_FIELD.has_default_value = false
+GUIL_POST_CFGS_ITEMS_FIELD.default_value = {}
+GUIL_POST_CFGS_ITEMS_FIELD.message_type = GUIL_POST_CFG
+GUIL_POST_CFGS_ITEMS_FIELD.type = 11
+GUIL_POST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GUIL_POST_CFGS.name = "guil_post_cfgs"
+GUIL_POST_CFGS.full_name = ".ftcfg.guil_post_cfgs"
+GUIL_POST_CFGS.nested_types = {}
+GUIL_POST_CFGS.enum_types = {}
+GUIL_POST_CFGS.fields = {GUIL_POST_CFGS_ITEMS_FIELD}
+GUIL_POST_CFGS.is_extendable = false
+GUIL_POST_CFGS.extensions = {}
+INNER_ALCHEMY_CFG_ID_FIELD.name = "id"
+INNER_ALCHEMY_CFG_ID_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.id"
+INNER_ALCHEMY_CFG_ID_FIELD.number = 1
+INNER_ALCHEMY_CFG_ID_FIELD.index = 0
+INNER_ALCHEMY_CFG_ID_FIELD.label = 2
+INNER_ALCHEMY_CFG_ID_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ID_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ID_FIELD.type = 13
+INNER_ALCHEMY_CFG_ID_FIELD.cpp_type = 3
+
+INNER_ALCHEMY_CFG_NAME_FIELD.name = "name"
+INNER_ALCHEMY_CFG_NAME_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.name"
+INNER_ALCHEMY_CFG_NAME_FIELD.number = 2
+INNER_ALCHEMY_CFG_NAME_FIELD.index = 1
+INNER_ALCHEMY_CFG_NAME_FIELD.label = 2
+INNER_ALCHEMY_CFG_NAME_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_NAME_FIELD.default_value = ""
+INNER_ALCHEMY_CFG_NAME_FIELD.type = 9
+INNER_ALCHEMY_CFG_NAME_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.name = "activation_type"
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_type"
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.number = 3
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.index = 2
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.label = 2
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_DESC_FIELD.name = "desc"
+INNER_ALCHEMY_CFG_DESC_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.desc"
+INNER_ALCHEMY_CFG_DESC_FIELD.number = 4
+INNER_ALCHEMY_CFG_DESC_FIELD.index = 3
+INNER_ALCHEMY_CFG_DESC_FIELD.label = 2
+INNER_ALCHEMY_CFG_DESC_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_DESC_FIELD.default_value = ""
+INNER_ALCHEMY_CFG_DESC_FIELD.type = 9
+INNER_ALCHEMY_CFG_DESC_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.name = "item_icon"
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.item_icon"
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.number = 5
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.index = 4
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.label = 2
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.type = 5
+INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ICON_FIELD.name = "icon"
+INNER_ALCHEMY_CFG_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.icon"
+INNER_ALCHEMY_CFG_ICON_FIELD.number = 6
+INNER_ALCHEMY_CFG_ICON_FIELD.index = 5
+INNER_ALCHEMY_CFG_ICON_FIELD.label = 2
+INNER_ALCHEMY_CFG_ICON_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ICON_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ICON_FIELD.type = 5
+INNER_ALCHEMY_CFG_ICON_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.name = "formula_icon"
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.formula_icon"
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.number = 7
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.index = 6
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.label = 2
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.type = 5
+INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.name = "unlock_cost"
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.unlock_cost"
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.number = 8
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.index = 7
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.label = 2
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.type = 5
+INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.name = "unlock_cost_num"
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.unlock_cost_num"
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.number = 9
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.index = 8
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.label = 2
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.type = 5
+INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.name = "activation_cost"
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_cost"
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.number = 10
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.index = 9
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.label = 2
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.name = "activation_cost_num"
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_cost_num"
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.number = 11
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.index = 10
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.label = 2
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.name = "activation_resources_icon"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_icon"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.number = 12
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.index = 11
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.label = 3
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.default_value = {}
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.name = "activation_resources_cost"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_cost"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.number = 13
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.index = 12
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.label = 3
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.default_value = {}
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.name = "activation_resources_cost_num"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_cost_num"
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.number = 14
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.index = 13
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.label = 3
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.default_value = {}
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.type = 5
+INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect1"
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.number = 15
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.index = 14
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.label = 2
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.default_value = ""
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.type = 9
+INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect2"
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.number = 16
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.index = 15
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.label = 2
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.default_value = ""
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.type = 9
+INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect3"
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.number = 17
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.index = 16
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.label = 2
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.default_value = ""
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.type = 9
+INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.name = "occupation"
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.occupation"
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.number = 18
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.index = 17
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.label = 2
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.default_value = 0
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.type = 5
+INNER_ALCHEMY_CFG_OCCUPATION_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.combat_point"
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.number = 19
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.index = 18
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.label = 2
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.default_value = 0.0
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.type = 2
+INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.cpp_type = 6
+
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.name = "suit_combat_point"
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.suit_combat_point"
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.number = 20
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.index = 19
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.label = 2
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.has_default_value = false
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.default_value = 0.0
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.type = 2
+INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.cpp_type = 6
+
+INNER_ALCHEMY_CFG.name = "inner_alchemy_cfg"
+INNER_ALCHEMY_CFG.full_name = ".ftcfg.inner_alchemy_cfg"
+INNER_ALCHEMY_CFG.nested_types = {}
+INNER_ALCHEMY_CFG.enum_types = {}
+INNER_ALCHEMY_CFG.fields = {INNER_ALCHEMY_CFG_ID_FIELD, INNER_ALCHEMY_CFG_NAME_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD, INNER_ALCHEMY_CFG_DESC_FIELD, INNER_ALCHEMY_CFG_ITEM_ICON_FIELD, INNER_ALCHEMY_CFG_ICON_FIELD, INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD, INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD, INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD, INNER_ALCHEMY_CFG_OCCUPATION_FIELD, INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD, INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD}
+INNER_ALCHEMY_CFG.is_extendable = false
+INNER_ALCHEMY_CFG.extensions = {}
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.name = "items"
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.inner_alchemy_cfgs.items"
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.number = 1
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.index = 0
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.label = 3
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.has_default_value = false
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.default_value = {}
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.message_type = INNER_ALCHEMY_CFG
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.type = 11
+INNER_ALCHEMY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+INNER_ALCHEMY_CFGS.name = "inner_alchemy_cfgs"
+INNER_ALCHEMY_CFGS.full_name = ".ftcfg.inner_alchemy_cfgs"
+INNER_ALCHEMY_CFGS.nested_types = {}
+INNER_ALCHEMY_CFGS.enum_types = {}
+INNER_ALCHEMY_CFGS.fields = {INNER_ALCHEMY_CFGS_ITEMS_FIELD}
+INNER_ALCHEMY_CFGS.is_extendable = false
+INNER_ALCHEMY_CFGS.extensions = {}
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.name = "id"
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.id"
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.number = 1
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.index = 0
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.label = 2
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.default_value = 0
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.type = 13
+INNER_ALCHEMY_GROUP_CFG_ID_FIELD.cpp_type = 3
+
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.name = "inner_alchemy_group"
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.inner_alchemy_group"
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.number = 2
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.index = 1
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.label = 3
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.default_value = {}
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.type = 5
+INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.name = "desc"
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.desc"
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.number = 3
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.index = 2
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.label = 2
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.default_value = ""
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.type = 9
+INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.cpp_type = 9
+
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.name = "group_effect"
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.group_effect"
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.number = 4
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.index = 3
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.label = 2
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.default_value = 0
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.type = 5
+INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.name = "skill_id_index"
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.skill_id_index"
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.number = 5
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.index = 4
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.label = 2
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.default_value = 0
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.type = 5
+INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.name = "skill_array"
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.skill_array"
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.number = 6
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.index = 5
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.label = 3
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.default_value = {}
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.type = 5
+INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.cpp_type = 1
+
+INNER_ALCHEMY_GROUP_CFG.name = "inner_alchemy_group_cfg"
+INNER_ALCHEMY_GROUP_CFG.full_name = ".ftcfg.inner_alchemy_group_cfg"
+INNER_ALCHEMY_GROUP_CFG.nested_types = {}
+INNER_ALCHEMY_GROUP_CFG.enum_types = {}
+INNER_ALCHEMY_GROUP_CFG.fields = {INNER_ALCHEMY_GROUP_CFG_ID_FIELD, INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD, INNER_ALCHEMY_GROUP_CFG_DESC_FIELD, INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD, INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD, INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD}
+INNER_ALCHEMY_GROUP_CFG.is_extendable = false
+INNER_ALCHEMY_GROUP_CFG.extensions = {}
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.name = "items"
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfgs.items"
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.number = 1
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.index = 0
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.label = 3
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.message_type = INNER_ALCHEMY_GROUP_CFG
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.type = 11
+INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+INNER_ALCHEMY_GROUP_CFGS.name = "inner_alchemy_group_cfgs"
+INNER_ALCHEMY_GROUP_CFGS.full_name = ".ftcfg.inner_alchemy_group_cfgs"
+INNER_ALCHEMY_GROUP_CFGS.nested_types = {}
+INNER_ALCHEMY_GROUP_CFGS.enum_types = {}
+INNER_ALCHEMY_GROUP_CFGS.fields = {INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD}
+INNER_ALCHEMY_GROUP_CFGS.is_extendable = false
+INNER_ALCHEMY_GROUP_CFGS.extensions = {}
+MEDAL_GROUP_CFG_ID_FIELD.name = "id"
+MEDAL_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.medal_group_cfg.id"
+MEDAL_GROUP_CFG_ID_FIELD.number = 1
+MEDAL_GROUP_CFG_ID_FIELD.index = 0
+MEDAL_GROUP_CFG_ID_FIELD.label = 2
+MEDAL_GROUP_CFG_ID_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_ID_FIELD.default_value = 0
+MEDAL_GROUP_CFG_ID_FIELD.type = 13
+MEDAL_GROUP_CFG_ID_FIELD.cpp_type = 3
+
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.name = "starLevel"
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_group_cfg.starLevel"
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.number = 2
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.index = 1
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.label = 2
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.default_value = 0
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.type = 5
+MEDAL_GROUP_CFG_STARLEVEL_FIELD.cpp_type = 1
+
+MEDAL_GROUP_CFG_TYPE_FIELD.name = "type"
+MEDAL_GROUP_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_group_cfg.type"
+MEDAL_GROUP_CFG_TYPE_FIELD.number = 3
+MEDAL_GROUP_CFG_TYPE_FIELD.index = 2
+MEDAL_GROUP_CFG_TYPE_FIELD.label = 2
+MEDAL_GROUP_CFG_TYPE_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_TYPE_FIELD.default_value = 0
+MEDAL_GROUP_CFG_TYPE_FIELD.type = 5
+MEDAL_GROUP_CFG_TYPE_FIELD.cpp_type = 1
+
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.name = "group_name"
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.full_name = ".ftcfg.medal_group_cfg.group_name"
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.number = 4
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.index = 3
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.label = 2
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.default_value = 0
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.type = 5
+MEDAL_GROUP_CFG_GROUP_NAME_FIELD.cpp_type = 1
+
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.name = "member_id"
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.full_name = ".ftcfg.medal_group_cfg.member_id"
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.number = 5
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.index = 4
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.label = 3
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.default_value = {}
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.type = 13
+MEDAL_GROUP_CFG_MEMBER_ID_FIELD.cpp_type = 3
+
+MEDAL_GROUP_CFG_DESC_FIELD.name = "desc"
+MEDAL_GROUP_CFG_DESC_FIELD.full_name = ".ftcfg.medal_group_cfg.desc"
+MEDAL_GROUP_CFG_DESC_FIELD.number = 6
+MEDAL_GROUP_CFG_DESC_FIELD.index = 5
+MEDAL_GROUP_CFG_DESC_FIELD.label = 2
+MEDAL_GROUP_CFG_DESC_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_DESC_FIELD.default_value = 0
+MEDAL_GROUP_CFG_DESC_FIELD.type = 5
+MEDAL_GROUP_CFG_DESC_FIELD.cpp_type = 1
+
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.name = "activation_attribute1"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute1"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.number = 7
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.index = 6
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.label = 2
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.default_value = ""
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.type = 9
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.cpp_type = 9
+
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.name = "activation_attribute2"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute2"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.number = 8
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.index = 7
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.label = 2
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.default_value = ""
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.type = 9
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.cpp_type = 9
+
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.name = "activation_attribute3"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute3"
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.number = 9
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.index = 8
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.label = 2
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.has_default_value = false
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.default_value = ""
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.type = 9
+MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.cpp_type = 9
+
+MEDAL_GROUP_CFG.name = "medal_group_cfg"
+MEDAL_GROUP_CFG.full_name = ".ftcfg.medal_group_cfg"
+MEDAL_GROUP_CFG.nested_types = {}
+MEDAL_GROUP_CFG.enum_types = {}
+MEDAL_GROUP_CFG.fields = {MEDAL_GROUP_CFG_ID_FIELD, MEDAL_GROUP_CFG_STARLEVEL_FIELD, MEDAL_GROUP_CFG_TYPE_FIELD, MEDAL_GROUP_CFG_GROUP_NAME_FIELD, MEDAL_GROUP_CFG_MEMBER_ID_FIELD, MEDAL_GROUP_CFG_DESC_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD}
+MEDAL_GROUP_CFG.is_extendable = false
+MEDAL_GROUP_CFG.extensions = {}
+MEDAL_GROUP_CFGS_ITEMS_FIELD.name = "items"
+MEDAL_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_group_cfgs.items"
+MEDAL_GROUP_CFGS_ITEMS_FIELD.number = 1
+MEDAL_GROUP_CFGS_ITEMS_FIELD.index = 0
+MEDAL_GROUP_CFGS_ITEMS_FIELD.label = 3
+MEDAL_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+MEDAL_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+MEDAL_GROUP_CFGS_ITEMS_FIELD.message_type = MEDAL_GROUP_CFG
+MEDAL_GROUP_CFGS_ITEMS_FIELD.type = 11
+MEDAL_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MEDAL_GROUP_CFGS.name = "medal_group_cfgs"
+MEDAL_GROUP_CFGS.full_name = ".ftcfg.medal_group_cfgs"
+MEDAL_GROUP_CFGS.nested_types = {}
+MEDAL_GROUP_CFGS.enum_types = {}
+MEDAL_GROUP_CFGS.fields = {MEDAL_GROUP_CFGS_ITEMS_FIELD}
+MEDAL_GROUP_CFGS.is_extendable = false
+MEDAL_GROUP_CFGS.extensions = {}
+MEDAL_BASE_CFG_ID_FIELD.name = "id"
+MEDAL_BASE_CFG_ID_FIELD.full_name = ".ftcfg.medal_base_cfg.id"
+MEDAL_BASE_CFG_ID_FIELD.number = 1
+MEDAL_BASE_CFG_ID_FIELD.index = 0
+MEDAL_BASE_CFG_ID_FIELD.label = 2
+MEDAL_BASE_CFG_ID_FIELD.has_default_value = false
+MEDAL_BASE_CFG_ID_FIELD.default_value = 0
+MEDAL_BASE_CFG_ID_FIELD.type = 13
+MEDAL_BASE_CFG_ID_FIELD.cpp_type = 3
+
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.name = "medal_name"
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.full_name = ".ftcfg.medal_base_cfg.medal_name"
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.number = 2
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.index = 1
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.label = 2
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.has_default_value = false
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.default_value = 0
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.type = 5
+MEDAL_BASE_CFG_MEDAL_NAME_FIELD.cpp_type = 1
+
+MEDAL_BASE_CFG_ICON_FIELD.name = "icon"
+MEDAL_BASE_CFG_ICON_FIELD.full_name = ".ftcfg.medal_base_cfg.icon"
+MEDAL_BASE_CFG_ICON_FIELD.number = 3
+MEDAL_BASE_CFG_ICON_FIELD.index = 2
+MEDAL_BASE_CFG_ICON_FIELD.label = 2
+MEDAL_BASE_CFG_ICON_FIELD.has_default_value = false
+MEDAL_BASE_CFG_ICON_FIELD.default_value = 0
+MEDAL_BASE_CFG_ICON_FIELD.type = 5
+MEDAL_BASE_CFG_ICON_FIELD.cpp_type = 1
+
+MEDAL_BASE_CFG_TYPE_FIELD.name = "type"
+MEDAL_BASE_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_base_cfg.type"
+MEDAL_BASE_CFG_TYPE_FIELD.number = 4
+MEDAL_BASE_CFG_TYPE_FIELD.index = 3
+MEDAL_BASE_CFG_TYPE_FIELD.label = 2
+MEDAL_BASE_CFG_TYPE_FIELD.has_default_value = false
+MEDAL_BASE_CFG_TYPE_FIELD.default_value = 0
+MEDAL_BASE_CFG_TYPE_FIELD.type = 5
+MEDAL_BASE_CFG_TYPE_FIELD.cpp_type = 1
+
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.name = "change_need_propnum"
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.full_name = ".ftcfg.medal_base_cfg.change_need_propnum"
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.number = 5
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.index = 4
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.label = 2
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.has_default_value = false
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.default_value = 0
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.type = 5
+MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.cpp_type = 1
+
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.name = "disassemble_get_propnum"
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.full_name = ".ftcfg.medal_base_cfg.disassemble_get_propnum"
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.number = 6
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.index = 5
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.label = 2
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.has_default_value = false
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.default_value = 0
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.type = 5
+MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.cpp_type = 1
+
+MEDAL_BASE_CFG.name = "medal_base_cfg"
+MEDAL_BASE_CFG.full_name = ".ftcfg.medal_base_cfg"
+MEDAL_BASE_CFG.nested_types = {}
+MEDAL_BASE_CFG.enum_types = {}
+MEDAL_BASE_CFG.fields = {MEDAL_BASE_CFG_ID_FIELD, MEDAL_BASE_CFG_MEDAL_NAME_FIELD, MEDAL_BASE_CFG_ICON_FIELD, MEDAL_BASE_CFG_TYPE_FIELD, MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD, MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD}
+MEDAL_BASE_CFG.is_extendable = false
+MEDAL_BASE_CFG.extensions = {}
+MEDAL_BASE_CFGS_ITEMS_FIELD.name = "items"
+MEDAL_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_base_cfgs.items"
+MEDAL_BASE_CFGS_ITEMS_FIELD.number = 1
+MEDAL_BASE_CFGS_ITEMS_FIELD.index = 0
+MEDAL_BASE_CFGS_ITEMS_FIELD.label = 3
+MEDAL_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+MEDAL_BASE_CFGS_ITEMS_FIELD.default_value = {}
+MEDAL_BASE_CFGS_ITEMS_FIELD.message_type = MEDAL_BASE_CFG
+MEDAL_BASE_CFGS_ITEMS_FIELD.type = 11
+MEDAL_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MEDAL_BASE_CFGS.name = "medal_base_cfgs"
+MEDAL_BASE_CFGS.full_name = ".ftcfg.medal_base_cfgs"
+MEDAL_BASE_CFGS.nested_types = {}
+MEDAL_BASE_CFGS.enum_types = {}
+MEDAL_BASE_CFGS.fields = {MEDAL_BASE_CFGS_ITEMS_FIELD}
+MEDAL_BASE_CFGS.is_extendable = false
+MEDAL_BASE_CFGS.extensions = {}
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.name = "id"
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.id"
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.number = 1
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.index = 0
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.default_value = 0
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.type = 13
+MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.cpp_type = 3
+
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.name = "starLevel"
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.starLevel"
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.number = 2
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.index = 1
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.default_value = 0
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.type = 5
+MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.cpp_type = 1
+
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.name = "type"
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.type"
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.number = 3
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.index = 2
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.default_value = 0
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.type = 5
+MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.cpp_type = 1
+
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.name = "need_group_num"
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.need_group_num"
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.number = 4
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.index = 3
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.default_value = 0
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.type = 5
+MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.cpp_type = 1
+
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.name = "activation_attribute1"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute1"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.number = 5
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.index = 4
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.default_value = ""
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.type = 9
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.cpp_type = 9
+
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.name = "activation_attribute2"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute2"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.number = 6
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.index = 5
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.default_value = ""
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.type = 9
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.cpp_type = 9
+
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.name = "activation_attribute3"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute3"
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.number = 7
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.index = 6
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.label = 2
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.default_value = ""
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.type = 9
+MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.cpp_type = 9
+
+MEDAL_COMPOSITE_ADDITION_CFG.name = "medal_composite_addition_cfg"
+MEDAL_COMPOSITE_ADDITION_CFG.full_name = ".ftcfg.medal_composite_addition_cfg"
+MEDAL_COMPOSITE_ADDITION_CFG.nested_types = {}
+MEDAL_COMPOSITE_ADDITION_CFG.enum_types = {}
+MEDAL_COMPOSITE_ADDITION_CFG.fields = {MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD}
+MEDAL_COMPOSITE_ADDITION_CFG.is_extendable = false
+MEDAL_COMPOSITE_ADDITION_CFG.extensions = {}
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.name = "items"
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_composite_addition_cfgs.items"
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.number = 1
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.index = 0
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.label = 3
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.has_default_value = false
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.default_value = {}
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.message_type = MEDAL_COMPOSITE_ADDITION_CFG
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.type = 11
+MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MEDAL_COMPOSITE_ADDITION_CFGS.name = "medal_composite_addition_cfgs"
+MEDAL_COMPOSITE_ADDITION_CFGS.full_name = ".ftcfg.medal_composite_addition_cfgs"
+MEDAL_COMPOSITE_ADDITION_CFGS.nested_types = {}
+MEDAL_COMPOSITE_ADDITION_CFGS.enum_types = {}
+MEDAL_COMPOSITE_ADDITION_CFGS.fields = {MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD}
+MEDAL_COMPOSITE_ADDITION_CFGS.is_extendable = false
+MEDAL_COMPOSITE_ADDITION_CFGS.extensions = {}
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.name = "type"
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_open_level_cfg.type"
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.number = 1
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.index = 0
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.label = 2
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.has_default_value = false
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.default_value = 0
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.type = 5
+MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.cpp_type = 1
+
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.name = "level"
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.medal_open_level_cfg.level"
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.number = 2
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.index = 1
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.label = 2
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.has_default_value = false
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.default_value = 0
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.type = 5
+MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.cpp_type = 1
+
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.name = "name"
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.full_name = ".ftcfg.medal_open_level_cfg.name"
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.number = 3
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.index = 2
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.label = 2
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.has_default_value = false
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.default_value = 0
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.type = 5
+MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.cpp_type = 1
+
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.name = "desc"
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.full_name = ".ftcfg.medal_open_level_cfg.desc"
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.number = 4
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.index = 3
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.label = 2
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.has_default_value = false
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.default_value = 0
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.type = 5
+MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.cpp_type = 1
+
+MEDAL_OPEN_LEVEL_CFG.name = "medal_open_level_cfg"
+MEDAL_OPEN_LEVEL_CFG.full_name = ".ftcfg.medal_open_level_cfg"
+MEDAL_OPEN_LEVEL_CFG.nested_types = {}
+MEDAL_OPEN_LEVEL_CFG.enum_types = {}
+MEDAL_OPEN_LEVEL_CFG.fields = {MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD, MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD, MEDAL_OPEN_LEVEL_CFG_NAME_FIELD, MEDAL_OPEN_LEVEL_CFG_DESC_FIELD}
+MEDAL_OPEN_LEVEL_CFG.is_extendable = false
+MEDAL_OPEN_LEVEL_CFG.extensions = {}
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.name = "items"
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_open_level_cfgs.items"
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.number = 1
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.index = 0
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.label = 3
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.message_type = MEDAL_OPEN_LEVEL_CFG
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.type = 11
+MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MEDAL_OPEN_LEVEL_CFGS.name = "medal_open_level_cfgs"
+MEDAL_OPEN_LEVEL_CFGS.full_name = ".ftcfg.medal_open_level_cfgs"
+MEDAL_OPEN_LEVEL_CFGS.nested_types = {}
+MEDAL_OPEN_LEVEL_CFGS.enum_types = {}
+MEDAL_OPEN_LEVEL_CFGS.fields = {MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD}
+MEDAL_OPEN_LEVEL_CFGS.is_extendable = false
+MEDAL_OPEN_LEVEL_CFGS.extensions = {}
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.name = "starlevel"
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.starlevel"
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.number = 1
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.index = 0
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.label = 2
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.has_default_value = false
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.default_value = 0
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.type = 5
+MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.cpp_type = 1
+
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.name = "level"
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.level"
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.number = 2
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.index = 1
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.label = 2
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.has_default_value = false
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.default_value = 0
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.type = 5
+MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.cpp_type = 1
+
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.name = "num"
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.num"
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.number = 3
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.index = 2
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.label = 2
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.has_default_value = false
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.default_value = 0
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.type = 5
+MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.cpp_type = 1
+
+MEDAL_STAR_OPEN_LEVEL_CFG.name = "medal_star_open_level_cfg"
+MEDAL_STAR_OPEN_LEVEL_CFG.full_name = ".ftcfg.medal_star_open_level_cfg"
+MEDAL_STAR_OPEN_LEVEL_CFG.nested_types = {}
+MEDAL_STAR_OPEN_LEVEL_CFG.enum_types = {}
+MEDAL_STAR_OPEN_LEVEL_CFG.fields = {MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD, MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD, MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD}
+MEDAL_STAR_OPEN_LEVEL_CFG.is_extendable = false
+MEDAL_STAR_OPEN_LEVEL_CFG.extensions = {}
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.name = "items"
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_star_open_level_cfgs.items"
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.number = 1
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.index = 0
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.label = 3
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.message_type = MEDAL_STAR_OPEN_LEVEL_CFG
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.type = 11
+MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MEDAL_STAR_OPEN_LEVEL_CFGS.name = "medal_star_open_level_cfgs"
+MEDAL_STAR_OPEN_LEVEL_CFGS.full_name = ".ftcfg.medal_star_open_level_cfgs"
+MEDAL_STAR_OPEN_LEVEL_CFGS.nested_types = {}
+MEDAL_STAR_OPEN_LEVEL_CFGS.enum_types = {}
+MEDAL_STAR_OPEN_LEVEL_CFGS.fields = {MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD}
+MEDAL_STAR_OPEN_LEVEL_CFGS.is_extendable = false
+MEDAL_STAR_OPEN_LEVEL_CFGS.extensions = {}
+FORMULA_CFG_FORMULA_ID_FIELD.name = "formula_id"
+FORMULA_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.formula_cfg.formula_id"
+FORMULA_CFG_FORMULA_ID_FIELD.number = 1
+FORMULA_CFG_FORMULA_ID_FIELD.index = 0
+FORMULA_CFG_FORMULA_ID_FIELD.label = 2
+FORMULA_CFG_FORMULA_ID_FIELD.has_default_value = false
+FORMULA_CFG_FORMULA_ID_FIELD.default_value = 0
+FORMULA_CFG_FORMULA_ID_FIELD.type = 5
+FORMULA_CFG_FORMULA_ID_FIELD.cpp_type = 1
+
+FORMULA_CFG_COST_IDS_FIELD.name = "cost_ids"
+FORMULA_CFG_COST_IDS_FIELD.full_name = ".ftcfg.formula_cfg.cost_ids"
+FORMULA_CFG_COST_IDS_FIELD.number = 2
+FORMULA_CFG_COST_IDS_FIELD.index = 1
+FORMULA_CFG_COST_IDS_FIELD.label = 3
+FORMULA_CFG_COST_IDS_FIELD.has_default_value = false
+FORMULA_CFG_COST_IDS_FIELD.default_value = {}
+FORMULA_CFG_COST_IDS_FIELD.type = 5
+FORMULA_CFG_COST_IDS_FIELD.cpp_type = 1
+
+FORMULA_CFG_COST_COUNTS_FIELD.name = "cost_counts"
+FORMULA_CFG_COST_COUNTS_FIELD.full_name = ".ftcfg.formula_cfg.cost_counts"
+FORMULA_CFG_COST_COUNTS_FIELD.number = 3
+FORMULA_CFG_COST_COUNTS_FIELD.index = 2
+FORMULA_CFG_COST_COUNTS_FIELD.label = 3
+FORMULA_CFG_COST_COUNTS_FIELD.has_default_value = false
+FORMULA_CFG_COST_COUNTS_FIELD.default_value = {}
+FORMULA_CFG_COST_COUNTS_FIELD.type = 5
+FORMULA_CFG_COST_COUNTS_FIELD.cpp_type = 1
+
+FORMULA_CFG_ITEM_IDS_FIELD.name = "item_ids"
+FORMULA_CFG_ITEM_IDS_FIELD.full_name = ".ftcfg.formula_cfg.item_ids"
+FORMULA_CFG_ITEM_IDS_FIELD.number = 4
+FORMULA_CFG_ITEM_IDS_FIELD.index = 3
+FORMULA_CFG_ITEM_IDS_FIELD.label = 3
+FORMULA_CFG_ITEM_IDS_FIELD.has_default_value = false
+FORMULA_CFG_ITEM_IDS_FIELD.default_value = {}
+FORMULA_CFG_ITEM_IDS_FIELD.type = 5
+FORMULA_CFG_ITEM_IDS_FIELD.cpp_type = 1
+
+FORMULA_CFG_ITEM_COUNTS_FIELD.name = "item_counts"
+FORMULA_CFG_ITEM_COUNTS_FIELD.full_name = ".ftcfg.formula_cfg.item_counts"
+FORMULA_CFG_ITEM_COUNTS_FIELD.number = 5
+FORMULA_CFG_ITEM_COUNTS_FIELD.index = 4
+FORMULA_CFG_ITEM_COUNTS_FIELD.label = 3
+FORMULA_CFG_ITEM_COUNTS_FIELD.has_default_value = false
+FORMULA_CFG_ITEM_COUNTS_FIELD.default_value = {}
+FORMULA_CFG_ITEM_COUNTS_FIELD.type = 5
+FORMULA_CFG_ITEM_COUNTS_FIELD.cpp_type = 1
+
+FORMULA_CFG.name = "formula_cfg"
+FORMULA_CFG.full_name = ".ftcfg.formula_cfg"
+FORMULA_CFG.nested_types = {}
+FORMULA_CFG.enum_types = {}
+FORMULA_CFG.fields = {FORMULA_CFG_FORMULA_ID_FIELD, FORMULA_CFG_COST_IDS_FIELD, FORMULA_CFG_COST_COUNTS_FIELD, FORMULA_CFG_ITEM_IDS_FIELD, FORMULA_CFG_ITEM_COUNTS_FIELD}
+FORMULA_CFG.is_extendable = false
+FORMULA_CFG.extensions = {}
+FORMULA_CFGS_ITEMS_FIELD.name = "items"
+FORMULA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.formula_cfgs.items"
+FORMULA_CFGS_ITEMS_FIELD.number = 1
+FORMULA_CFGS_ITEMS_FIELD.index = 0
+FORMULA_CFGS_ITEMS_FIELD.label = 3
+FORMULA_CFGS_ITEMS_FIELD.has_default_value = false
+FORMULA_CFGS_ITEMS_FIELD.default_value = {}
+FORMULA_CFGS_ITEMS_FIELD.message_type = FORMULA_CFG
+FORMULA_CFGS_ITEMS_FIELD.type = 11
+FORMULA_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FORMULA_CFGS.name = "formula_cfgs"
+FORMULA_CFGS.full_name = ".ftcfg.formula_cfgs"
+FORMULA_CFGS.nested_types = {}
+FORMULA_CFGS.enum_types = {}
+FORMULA_CFGS.fields = {FORMULA_CFGS_ITEMS_FIELD}
+FORMULA_CFGS.is_extendable = false
+FORMULA_CFGS.extensions = {}
+MALL_ITEM_CFG_GUID_FIELD.name = "guid"
+MALL_ITEM_CFG_GUID_FIELD.full_name = ".ftcfg.mall_item_cfg.guid"
+MALL_ITEM_CFG_GUID_FIELD.number = 1
+MALL_ITEM_CFG_GUID_FIELD.index = 0
+MALL_ITEM_CFG_GUID_FIELD.label = 2
+MALL_ITEM_CFG_GUID_FIELD.has_default_value = false
+MALL_ITEM_CFG_GUID_FIELD.default_value = 0
+MALL_ITEM_CFG_GUID_FIELD.type = 13
+MALL_ITEM_CFG_GUID_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG_TYPE_FIELD.name = "type"
+MALL_ITEM_CFG_TYPE_FIELD.full_name = ".ftcfg.mall_item_cfg.type"
+MALL_ITEM_CFG_TYPE_FIELD.number = 2
+MALL_ITEM_CFG_TYPE_FIELD.index = 1
+MALL_ITEM_CFG_TYPE_FIELD.label = 2
+MALL_ITEM_CFG_TYPE_FIELD.has_default_value = false
+MALL_ITEM_CFG_TYPE_FIELD.default_value = 0
+MALL_ITEM_CFG_TYPE_FIELD.type = 13
+MALL_ITEM_CFG_TYPE_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG_REAL_GUID_FIELD.name = "real_guid"
+MALL_ITEM_CFG_REAL_GUID_FIELD.full_name = ".ftcfg.mall_item_cfg.real_guid"
+MALL_ITEM_CFG_REAL_GUID_FIELD.number = 3
+MALL_ITEM_CFG_REAL_GUID_FIELD.index = 2
+MALL_ITEM_CFG_REAL_GUID_FIELD.label = 2
+MALL_ITEM_CFG_REAL_GUID_FIELD.has_default_value = false
+MALL_ITEM_CFG_REAL_GUID_FIELD.default_value = 0
+MALL_ITEM_CFG_REAL_GUID_FIELD.type = 13
+MALL_ITEM_CFG_REAL_GUID_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG_COST_TYPE_FIELD.name = "cost_type"
+MALL_ITEM_CFG_COST_TYPE_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_type"
+MALL_ITEM_CFG_COST_TYPE_FIELD.number = 4
+MALL_ITEM_CFG_COST_TYPE_FIELD.index = 3
+MALL_ITEM_CFG_COST_TYPE_FIELD.label = 2
+MALL_ITEM_CFG_COST_TYPE_FIELD.has_default_value = false
+MALL_ITEM_CFG_COST_TYPE_FIELD.default_value = 0
+MALL_ITEM_CFG_COST_TYPE_FIELD.type = 13
+MALL_ITEM_CFG_COST_TYPE_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.name = "cost_original"
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_original"
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.number = 5
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.index = 4
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.label = 2
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.has_default_value = false
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.default_value = 0
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.type = 13
+MALL_ITEM_CFG_COST_ORIGINAL_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG_COST_CURRENT_FIELD.name = "cost_current"
+MALL_ITEM_CFG_COST_CURRENT_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_current"
+MALL_ITEM_CFG_COST_CURRENT_FIELD.number = 6
+MALL_ITEM_CFG_COST_CURRENT_FIELD.index = 5
+MALL_ITEM_CFG_COST_CURRENT_FIELD.label = 2
+MALL_ITEM_CFG_COST_CURRENT_FIELD.has_default_value = false
+MALL_ITEM_CFG_COST_CURRENT_FIELD.default_value = 0
+MALL_ITEM_CFG_COST_CURRENT_FIELD.type = 13
+MALL_ITEM_CFG_COST_CURRENT_FIELD.cpp_type = 3
+
+MALL_ITEM_CFG.name = "mall_item_cfg"
+MALL_ITEM_CFG.full_name = ".ftcfg.mall_item_cfg"
+MALL_ITEM_CFG.nested_types = {}
+MALL_ITEM_CFG.enum_types = {}
+MALL_ITEM_CFG.fields = {MALL_ITEM_CFG_GUID_FIELD, MALL_ITEM_CFG_TYPE_FIELD, MALL_ITEM_CFG_REAL_GUID_FIELD, MALL_ITEM_CFG_COST_TYPE_FIELD, MALL_ITEM_CFG_COST_ORIGINAL_FIELD, MALL_ITEM_CFG_COST_CURRENT_FIELD}
+MALL_ITEM_CFG.is_extendable = false
+MALL_ITEM_CFG.extensions = {}
+MALL_ITEM_CFGS_ITEMS_FIELD.name = "items"
+MALL_ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mall_item_cfgs.items"
+MALL_ITEM_CFGS_ITEMS_FIELD.number = 1
+MALL_ITEM_CFGS_ITEMS_FIELD.index = 0
+MALL_ITEM_CFGS_ITEMS_FIELD.label = 3
+MALL_ITEM_CFGS_ITEMS_FIELD.has_default_value = false
+MALL_ITEM_CFGS_ITEMS_FIELD.default_value = {}
+MALL_ITEM_CFGS_ITEMS_FIELD.message_type = MALL_ITEM_CFG
+MALL_ITEM_CFGS_ITEMS_FIELD.type = 11
+MALL_ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MALL_ITEM_CFGS.name = "mall_item_cfgs"
+MALL_ITEM_CFGS.full_name = ".ftcfg.mall_item_cfgs"
+MALL_ITEM_CFGS.nested_types = {}
+MALL_ITEM_CFGS.enum_types = {}
+MALL_ITEM_CFGS.fields = {MALL_ITEM_CFGS_ITEMS_FIELD}
+MALL_ITEM_CFGS.is_extendable = false
+MALL_ITEM_CFGS.extensions = {}
+SHOP_TYPE_CFG_ID_FIELD.name = "id"
+SHOP_TYPE_CFG_ID_FIELD.full_name = ".ftcfg.shop_type_cfg.id"
+SHOP_TYPE_CFG_ID_FIELD.number = 1
+SHOP_TYPE_CFG_ID_FIELD.index = 0
+SHOP_TYPE_CFG_ID_FIELD.label = 2
+SHOP_TYPE_CFG_ID_FIELD.has_default_value = false
+SHOP_TYPE_CFG_ID_FIELD.default_value = 0
+SHOP_TYPE_CFG_ID_FIELD.type = 13
+SHOP_TYPE_CFG_ID_FIELD.cpp_type = 3
+
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.name = "shop_name"
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_name"
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.number = 2
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.index = 1
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.label = 2
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.has_default_value = false
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.default_value = ""
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.type = 9
+SHOP_TYPE_CFG_SHOP_NAME_FIELD.cpp_type = 9
+
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.name = "open_lvl"
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.full_name = ".ftcfg.shop_type_cfg.open_lvl"
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.number = 3
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.index = 2
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.label = 2
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.has_default_value = false
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.default_value = 0
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.type = 5
+SHOP_TYPE_CFG_OPEN_LVL_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.name = "shop_type"
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_type"
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.number = 4
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.index = 3
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.label = 2
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.has_default_value = false
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.default_value = nil
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.enum_type = config_predefine_pb.ESHOPTYPE
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.type = 14
+SHOP_TYPE_CFG_SHOP_TYPE_FIELD.cpp_type = 8
+
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.name = "shopsub_type"
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.full_name = ".ftcfg.shop_type_cfg.shopsub_type"
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.number = 5
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.index = 4
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.label = 2
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.has_default_value = false
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.default_value = 0
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.type = 5
+SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.name = "shop_items"
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_items"
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.number = 6
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.index = 5
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.label = 3
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.has_default_value = false
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.default_value = {}
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.type = 5
+SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_ISTAB_FIELD.name = "istab"
+SHOP_TYPE_CFG_ISTAB_FIELD.full_name = ".ftcfg.shop_type_cfg.istab"
+SHOP_TYPE_CFG_ISTAB_FIELD.number = 7
+SHOP_TYPE_CFG_ISTAB_FIELD.index = 6
+SHOP_TYPE_CFG_ISTAB_FIELD.label = 2
+SHOP_TYPE_CFG_ISTAB_FIELD.has_default_value = false
+SHOP_TYPE_CFG_ISTAB_FIELD.default_value = 0
+SHOP_TYPE_CFG_ISTAB_FIELD.type = 5
+SHOP_TYPE_CFG_ISTAB_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.name = "tab_name1"
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name1"
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.number = 8
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.index = 7
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.label = 2
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.default_value = ""
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.type = 9
+SHOP_TYPE_CFG_TAB_NAME1_FIELD.cpp_type = 9
+
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.name = "tab_name2"
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name2"
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.number = 9
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.index = 8
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.label = 2
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.default_value = ""
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.type = 9
+SHOP_TYPE_CFG_TAB_NAME2_FIELD.cpp_type = 9
+
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.name = "tab_name3"
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name3"
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.number = 10
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.index = 9
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.label = 2
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.default_value = ""
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.type = 9
+SHOP_TYPE_CFG_TAB_NAME3_FIELD.cpp_type = 9
+
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.name = "tab_items1"
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items1"
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.number = 11
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.index = 10
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.label = 3
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.default_value = {}
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.type = 5
+SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.name = "tab_items2"
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items2"
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.number = 12
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.index = 11
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.label = 3
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.default_value = {}
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.type = 5
+SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.name = "tab_items3"
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items3"
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.number = 13
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.index = 12
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.label = 3
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.has_default_value = false
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.default_value = {}
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.type = 5
+SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.cpp_type = 1
+
+SHOP_TYPE_CFG.name = "shop_type_cfg"
+SHOP_TYPE_CFG.full_name = ".ftcfg.shop_type_cfg"
+SHOP_TYPE_CFG.nested_types = {}
+SHOP_TYPE_CFG.enum_types = {}
+SHOP_TYPE_CFG.fields = {SHOP_TYPE_CFG_ID_FIELD, SHOP_TYPE_CFG_SHOP_NAME_FIELD, SHOP_TYPE_CFG_OPEN_LVL_FIELD, SHOP_TYPE_CFG_SHOP_TYPE_FIELD, SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD, SHOP_TYPE_CFG_SHOP_ITEMS_FIELD, SHOP_TYPE_CFG_ISTAB_FIELD, SHOP_TYPE_CFG_TAB_NAME1_FIELD, SHOP_TYPE_CFG_TAB_NAME2_FIELD, SHOP_TYPE_CFG_TAB_NAME3_FIELD, SHOP_TYPE_CFG_TAB_ITEMS1_FIELD, SHOP_TYPE_CFG_TAB_ITEMS2_FIELD, SHOP_TYPE_CFG_TAB_ITEMS3_FIELD}
+SHOP_TYPE_CFG.is_extendable = false
+SHOP_TYPE_CFG.extensions = {}
+SHOP_TYPE_CFGS_ITEMS_FIELD.name = "items"
+SHOP_TYPE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.shop_type_cfgs.items"
+SHOP_TYPE_CFGS_ITEMS_FIELD.number = 1
+SHOP_TYPE_CFGS_ITEMS_FIELD.index = 0
+SHOP_TYPE_CFGS_ITEMS_FIELD.label = 3
+SHOP_TYPE_CFGS_ITEMS_FIELD.has_default_value = false
+SHOP_TYPE_CFGS_ITEMS_FIELD.default_value = {}
+SHOP_TYPE_CFGS_ITEMS_FIELD.message_type = SHOP_TYPE_CFG
+SHOP_TYPE_CFGS_ITEMS_FIELD.type = 11
+SHOP_TYPE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SHOP_TYPE_CFGS.name = "shop_type_cfgs"
+SHOP_TYPE_CFGS.full_name = ".ftcfg.shop_type_cfgs"
+SHOP_TYPE_CFGS.nested_types = {}
+SHOP_TYPE_CFGS.enum_types = {}
+SHOP_TYPE_CFGS.fields = {SHOP_TYPE_CFGS_ITEMS_FIELD}
+SHOP_TYPE_CFGS.is_extendable = false
+SHOP_TYPE_CFGS.extensions = {}
+SCENE_EVENT_CFG_ID_FIELD.name = "id"
+SCENE_EVENT_CFG_ID_FIELD.full_name = ".ftcfg.scene_event_cfg.id"
+SCENE_EVENT_CFG_ID_FIELD.number = 1
+SCENE_EVENT_CFG_ID_FIELD.index = 0
+SCENE_EVENT_CFG_ID_FIELD.label = 2
+SCENE_EVENT_CFG_ID_FIELD.has_default_value = false
+SCENE_EVENT_CFG_ID_FIELD.default_value = 0
+SCENE_EVENT_CFG_ID_FIELD.type = 5
+SCENE_EVENT_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_STEP_ID_FIELD.name = "step_id"
+SCENE_EVENT_CFG_STEP_ID_FIELD.full_name = ".ftcfg.scene_event_cfg.step_id"
+SCENE_EVENT_CFG_STEP_ID_FIELD.number = 2
+SCENE_EVENT_CFG_STEP_ID_FIELD.index = 1
+SCENE_EVENT_CFG_STEP_ID_FIELD.label = 2
+SCENE_EVENT_CFG_STEP_ID_FIELD.has_default_value = false
+SCENE_EVENT_CFG_STEP_ID_FIELD.default_value = 0
+SCENE_EVENT_CFG_STEP_ID_FIELD.type = 5
+SCENE_EVENT_CFG_STEP_ID_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.name = "event_type"
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.scene_event_cfg.event_type"
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.number = 3
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.index = 2
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.label = 2
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.has_default_value = false
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.default_value = nil
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.enum_type = config_predefine_pb.ESCENEEVENTTYPE
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.type = 14
+SCENE_EVENT_CFG_EVENT_TYPE_FIELD.cpp_type = 8
+
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.name = "condiditon1"
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon1"
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.number = 4
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.index = 3
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.label = 2
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.has_default_value = false
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.default_value = 0
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.type = 5
+SCENE_EVENT_CFG_CONDIDITON1_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.name = "condiditon2"
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon2"
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.number = 5
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.index = 4
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.label = 2
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.has_default_value = false
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.default_value = 0
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.type = 5
+SCENE_EVENT_CFG_CONDIDITON2_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.name = "condiditon3"
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon3"
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.number = 6
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.index = 5
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.label = 2
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.has_default_value = false
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.default_value = 0
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.type = 5
+SCENE_EVENT_CFG_CONDIDITON3_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.name = "condiditon4"
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon4"
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.number = 7
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.index = 6
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.label = 2
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.has_default_value = false
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.default_value = 0
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.type = 5
+SCENE_EVENT_CFG_CONDIDITON4_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.name = "result_type"
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.full_name = ".ftcfg.scene_event_cfg.result_type"
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.number = 8
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.index = 7
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.label = 2
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.has_default_value = false
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.default_value = nil
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.enum_type = config_predefine_pb.ESCENERESULTTYPE
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.type = 14
+SCENE_EVENT_CFG_RESULT_TYPE_FIELD.cpp_type = 8
+
+SCENE_EVENT_CFG_RESULT1_FIELD.name = "result1"
+SCENE_EVENT_CFG_RESULT1_FIELD.full_name = ".ftcfg.scene_event_cfg.result1"
+SCENE_EVENT_CFG_RESULT1_FIELD.number = 9
+SCENE_EVENT_CFG_RESULT1_FIELD.index = 8
+SCENE_EVENT_CFG_RESULT1_FIELD.label = 3
+SCENE_EVENT_CFG_RESULT1_FIELD.has_default_value = false
+SCENE_EVENT_CFG_RESULT1_FIELD.default_value = {}
+SCENE_EVENT_CFG_RESULT1_FIELD.type = 5
+SCENE_EVENT_CFG_RESULT1_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_RESULT2_FIELD.name = "result2"
+SCENE_EVENT_CFG_RESULT2_FIELD.full_name = ".ftcfg.scene_event_cfg.result2"
+SCENE_EVENT_CFG_RESULT2_FIELD.number = 10
+SCENE_EVENT_CFG_RESULT2_FIELD.index = 9
+SCENE_EVENT_CFG_RESULT2_FIELD.label = 3
+SCENE_EVENT_CFG_RESULT2_FIELD.has_default_value = false
+SCENE_EVENT_CFG_RESULT2_FIELD.default_value = {}
+SCENE_EVENT_CFG_RESULT2_FIELD.type = 5
+SCENE_EVENT_CFG_RESULT2_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_RESULT3_FIELD.name = "result3"
+SCENE_EVENT_CFG_RESULT3_FIELD.full_name = ".ftcfg.scene_event_cfg.result3"
+SCENE_EVENT_CFG_RESULT3_FIELD.number = 11
+SCENE_EVENT_CFG_RESULT3_FIELD.index = 10
+SCENE_EVENT_CFG_RESULT3_FIELD.label = 3
+SCENE_EVENT_CFG_RESULT3_FIELD.has_default_value = false
+SCENE_EVENT_CFG_RESULT3_FIELD.default_value = {}
+SCENE_EVENT_CFG_RESULT3_FIELD.type = 5
+SCENE_EVENT_CFG_RESULT3_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG_RESULT4_FIELD.name = "result4"
+SCENE_EVENT_CFG_RESULT4_FIELD.full_name = ".ftcfg.scene_event_cfg.result4"
+SCENE_EVENT_CFG_RESULT4_FIELD.number = 12
+SCENE_EVENT_CFG_RESULT4_FIELD.index = 11
+SCENE_EVENT_CFG_RESULT4_FIELD.label = 3
+SCENE_EVENT_CFG_RESULT4_FIELD.has_default_value = false
+SCENE_EVENT_CFG_RESULT4_FIELD.default_value = {}
+SCENE_EVENT_CFG_RESULT4_FIELD.type = 5
+SCENE_EVENT_CFG_RESULT4_FIELD.cpp_type = 1
+
+SCENE_EVENT_CFG.name = "scene_event_cfg"
+SCENE_EVENT_CFG.full_name = ".ftcfg.scene_event_cfg"
+SCENE_EVENT_CFG.nested_types = {}
+SCENE_EVENT_CFG.enum_types = {}
+SCENE_EVENT_CFG.fields = {SCENE_EVENT_CFG_ID_FIELD, SCENE_EVENT_CFG_STEP_ID_FIELD, SCENE_EVENT_CFG_EVENT_TYPE_FIELD, SCENE_EVENT_CFG_CONDIDITON1_FIELD, SCENE_EVENT_CFG_CONDIDITON2_FIELD, SCENE_EVENT_CFG_CONDIDITON3_FIELD, SCENE_EVENT_CFG_CONDIDITON4_FIELD, SCENE_EVENT_CFG_RESULT_TYPE_FIELD, SCENE_EVENT_CFG_RESULT1_FIELD, SCENE_EVENT_CFG_RESULT2_FIELD, SCENE_EVENT_CFG_RESULT3_FIELD, SCENE_EVENT_CFG_RESULT4_FIELD}
+SCENE_EVENT_CFG.is_extendable = false
+SCENE_EVENT_CFG.extensions = {}
+SCENE_EVENT_CFGS_ITEMS_FIELD.name = "items"
+SCENE_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_event_cfgs.items"
+SCENE_EVENT_CFGS_ITEMS_FIELD.number = 1
+SCENE_EVENT_CFGS_ITEMS_FIELD.index = 0
+SCENE_EVENT_CFGS_ITEMS_FIELD.label = 3
+SCENE_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_EVENT_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_EVENT_CFGS_ITEMS_FIELD.message_type = SCENE_EVENT_CFG
+SCENE_EVENT_CFGS_ITEMS_FIELD.type = 11
+SCENE_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_EVENT_CFGS.name = "scene_event_cfgs"
+SCENE_EVENT_CFGS.full_name = ".ftcfg.scene_event_cfgs"
+SCENE_EVENT_CFGS.nested_types = {}
+SCENE_EVENT_CFGS.enum_types = {}
+SCENE_EVENT_CFGS.fields = {SCENE_EVENT_CFGS_ITEMS_FIELD}
+SCENE_EVENT_CFGS.is_extendable = false
+SCENE_EVENT_CFGS.extensions = {}
+SCENE_PORTAL_CFG_ID_FIELD.name = "id"
+SCENE_PORTAL_CFG_ID_FIELD.full_name = ".ftcfg.scene_portal_cfg.id"
+SCENE_PORTAL_CFG_ID_FIELD.number = 1
+SCENE_PORTAL_CFG_ID_FIELD.index = 0
+SCENE_PORTAL_CFG_ID_FIELD.label = 2
+SCENE_PORTAL_CFG_ID_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_ID_FIELD.default_value = 0
+SCENE_PORTAL_CFG_ID_FIELD.type = 5
+SCENE_PORTAL_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_PORTAL_CFG_MAP_ID_FIELD.name = "map_id"
+SCENE_PORTAL_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_portal_cfg.map_id"
+SCENE_PORTAL_CFG_MAP_ID_FIELD.number = 2
+SCENE_PORTAL_CFG_MAP_ID_FIELD.index = 1
+SCENE_PORTAL_CFG_MAP_ID_FIELD.label = 2
+SCENE_PORTAL_CFG_MAP_ID_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_MAP_ID_FIELD.default_value = 0
+SCENE_PORTAL_CFG_MAP_ID_FIELD.type = 5
+SCENE_PORTAL_CFG_MAP_ID_FIELD.cpp_type = 1
+
+SCENE_PORTAL_CFG_POS_X_FIELD.name = "pos_x"
+SCENE_PORTAL_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_x"
+SCENE_PORTAL_CFG_POS_X_FIELD.number = 3
+SCENE_PORTAL_CFG_POS_X_FIELD.index = 2
+SCENE_PORTAL_CFG_POS_X_FIELD.label = 2
+SCENE_PORTAL_CFG_POS_X_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_POS_X_FIELD.default_value = 0.0
+SCENE_PORTAL_CFG_POS_X_FIELD.type = 2
+SCENE_PORTAL_CFG_POS_X_FIELD.cpp_type = 6
+
+SCENE_PORTAL_CFG_POS_Y_FIELD.name = "pos_y"
+SCENE_PORTAL_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_y"
+SCENE_PORTAL_CFG_POS_Y_FIELD.number = 4
+SCENE_PORTAL_CFG_POS_Y_FIELD.index = 3
+SCENE_PORTAL_CFG_POS_Y_FIELD.label = 2
+SCENE_PORTAL_CFG_POS_Y_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_POS_Y_FIELD.default_value = 0.0
+SCENE_PORTAL_CFG_POS_Y_FIELD.type = 2
+SCENE_PORTAL_CFG_POS_Y_FIELD.cpp_type = 6
+
+SCENE_PORTAL_CFG_POS_Z_FIELD.name = "pos_z"
+SCENE_PORTAL_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_z"
+SCENE_PORTAL_CFG_POS_Z_FIELD.number = 5
+SCENE_PORTAL_CFG_POS_Z_FIELD.index = 4
+SCENE_PORTAL_CFG_POS_Z_FIELD.label = 2
+SCENE_PORTAL_CFG_POS_Z_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_POS_Z_FIELD.default_value = 0.0
+SCENE_PORTAL_CFG_POS_Z_FIELD.type = 2
+SCENE_PORTAL_CFG_POS_Z_FIELD.cpp_type = 6
+
+SCENE_PORTAL_CFG_RADIUS_FIELD.name = "radius"
+SCENE_PORTAL_CFG_RADIUS_FIELD.full_name = ".ftcfg.scene_portal_cfg.radius"
+SCENE_PORTAL_CFG_RADIUS_FIELD.number = 6
+SCENE_PORTAL_CFG_RADIUS_FIELD.index = 5
+SCENE_PORTAL_CFG_RADIUS_FIELD.label = 2
+SCENE_PORTAL_CFG_RADIUS_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_RADIUS_FIELD.default_value = 0.0
+SCENE_PORTAL_CFG_RADIUS_FIELD.type = 2
+SCENE_PORTAL_CFG_RADIUS_FIELD.cpp_type = 6
+
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.name = "orientation"
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_portal_cfg.orientation"
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.number = 7
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.index = 6
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.label = 2
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.default_value = 0.0
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.type = 2
+SCENE_PORTAL_CFG_ORIENTATION_FIELD.cpp_type = 6
+
+SCENE_PORTAL_CFG_ENABLED_FIELD.name = "enabled"
+SCENE_PORTAL_CFG_ENABLED_FIELD.full_name = ".ftcfg.scene_portal_cfg.enabled"
+SCENE_PORTAL_CFG_ENABLED_FIELD.number = 8
+SCENE_PORTAL_CFG_ENABLED_FIELD.index = 7
+SCENE_PORTAL_CFG_ENABLED_FIELD.label = 2
+SCENE_PORTAL_CFG_ENABLED_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_ENABLED_FIELD.default_value = 0
+SCENE_PORTAL_CFG_ENABLED_FIELD.type = 5
+SCENE_PORTAL_CFG_ENABLED_FIELD.cpp_type = 1
+
+SCENE_PORTAL_CFG_RESID_FIELD.name = "resid"
+SCENE_PORTAL_CFG_RESID_FIELD.full_name = ".ftcfg.scene_portal_cfg.resid"
+SCENE_PORTAL_CFG_RESID_FIELD.number = 9
+SCENE_PORTAL_CFG_RESID_FIELD.index = 8
+SCENE_PORTAL_CFG_RESID_FIELD.label = 2
+SCENE_PORTAL_CFG_RESID_FIELD.has_default_value = false
+SCENE_PORTAL_CFG_RESID_FIELD.default_value = 0
+SCENE_PORTAL_CFG_RESID_FIELD.type = 5
+SCENE_PORTAL_CFG_RESID_FIELD.cpp_type = 1
+
+SCENE_PORTAL_CFG.name = "scene_portal_cfg"
+SCENE_PORTAL_CFG.full_name = ".ftcfg.scene_portal_cfg"
+SCENE_PORTAL_CFG.nested_types = {}
+SCENE_PORTAL_CFG.enum_types = {}
+SCENE_PORTAL_CFG.fields = {SCENE_PORTAL_CFG_ID_FIELD, SCENE_PORTAL_CFG_MAP_ID_FIELD, SCENE_PORTAL_CFG_POS_X_FIELD, SCENE_PORTAL_CFG_POS_Y_FIELD, SCENE_PORTAL_CFG_POS_Z_FIELD, SCENE_PORTAL_CFG_RADIUS_FIELD, SCENE_PORTAL_CFG_ORIENTATION_FIELD, SCENE_PORTAL_CFG_ENABLED_FIELD, SCENE_PORTAL_CFG_RESID_FIELD}
+SCENE_PORTAL_CFG.is_extendable = false
+SCENE_PORTAL_CFG.extensions = {}
+SCENE_PORTAL_CFGS_ITEMS_FIELD.name = "items"
+SCENE_PORTAL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_portal_cfgs.items"
+SCENE_PORTAL_CFGS_ITEMS_FIELD.number = 1
+SCENE_PORTAL_CFGS_ITEMS_FIELD.index = 0
+SCENE_PORTAL_CFGS_ITEMS_FIELD.label = 3
+SCENE_PORTAL_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_PORTAL_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_PORTAL_CFGS_ITEMS_FIELD.message_type = SCENE_PORTAL_CFG
+SCENE_PORTAL_CFGS_ITEMS_FIELD.type = 11
+SCENE_PORTAL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_PORTAL_CFGS.name = "scene_portal_cfgs"
+SCENE_PORTAL_CFGS.full_name = ".ftcfg.scene_portal_cfgs"
+SCENE_PORTAL_CFGS.nested_types = {}
+SCENE_PORTAL_CFGS.enum_types = {}
+SCENE_PORTAL_CFGS.fields = {SCENE_PORTAL_CFGS_ITEMS_FIELD}
+SCENE_PORTAL_CFGS.is_extendable = false
+SCENE_PORTAL_CFGS.extensions = {}
+SCENE_FUNCTION_CFG_ID_FIELD.name = "id"
+SCENE_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.scene_function_cfg.id"
+SCENE_FUNCTION_CFG_ID_FIELD.number = 1
+SCENE_FUNCTION_CFG_ID_FIELD.index = 0
+SCENE_FUNCTION_CFG_ID_FIELD.label = 2
+SCENE_FUNCTION_CFG_ID_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_ID_FIELD.default_value = 0
+SCENE_FUNCTION_CFG_ID_FIELD.type = 5
+SCENE_FUNCTION_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.name = "open_functions"
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.open_functions"
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.number = 2
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.index = 1
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.label = 3
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.type = 14
+SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.name = "open_paras"
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.full_name = ".ftcfg.scene_function_cfg.open_paras"
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.number = 3
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.index = 2
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.label = 3
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.type = 5
+SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.cpp_type = 1
+
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.name = "close_functions"
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.close_functions"
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.number = 4
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.index = 3
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.label = 3
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.type = 14
+SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.name = "leave_functions"
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.leave_functions"
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.number = 5
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.index = 4
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.label = 3
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.type = 14
+SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.name = "limit_functions"
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.limit_functions"
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.number = 6
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.index = 5
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.label = 3
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.type = 14
+SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.name = "slimit_functions"
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.slimit_functions"
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.number = 7
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.index = 6
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.label = 3
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.type = 14
+SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.name = "back_scene"
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.full_name = ".ftcfg.scene_function_cfg.back_scene"
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.number = 8
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.index = 7
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.label = 2
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.default_value = 0
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.type = 5
+SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.cpp_type = 1
+
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.name = "rank_ids"
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_ids"
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.number = 9
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.index = 8
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.label = 3
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.type = 5
+SCENE_FUNCTION_CFG_RANK_IDS_FIELD.cpp_type = 1
+
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.name = "rank_type"
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_type"
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.number = 10
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.index = 9
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.label = 2
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.default_value = nil
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.type = 14
+SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.name = "rank_linenames"
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_linenames"
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.number = 11
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.index = 10
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.label = 3
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.type = 5
+SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.cpp_type = 1
+
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.name = "close_opens"
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.full_name = ".ftcfg.scene_function_cfg.close_opens"
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.number = 12
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.index = 11
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.label = 3
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.default_value = {}
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.type = 14
+SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.cpp_type = 8
+
+SCENE_FUNCTION_CFG.name = "scene_function_cfg"
+SCENE_FUNCTION_CFG.full_name = ".ftcfg.scene_function_cfg"
+SCENE_FUNCTION_CFG.nested_types = {}
+SCENE_FUNCTION_CFG.enum_types = {}
+SCENE_FUNCTION_CFG.fields = {SCENE_FUNCTION_CFG_ID_FIELD, SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD, SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_BACK_SCENE_FIELD, SCENE_FUNCTION_CFG_RANK_IDS_FIELD, SCENE_FUNCTION_CFG_RANK_TYPE_FIELD, SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD, SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD}
+SCENE_FUNCTION_CFG.is_extendable = false
+SCENE_FUNCTION_CFG.extensions = {}
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_function_cfgs.items"
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.number = 1
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.index = 0
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.label = 3
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.message_type = SCENE_FUNCTION_CFG
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.type = 11
+SCENE_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_FUNCTION_CFGS.name = "scene_function_cfgs"
+SCENE_FUNCTION_CFGS.full_name = ".ftcfg.scene_function_cfgs"
+SCENE_FUNCTION_CFGS.nested_types = {}
+SCENE_FUNCTION_CFGS.enum_types = {}
+SCENE_FUNCTION_CFGS.fields = {SCENE_FUNCTION_CFGS_ITEMS_FIELD}
+SCENE_FUNCTION_CFGS.is_extendable = false
+SCENE_FUNCTION_CFGS.extensions = {}
+SCENE_AREA_CFG_AREA_ID_FIELD.name = "area_id"
+SCENE_AREA_CFG_AREA_ID_FIELD.full_name = ".ftcfg.scene_area_cfg.area_id"
+SCENE_AREA_CFG_AREA_ID_FIELD.number = 1
+SCENE_AREA_CFG_AREA_ID_FIELD.index = 0
+SCENE_AREA_CFG_AREA_ID_FIELD.label = 2
+SCENE_AREA_CFG_AREA_ID_FIELD.has_default_value = false
+SCENE_AREA_CFG_AREA_ID_FIELD.default_value = 0
+SCENE_AREA_CFG_AREA_ID_FIELD.type = 5
+SCENE_AREA_CFG_AREA_ID_FIELD.cpp_type = 1
+
+SCENE_AREA_CFG_MAP_ID_FIELD.name = "map_id"
+SCENE_AREA_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_area_cfg.map_id"
+SCENE_AREA_CFG_MAP_ID_FIELD.number = 2
+SCENE_AREA_CFG_MAP_ID_FIELD.index = 1
+SCENE_AREA_CFG_MAP_ID_FIELD.label = 2
+SCENE_AREA_CFG_MAP_ID_FIELD.has_default_value = false
+SCENE_AREA_CFG_MAP_ID_FIELD.default_value = 0
+SCENE_AREA_CFG_MAP_ID_FIELD.type = 5
+SCENE_AREA_CFG_MAP_ID_FIELD.cpp_type = 1
+
+SCENE_AREA_CFG_AREA_TYPE_FIELD.name = "area_type"
+SCENE_AREA_CFG_AREA_TYPE_FIELD.full_name = ".ftcfg.scene_area_cfg.area_type"
+SCENE_AREA_CFG_AREA_TYPE_FIELD.number = 3
+SCENE_AREA_CFG_AREA_TYPE_FIELD.index = 2
+SCENE_AREA_CFG_AREA_TYPE_FIELD.label = 2
+SCENE_AREA_CFG_AREA_TYPE_FIELD.has_default_value = false
+SCENE_AREA_CFG_AREA_TYPE_FIELD.default_value = nil
+SCENE_AREA_CFG_AREA_TYPE_FIELD.enum_type = config_predefine_pb.EAREATRIGGERTYPE
+SCENE_AREA_CFG_AREA_TYPE_FIELD.type = 14
+SCENE_AREA_CFG_AREA_TYPE_FIELD.cpp_type = 8
+
+SCENE_AREA_CFG_POS_X_FIELD.name = "pos_x"
+SCENE_AREA_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_area_cfg.pos_x"
+SCENE_AREA_CFG_POS_X_FIELD.number = 4
+SCENE_AREA_CFG_POS_X_FIELD.index = 3
+SCENE_AREA_CFG_POS_X_FIELD.label = 2
+SCENE_AREA_CFG_POS_X_FIELD.has_default_value = false
+SCENE_AREA_CFG_POS_X_FIELD.default_value = 0.0
+SCENE_AREA_CFG_POS_X_FIELD.type = 2
+SCENE_AREA_CFG_POS_X_FIELD.cpp_type = 6
+
+SCENE_AREA_CFG_POS_Y_FIELD.name = "pos_y"
+SCENE_AREA_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_area_cfg.pos_y"
+SCENE_AREA_CFG_POS_Y_FIELD.number = 5
+SCENE_AREA_CFG_POS_Y_FIELD.index = 4
+SCENE_AREA_CFG_POS_Y_FIELD.label = 2
+SCENE_AREA_CFG_POS_Y_FIELD.has_default_value = false
+SCENE_AREA_CFG_POS_Y_FIELD.default_value = 0.0
+SCENE_AREA_CFG_POS_Y_FIELD.type = 2
+SCENE_AREA_CFG_POS_Y_FIELD.cpp_type = 6
+
+SCENE_AREA_CFG_RADIUS_FIELD.name = "radius"
+SCENE_AREA_CFG_RADIUS_FIELD.full_name = ".ftcfg.scene_area_cfg.radius"
+SCENE_AREA_CFG_RADIUS_FIELD.number = 6
+SCENE_AREA_CFG_RADIUS_FIELD.index = 5
+SCENE_AREA_CFG_RADIUS_FIELD.label = 2
+SCENE_AREA_CFG_RADIUS_FIELD.has_default_value = false
+SCENE_AREA_CFG_RADIUS_FIELD.default_value = 0.0
+SCENE_AREA_CFG_RADIUS_FIELD.type = 2
+SCENE_AREA_CFG_RADIUS_FIELD.cpp_type = 6
+
+SCENE_AREA_CFG_WIDTH_FIELD.name = "width"
+SCENE_AREA_CFG_WIDTH_FIELD.full_name = ".ftcfg.scene_area_cfg.width"
+SCENE_AREA_CFG_WIDTH_FIELD.number = 7
+SCENE_AREA_CFG_WIDTH_FIELD.index = 6
+SCENE_AREA_CFG_WIDTH_FIELD.label = 2
+SCENE_AREA_CFG_WIDTH_FIELD.has_default_value = false
+SCENE_AREA_CFG_WIDTH_FIELD.default_value = 0.0
+SCENE_AREA_CFG_WIDTH_FIELD.type = 2
+SCENE_AREA_CFG_WIDTH_FIELD.cpp_type = 6
+
+SCENE_AREA_CFG_HEIGHT_FIELD.name = "height"
+SCENE_AREA_CFG_HEIGHT_FIELD.full_name = ".ftcfg.scene_area_cfg.height"
+SCENE_AREA_CFG_HEIGHT_FIELD.number = 8
+SCENE_AREA_CFG_HEIGHT_FIELD.index = 7
+SCENE_AREA_CFG_HEIGHT_FIELD.label = 2
+SCENE_AREA_CFG_HEIGHT_FIELD.has_default_value = false
+SCENE_AREA_CFG_HEIGHT_FIELD.default_value = 0.0
+SCENE_AREA_CFG_HEIGHT_FIELD.type = 2
+SCENE_AREA_CFG_HEIGHT_FIELD.cpp_type = 6
+
+SCENE_AREA_CFG_ACTION_FIELD.name = "action"
+SCENE_AREA_CFG_ACTION_FIELD.full_name = ".ftcfg.scene_area_cfg.action"
+SCENE_AREA_CFG_ACTION_FIELD.number = 9
+SCENE_AREA_CFG_ACTION_FIELD.index = 8
+SCENE_AREA_CFG_ACTION_FIELD.label = 2
+SCENE_AREA_CFG_ACTION_FIELD.has_default_value = false
+SCENE_AREA_CFG_ACTION_FIELD.default_value = nil
+SCENE_AREA_CFG_ACTION_FIELD.enum_type = config_predefine_pb.ETRIGGERACTIONTYPE
+SCENE_AREA_CFG_ACTION_FIELD.type = 14
+SCENE_AREA_CFG_ACTION_FIELD.cpp_type = 8
+
+SCENE_AREA_CFG_PARAM1_FIELD.name = "param1"
+SCENE_AREA_CFG_PARAM1_FIELD.full_name = ".ftcfg.scene_area_cfg.param1"
+SCENE_AREA_CFG_PARAM1_FIELD.number = 10
+SCENE_AREA_CFG_PARAM1_FIELD.index = 9
+SCENE_AREA_CFG_PARAM1_FIELD.label = 2
+SCENE_AREA_CFG_PARAM1_FIELD.has_default_value = false
+SCENE_AREA_CFG_PARAM1_FIELD.default_value = 0
+SCENE_AREA_CFG_PARAM1_FIELD.type = 5
+SCENE_AREA_CFG_PARAM1_FIELD.cpp_type = 1
+
+SCENE_AREA_CFG_PARAM2_FIELD.name = "param2"
+SCENE_AREA_CFG_PARAM2_FIELD.full_name = ".ftcfg.scene_area_cfg.param2"
+SCENE_AREA_CFG_PARAM2_FIELD.number = 11
+SCENE_AREA_CFG_PARAM2_FIELD.index = 10
+SCENE_AREA_CFG_PARAM2_FIELD.label = 2
+SCENE_AREA_CFG_PARAM2_FIELD.has_default_value = false
+SCENE_AREA_CFG_PARAM2_FIELD.default_value = 0
+SCENE_AREA_CFG_PARAM2_FIELD.type = 5
+SCENE_AREA_CFG_PARAM2_FIELD.cpp_type = 1
+
+SCENE_AREA_CFG.name = "scene_area_cfg"
+SCENE_AREA_CFG.full_name = ".ftcfg.scene_area_cfg"
+SCENE_AREA_CFG.nested_types = {}
+SCENE_AREA_CFG.enum_types = {}
+SCENE_AREA_CFG.fields = {SCENE_AREA_CFG_AREA_ID_FIELD, SCENE_AREA_CFG_MAP_ID_FIELD, SCENE_AREA_CFG_AREA_TYPE_FIELD, SCENE_AREA_CFG_POS_X_FIELD, SCENE_AREA_CFG_POS_Y_FIELD, SCENE_AREA_CFG_RADIUS_FIELD, SCENE_AREA_CFG_WIDTH_FIELD, SCENE_AREA_CFG_HEIGHT_FIELD, SCENE_AREA_CFG_ACTION_FIELD, SCENE_AREA_CFG_PARAM1_FIELD, SCENE_AREA_CFG_PARAM2_FIELD}
+SCENE_AREA_CFG.is_extendable = false
+SCENE_AREA_CFG.extensions = {}
+SCENE_AREA_CFGS_ITEMS_FIELD.name = "items"
+SCENE_AREA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_area_cfgs.items"
+SCENE_AREA_CFGS_ITEMS_FIELD.number = 1
+SCENE_AREA_CFGS_ITEMS_FIELD.index = 0
+SCENE_AREA_CFGS_ITEMS_FIELD.label = 3
+SCENE_AREA_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_AREA_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_AREA_CFGS_ITEMS_FIELD.message_type = SCENE_AREA_CFG
+SCENE_AREA_CFGS_ITEMS_FIELD.type = 11
+SCENE_AREA_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_AREA_CFGS.name = "scene_area_cfgs"
+SCENE_AREA_CFGS.full_name = ".ftcfg.scene_area_cfgs"
+SCENE_AREA_CFGS.nested_types = {}
+SCENE_AREA_CFGS.enum_types = {}
+SCENE_AREA_CFGS.fields = {SCENE_AREA_CFGS_ITEMS_FIELD}
+SCENE_AREA_CFGS.is_extendable = false
+SCENE_AREA_CFGS.extensions = {}
+CLIENT_TRIGGER_CFG_ID_FIELD.name = "id"
+CLIENT_TRIGGER_CFG_ID_FIELD.full_name = ".ftcfg.client_trigger_cfg.id"
+CLIENT_TRIGGER_CFG_ID_FIELD.number = 1
+CLIENT_TRIGGER_CFG_ID_FIELD.index = 0
+CLIENT_TRIGGER_CFG_ID_FIELD.label = 2
+CLIENT_TRIGGER_CFG_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_CFG_ID_FIELD.type = 5
+CLIENT_TRIGGER_CFG_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.name = "map_id"
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.full_name = ".ftcfg.client_trigger_cfg.map_id"
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.number = 2
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.index = 1
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.label = 2
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.type = 5
+CLIENT_TRIGGER_CFG_MAP_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.name = "events"
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.full_name = ".ftcfg.client_trigger_cfg.events"
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.number = 3
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.index = 2
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.label = 3
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.default_value = {}
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.type = 5
+CLIENT_TRIGGER_CFG_EVENTS_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.name = "conditions"
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.full_name = ".ftcfg.client_trigger_cfg.conditions"
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.number = 4
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.index = 3
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.label = 3
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.default_value = {}
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.type = 5
+CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.name = "actions"
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.full_name = ".ftcfg.client_trigger_cfg.actions"
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.number = 5
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.index = 4
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.label = 3
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.default_value = {}
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.type = 5
+CLIENT_TRIGGER_CFG_ACTIONS_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_OPENED_FIELD.name = "opened"
+CLIENT_TRIGGER_CFG_OPENED_FIELD.full_name = ".ftcfg.client_trigger_cfg.opened"
+CLIENT_TRIGGER_CFG_OPENED_FIELD.number = 6
+CLIENT_TRIGGER_CFG_OPENED_FIELD.index = 5
+CLIENT_TRIGGER_CFG_OPENED_FIELD.label = 2
+CLIENT_TRIGGER_CFG_OPENED_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_OPENED_FIELD.default_value = 0
+CLIENT_TRIGGER_CFG_OPENED_FIELD.type = 5
+CLIENT_TRIGGER_CFG_OPENED_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.name = "canCycleTriggle"
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.full_name = ".ftcfg.client_trigger_cfg.canCycleTriggle"
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.number = 7
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.index = 6
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.label = 2
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.default_value = 0
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.type = 5
+CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CFG.name = "client_trigger_cfg"
+CLIENT_TRIGGER_CFG.full_name = ".ftcfg.client_trigger_cfg"
+CLIENT_TRIGGER_CFG.nested_types = {}
+CLIENT_TRIGGER_CFG.enum_types = {}
+CLIENT_TRIGGER_CFG.fields = {CLIENT_TRIGGER_CFG_ID_FIELD, CLIENT_TRIGGER_CFG_MAP_ID_FIELD, CLIENT_TRIGGER_CFG_EVENTS_FIELD, CLIENT_TRIGGER_CFG_CONDITIONS_FIELD, CLIENT_TRIGGER_CFG_ACTIONS_FIELD, CLIENT_TRIGGER_CFG_OPENED_FIELD, CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD}
+CLIENT_TRIGGER_CFG.is_extendable = false
+CLIENT_TRIGGER_CFG.extensions = {}
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.name = "items"
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_cfgs.items"
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.number = 1
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.index = 0
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.label = 3
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.has_default_value = false
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.default_value = {}
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_CFG
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.type = 11
+CLIENT_TRIGGER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLIENT_TRIGGER_CFGS.name = "client_trigger_cfgs"
+CLIENT_TRIGGER_CFGS.full_name = ".ftcfg.client_trigger_cfgs"
+CLIENT_TRIGGER_CFGS.nested_types = {}
+CLIENT_TRIGGER_CFGS.enum_types = {}
+CLIENT_TRIGGER_CFGS.fields = {CLIENT_TRIGGER_CFGS_ITEMS_FIELD}
+CLIENT_TRIGGER_CFGS.is_extendable = false
+CLIENT_TRIGGER_CFGS.extensions = {}
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.event_id"
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.number = 1
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.index = 0
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.type = 5
+CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.name = "type"
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.type"
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.number = 2
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.index = 1
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.default_value = nil
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGEREVENTTYPE
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.type = 14
+CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.cpp_type = 8
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.name = "param1"
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param1"
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.number = 3
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.index = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.name = "param2"
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param2"
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.number = 4
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.index = 3
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.name = "param3"
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param3"
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.number = 5
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.index = 4
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.name = "param4"
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param4"
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.number = 6
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.index = 5
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.name = "param5"
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param5"
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.number = 7
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.index = 6
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.name = "param6"
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param6"
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.number = 8
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.index = 7
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.name = "param7"
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param7"
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.number = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.index = 8
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.name = "param8"
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param8"
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.number = 10
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.index = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.name = "param9"
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param9"
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.number = 11
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.index = 10
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.name = "param10"
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param10"
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.number = 12
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.index = 11
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.label = 2
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.default_value = ""
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.type = 9
+CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_EVENT_CFG.name = "client_trigger_event_cfg"
+CLIENT_TRIGGER_EVENT_CFG.full_name = ".ftcfg.client_trigger_event_cfg"
+CLIENT_TRIGGER_EVENT_CFG.nested_types = {}
+CLIENT_TRIGGER_EVENT_CFG.enum_types = {}
+CLIENT_TRIGGER_EVENT_CFG.fields = {CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD, CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD}
+CLIENT_TRIGGER_EVENT_CFG.is_extendable = false
+CLIENT_TRIGGER_EVENT_CFG.extensions = {}
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.name = "items"
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_event_cfgs.items"
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.number = 1
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.index = 0
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.label = 3
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.default_value = {}
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_EVENT_CFG
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.type = 11
+CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLIENT_TRIGGER_EVENT_CFGS.name = "client_trigger_event_cfgs"
+CLIENT_TRIGGER_EVENT_CFGS.full_name = ".ftcfg.client_trigger_event_cfgs"
+CLIENT_TRIGGER_EVENT_CFGS.nested_types = {}
+CLIENT_TRIGGER_EVENT_CFGS.enum_types = {}
+CLIENT_TRIGGER_EVENT_CFGS.fields = {CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD}
+CLIENT_TRIGGER_EVENT_CFGS.is_extendable = false
+CLIENT_TRIGGER_EVENT_CFGS.extensions = {}
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.name = "condition_id"
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.condition_id"
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.number = 1
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.index = 0
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.type = 5
+CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.name = "type"
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.type"
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.number = 2
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.index = 1
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.default_value = nil
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERCONDITIONTYPE
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.type = 14
+CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.cpp_type = 8
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.name = "param1"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param1"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.number = 3
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.index = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.name = "param2"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param2"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.number = 4
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.index = 3
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.name = "param3"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param3"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.number = 5
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.index = 4
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.name = "param4"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param4"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.number = 6
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.index = 5
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.name = "param5"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param5"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.number = 7
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.index = 6
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.name = "param6"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param6"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.number = 8
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.index = 7
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.name = "param7"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param7"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.number = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.index = 8
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.name = "param8"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param8"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.number = 10
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.index = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.name = "param9"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param9"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.number = 11
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.index = 10
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.name = "param10"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param10"
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.number = 12
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.index = 11
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.label = 2
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.default_value = ""
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.type = 9
+CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_CONDITION_CFG.name = "client_trigger_condition_cfg"
+CLIENT_TRIGGER_CONDITION_CFG.full_name = ".ftcfg.client_trigger_condition_cfg"
+CLIENT_TRIGGER_CONDITION_CFG.nested_types = {}
+CLIENT_TRIGGER_CONDITION_CFG.enum_types = {}
+CLIENT_TRIGGER_CONDITION_CFG.fields = {CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD, CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD}
+CLIENT_TRIGGER_CONDITION_CFG.is_extendable = false
+CLIENT_TRIGGER_CONDITION_CFG.extensions = {}
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.name = "items"
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_condition_cfgs.items"
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.number = 1
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.index = 0
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.label = 3
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_CONDITION_CFG
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.type = 11
+CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLIENT_TRIGGER_CONDITION_CFGS.name = "client_trigger_condition_cfgs"
+CLIENT_TRIGGER_CONDITION_CFGS.full_name = ".ftcfg.client_trigger_condition_cfgs"
+CLIENT_TRIGGER_CONDITION_CFGS.nested_types = {}
+CLIENT_TRIGGER_CONDITION_CFGS.enum_types = {}
+CLIENT_TRIGGER_CONDITION_CFGS.fields = {CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD}
+CLIENT_TRIGGER_CONDITION_CFGS.is_extendable = false
+CLIENT_TRIGGER_CONDITION_CFGS.extensions = {}
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.name = "action_id"
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.action_id"
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.number = 1
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.index = 0
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.type = 5
+CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.name = "type"
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.type"
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.number = 2
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.index = 1
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.default_value = nil
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERACTIONTYPE
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.type = 14
+CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.cpp_type = 8
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.name = "param1"
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param1"
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.number = 3
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.index = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.name = "param2"
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param2"
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.number = 4
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.index = 3
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.name = "param3"
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param3"
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.number = 5
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.index = 4
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.name = "param4"
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param4"
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.number = 6
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.index = 5
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.name = "param5"
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param5"
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.number = 7
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.index = 6
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.name = "param6"
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param6"
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.number = 8
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.index = 7
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.name = "param7"
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param7"
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.number = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.index = 8
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.name = "param8"
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param8"
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.number = 10
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.index = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.name = "param9"
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param9"
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.number = 11
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.index = 10
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.name = "param10"
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param10"
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.number = 12
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.index = 11
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.label = 2
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.default_value = ""
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.type = 9
+CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_ACTION_CFG.name = "client_trigger_action_cfg"
+CLIENT_TRIGGER_ACTION_CFG.full_name = ".ftcfg.client_trigger_action_cfg"
+CLIENT_TRIGGER_ACTION_CFG.nested_types = {}
+CLIENT_TRIGGER_ACTION_CFG.enum_types = {}
+CLIENT_TRIGGER_ACTION_CFG.fields = {CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD, CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD}
+CLIENT_TRIGGER_ACTION_CFG.is_extendable = false
+CLIENT_TRIGGER_ACTION_CFG.extensions = {}
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.name = "items"
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_action_cfgs.items"
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.number = 1
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.index = 0
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.label = 3
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.default_value = {}
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_ACTION_CFG
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.type = 11
+CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLIENT_TRIGGER_ACTION_CFGS.name = "client_trigger_action_cfgs"
+CLIENT_TRIGGER_ACTION_CFGS.full_name = ".ftcfg.client_trigger_action_cfgs"
+CLIENT_TRIGGER_ACTION_CFGS.nested_types = {}
+CLIENT_TRIGGER_ACTION_CFGS.enum_types = {}
+CLIENT_TRIGGER_ACTION_CFGS.fields = {CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD}
+CLIENT_TRIGGER_ACTION_CFGS.is_extendable = false
+CLIENT_TRIGGER_ACTION_CFGS.extensions = {}
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.name = "name"
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.name"
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.number = 1
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.index = 0
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.name = "map_id"
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.map_id"
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.number = 2
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.index = 1
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.default_value = 0
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.type = 5
+CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.cpp_type = 1
+
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.name = "type"
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.type"
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.number = 3
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.index = 2
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.default_value = nil
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERVARIABLETYPE
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.type = 14
+CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.cpp_type = 8
+
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.name = "is_vec"
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.is_vec"
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.number = 4
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.index = 3
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.default_value = 0
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.type = 13
+CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.cpp_type = 3
+
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.name = "vec_size"
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.vec_size"
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.number = 5
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.index = 4
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.default_value = 0
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.type = 13
+CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.cpp_type = 3
+
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.name = "param1"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param1"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.number = 6
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.index = 5
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.name = "param2"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param2"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.number = 7
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.index = 6
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.name = "param3"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param3"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.number = 8
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.index = 7
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.name = "param4"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param4"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.number = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.index = 8
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.name = "param5"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param5"
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.number = 10
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.index = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.label = 2
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.default_value = ""
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.type = 9
+CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.cpp_type = 9
+
+CLIENT_TRIGGER_VARIABLE_CFG.name = "client_trigger_variable_cfg"
+CLIENT_TRIGGER_VARIABLE_CFG.full_name = ".ftcfg.client_trigger_variable_cfg"
+CLIENT_TRIGGER_VARIABLE_CFG.nested_types = {}
+CLIENT_TRIGGER_VARIABLE_CFG.enum_types = {}
+CLIENT_TRIGGER_VARIABLE_CFG.fields = {CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD}
+CLIENT_TRIGGER_VARIABLE_CFG.is_extendable = false
+CLIENT_TRIGGER_VARIABLE_CFG.extensions = {}
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.name = "items"
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_variable_cfgs.items"
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.number = 1
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.index = 0
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.label = 3
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.has_default_value = false
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.default_value = {}
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_VARIABLE_CFG
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.type = 11
+CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLIENT_TRIGGER_VARIABLE_CFGS.name = "client_trigger_variable_cfgs"
+CLIENT_TRIGGER_VARIABLE_CFGS.full_name = ".ftcfg.client_trigger_variable_cfgs"
+CLIENT_TRIGGER_VARIABLE_CFGS.nested_types = {}
+CLIENT_TRIGGER_VARIABLE_CFGS.enum_types = {}
+CLIENT_TRIGGER_VARIABLE_CFGS.fields = {CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD}
+CLIENT_TRIGGER_VARIABLE_CFGS.is_extendable = false
+CLIENT_TRIGGER_VARIABLE_CFGS.extensions = {}
+SCENE_ORGAN_CFG_ID_FIELD.name = "id"
+SCENE_ORGAN_CFG_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.id"
+SCENE_ORGAN_CFG_ID_FIELD.number = 1
+SCENE_ORGAN_CFG_ID_FIELD.index = 0
+SCENE_ORGAN_CFG_ID_FIELD.label = 2
+SCENE_ORGAN_CFG_ID_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_ID_FIELD.default_value = 0
+SCENE_ORGAN_CFG_ID_FIELD.type = 5
+SCENE_ORGAN_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_NAME_FIELD.name = "name"
+SCENE_ORGAN_CFG_NAME_FIELD.full_name = ".ftcfg.scene_organ_cfg.name"
+SCENE_ORGAN_CFG_NAME_FIELD.number = 2
+SCENE_ORGAN_CFG_NAME_FIELD.index = 1
+SCENE_ORGAN_CFG_NAME_FIELD.label = 2
+SCENE_ORGAN_CFG_NAME_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_NAME_FIELD.default_value = 0
+SCENE_ORGAN_CFG_NAME_FIELD.type = 5
+SCENE_ORGAN_CFG_NAME_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_MODULE_FIELD.name = "module"
+SCENE_ORGAN_CFG_MODULE_FIELD.full_name = ".ftcfg.scene_organ_cfg.module"
+SCENE_ORGAN_CFG_MODULE_FIELD.number = 3
+SCENE_ORGAN_CFG_MODULE_FIELD.index = 2
+SCENE_ORGAN_CFG_MODULE_FIELD.label = 2
+SCENE_ORGAN_CFG_MODULE_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_MODULE_FIELD.default_value = 0
+SCENE_ORGAN_CFG_MODULE_FIELD.type = 5
+SCENE_ORGAN_CFG_MODULE_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_MAP_ID_FIELD.name = "map_id"
+SCENE_ORGAN_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.map_id"
+SCENE_ORGAN_CFG_MAP_ID_FIELD.number = 4
+SCENE_ORGAN_CFG_MAP_ID_FIELD.index = 3
+SCENE_ORGAN_CFG_MAP_ID_FIELD.label = 2
+SCENE_ORGAN_CFG_MAP_ID_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_MAP_ID_FIELD.default_value = 0
+SCENE_ORGAN_CFG_MAP_ID_FIELD.type = 5
+SCENE_ORGAN_CFG_MAP_ID_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_POS_X_FIELD.name = "pos_x"
+SCENE_ORGAN_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_x"
+SCENE_ORGAN_CFG_POS_X_FIELD.number = 5
+SCENE_ORGAN_CFG_POS_X_FIELD.index = 4
+SCENE_ORGAN_CFG_POS_X_FIELD.label = 2
+SCENE_ORGAN_CFG_POS_X_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_POS_X_FIELD.default_value = 0.0
+SCENE_ORGAN_CFG_POS_X_FIELD.type = 2
+SCENE_ORGAN_CFG_POS_X_FIELD.cpp_type = 6
+
+SCENE_ORGAN_CFG_POS_Y_FIELD.name = "pos_y"
+SCENE_ORGAN_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_y"
+SCENE_ORGAN_CFG_POS_Y_FIELD.number = 6
+SCENE_ORGAN_CFG_POS_Y_FIELD.index = 5
+SCENE_ORGAN_CFG_POS_Y_FIELD.label = 2
+SCENE_ORGAN_CFG_POS_Y_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_POS_Y_FIELD.default_value = 0.0
+SCENE_ORGAN_CFG_POS_Y_FIELD.type = 2
+SCENE_ORGAN_CFG_POS_Y_FIELD.cpp_type = 6
+
+SCENE_ORGAN_CFG_POS_Z_FIELD.name = "pos_z"
+SCENE_ORGAN_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_z"
+SCENE_ORGAN_CFG_POS_Z_FIELD.number = 7
+SCENE_ORGAN_CFG_POS_Z_FIELD.index = 6
+SCENE_ORGAN_CFG_POS_Z_FIELD.label = 2
+SCENE_ORGAN_CFG_POS_Z_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_POS_Z_FIELD.default_value = 0.0
+SCENE_ORGAN_CFG_POS_Z_FIELD.type = 2
+SCENE_ORGAN_CFG_POS_Z_FIELD.cpp_type = 6
+
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.name = "orientation"
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_organ_cfg.orientation"
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.number = 8
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.index = 7
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.label = 2
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.default_value = 0.0
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.type = 2
+SCENE_ORGAN_CFG_ORIENTATION_FIELD.cpp_type = 6
+
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.name = "skill_id"
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.skill_id"
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.number = 9
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.index = 8
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.label = 2
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.default_value = 0
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.type = 5
+SCENE_ORGAN_CFG_SKILL_ID_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_ENABLED_FIELD.name = "enabled"
+SCENE_ORGAN_CFG_ENABLED_FIELD.full_name = ".ftcfg.scene_organ_cfg.enabled"
+SCENE_ORGAN_CFG_ENABLED_FIELD.number = 10
+SCENE_ORGAN_CFG_ENABLED_FIELD.index = 9
+SCENE_ORGAN_CFG_ENABLED_FIELD.label = 2
+SCENE_ORGAN_CFG_ENABLED_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_ENABLED_FIELD.default_value = 0
+SCENE_ORGAN_CFG_ENABLED_FIELD.type = 5
+SCENE_ORGAN_CFG_ENABLED_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.name = "show_name"
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.scene_organ_cfg.show_name"
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.number = 11
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.index = 10
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.label = 2
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.has_default_value = false
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.default_value = 0
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.type = 5
+SCENE_ORGAN_CFG_SHOW_NAME_FIELD.cpp_type = 1
+
+SCENE_ORGAN_CFG.name = "scene_organ_cfg"
+SCENE_ORGAN_CFG.full_name = ".ftcfg.scene_organ_cfg"
+SCENE_ORGAN_CFG.nested_types = {}
+SCENE_ORGAN_CFG.enum_types = {}
+SCENE_ORGAN_CFG.fields = {SCENE_ORGAN_CFG_ID_FIELD, SCENE_ORGAN_CFG_NAME_FIELD, SCENE_ORGAN_CFG_MODULE_FIELD, SCENE_ORGAN_CFG_MAP_ID_FIELD, SCENE_ORGAN_CFG_POS_X_FIELD, SCENE_ORGAN_CFG_POS_Y_FIELD, SCENE_ORGAN_CFG_POS_Z_FIELD, SCENE_ORGAN_CFG_ORIENTATION_FIELD, SCENE_ORGAN_CFG_SKILL_ID_FIELD, SCENE_ORGAN_CFG_ENABLED_FIELD, SCENE_ORGAN_CFG_SHOW_NAME_FIELD}
+SCENE_ORGAN_CFG.is_extendable = false
+SCENE_ORGAN_CFG.extensions = {}
+SCENE_ORGAN_CFGS_ITEMS_FIELD.name = "items"
+SCENE_ORGAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_organ_cfgs.items"
+SCENE_ORGAN_CFGS_ITEMS_FIELD.number = 1
+SCENE_ORGAN_CFGS_ITEMS_FIELD.index = 0
+SCENE_ORGAN_CFGS_ITEMS_FIELD.label = 3
+SCENE_ORGAN_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_ORGAN_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_ORGAN_CFGS_ITEMS_FIELD.message_type = SCENE_ORGAN_CFG
+SCENE_ORGAN_CFGS_ITEMS_FIELD.type = 11
+SCENE_ORGAN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_ORGAN_CFGS.name = "scene_organ_cfgs"
+SCENE_ORGAN_CFGS.full_name = ".ftcfg.scene_organ_cfgs"
+SCENE_ORGAN_CFGS.nested_types = {}
+SCENE_ORGAN_CFGS.enum_types = {}
+SCENE_ORGAN_CFGS.fields = {SCENE_ORGAN_CFGS_ITEMS_FIELD}
+SCENE_ORGAN_CFGS.is_extendable = false
+SCENE_ORGAN_CFGS.extensions = {}
+MAP_SIGNS_CFG_ID_FIELD.name = "id"
+MAP_SIGNS_CFG_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.id"
+MAP_SIGNS_CFG_ID_FIELD.number = 1
+MAP_SIGNS_CFG_ID_FIELD.index = 0
+MAP_SIGNS_CFG_ID_FIELD.label = 2
+MAP_SIGNS_CFG_ID_FIELD.has_default_value = false
+MAP_SIGNS_CFG_ID_FIELD.default_value = 0
+MAP_SIGNS_CFG_ID_FIELD.type = 5
+MAP_SIGNS_CFG_ID_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_NAME_FIELD.name = "name"
+MAP_SIGNS_CFG_NAME_FIELD.full_name = ".ftcfg.map_signs_cfg.name"
+MAP_SIGNS_CFG_NAME_FIELD.number = 2
+MAP_SIGNS_CFG_NAME_FIELD.index = 1
+MAP_SIGNS_CFG_NAME_FIELD.label = 2
+MAP_SIGNS_CFG_NAME_FIELD.has_default_value = false
+MAP_SIGNS_CFG_NAME_FIELD.default_value = 0
+MAP_SIGNS_CFG_NAME_FIELD.type = 5
+MAP_SIGNS_CFG_NAME_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_MAP_ID_FIELD.name = "map_id"
+MAP_SIGNS_CFG_MAP_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.map_id"
+MAP_SIGNS_CFG_MAP_ID_FIELD.number = 3
+MAP_SIGNS_CFG_MAP_ID_FIELD.index = 2
+MAP_SIGNS_CFG_MAP_ID_FIELD.label = 2
+MAP_SIGNS_CFG_MAP_ID_FIELD.has_default_value = false
+MAP_SIGNS_CFG_MAP_ID_FIELD.default_value = 0
+MAP_SIGNS_CFG_MAP_ID_FIELD.type = 5
+MAP_SIGNS_CFG_MAP_ID_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_TYPE_FIELD.name = "type"
+MAP_SIGNS_CFG_TYPE_FIELD.full_name = ".ftcfg.map_signs_cfg.type"
+MAP_SIGNS_CFG_TYPE_FIELD.number = 4
+MAP_SIGNS_CFG_TYPE_FIELD.index = 3
+MAP_SIGNS_CFG_TYPE_FIELD.label = 2
+MAP_SIGNS_CFG_TYPE_FIELD.has_default_value = false
+MAP_SIGNS_CFG_TYPE_FIELD.default_value = 0
+MAP_SIGNS_CFG_TYPE_FIELD.type = 5
+MAP_SIGNS_CFG_TYPE_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.name = "sub_type"
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.full_name = ".ftcfg.map_signs_cfg.sub_type"
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.number = 5
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.index = 4
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.label = 2
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.has_default_value = false
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.default_value = nil
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.enum_type = config_predefine_pb.EACTIVETYPE
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.type = 14
+MAP_SIGNS_CFG_SUB_TYPE_FIELD.cpp_type = 8
+
+MAP_SIGNS_CFG_AUTO_ID_FIELD.name = "auto_id"
+MAP_SIGNS_CFG_AUTO_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.auto_id"
+MAP_SIGNS_CFG_AUTO_ID_FIELD.number = 6
+MAP_SIGNS_CFG_AUTO_ID_FIELD.index = 5
+MAP_SIGNS_CFG_AUTO_ID_FIELD.label = 2
+MAP_SIGNS_CFG_AUTO_ID_FIELD.has_default_value = false
+MAP_SIGNS_CFG_AUTO_ID_FIELD.default_value = 0
+MAP_SIGNS_CFG_AUTO_ID_FIELD.type = 5
+MAP_SIGNS_CFG_AUTO_ID_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_POS_X_FIELD.name = "pos_x"
+MAP_SIGNS_CFG_POS_X_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_x"
+MAP_SIGNS_CFG_POS_X_FIELD.number = 7
+MAP_SIGNS_CFG_POS_X_FIELD.index = 6
+MAP_SIGNS_CFG_POS_X_FIELD.label = 2
+MAP_SIGNS_CFG_POS_X_FIELD.has_default_value = false
+MAP_SIGNS_CFG_POS_X_FIELD.default_value = 0.0
+MAP_SIGNS_CFG_POS_X_FIELD.type = 2
+MAP_SIGNS_CFG_POS_X_FIELD.cpp_type = 6
+
+MAP_SIGNS_CFG_POS_Y_FIELD.name = "pos_y"
+MAP_SIGNS_CFG_POS_Y_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_y"
+MAP_SIGNS_CFG_POS_Y_FIELD.number = 8
+MAP_SIGNS_CFG_POS_Y_FIELD.index = 7
+MAP_SIGNS_CFG_POS_Y_FIELD.label = 2
+MAP_SIGNS_CFG_POS_Y_FIELD.has_default_value = false
+MAP_SIGNS_CFG_POS_Y_FIELD.default_value = 0.0
+MAP_SIGNS_CFG_POS_Y_FIELD.type = 2
+MAP_SIGNS_CFG_POS_Y_FIELD.cpp_type = 6
+
+MAP_SIGNS_CFG_POS_Z_FIELD.name = "pos_z"
+MAP_SIGNS_CFG_POS_Z_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_z"
+MAP_SIGNS_CFG_POS_Z_FIELD.number = 9
+MAP_SIGNS_CFG_POS_Z_FIELD.index = 8
+MAP_SIGNS_CFG_POS_Z_FIELD.label = 2
+MAP_SIGNS_CFG_POS_Z_FIELD.has_default_value = false
+MAP_SIGNS_CFG_POS_Z_FIELD.default_value = 0.0
+MAP_SIGNS_CFG_POS_Z_FIELD.type = 2
+MAP_SIGNS_CFG_POS_Z_FIELD.cpp_type = 6
+
+MAP_SIGNS_CFG_IS_AUTO_FIELD.name = "is_auto"
+MAP_SIGNS_CFG_IS_AUTO_FIELD.full_name = ".ftcfg.map_signs_cfg.is_auto"
+MAP_SIGNS_CFG_IS_AUTO_FIELD.number = 10
+MAP_SIGNS_CFG_IS_AUTO_FIELD.index = 9
+MAP_SIGNS_CFG_IS_AUTO_FIELD.label = 2
+MAP_SIGNS_CFG_IS_AUTO_FIELD.has_default_value = false
+MAP_SIGNS_CFG_IS_AUTO_FIELD.default_value = 0
+MAP_SIGNS_CFG_IS_AUTO_FIELD.type = 5
+MAP_SIGNS_CFG_IS_AUTO_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG_IS_SHOW_FIELD.name = "is_show"
+MAP_SIGNS_CFG_IS_SHOW_FIELD.full_name = ".ftcfg.map_signs_cfg.is_show"
+MAP_SIGNS_CFG_IS_SHOW_FIELD.number = 11
+MAP_SIGNS_CFG_IS_SHOW_FIELD.index = 10
+MAP_SIGNS_CFG_IS_SHOW_FIELD.label = 2
+MAP_SIGNS_CFG_IS_SHOW_FIELD.has_default_value = false
+MAP_SIGNS_CFG_IS_SHOW_FIELD.default_value = 0
+MAP_SIGNS_CFG_IS_SHOW_FIELD.type = 5
+MAP_SIGNS_CFG_IS_SHOW_FIELD.cpp_type = 1
+
+MAP_SIGNS_CFG.name = "map_signs_cfg"
+MAP_SIGNS_CFG.full_name = ".ftcfg.map_signs_cfg"
+MAP_SIGNS_CFG.nested_types = {}
+MAP_SIGNS_CFG.enum_types = {}
+MAP_SIGNS_CFG.fields = {MAP_SIGNS_CFG_ID_FIELD, MAP_SIGNS_CFG_NAME_FIELD, MAP_SIGNS_CFG_MAP_ID_FIELD, MAP_SIGNS_CFG_TYPE_FIELD, MAP_SIGNS_CFG_SUB_TYPE_FIELD, MAP_SIGNS_CFG_AUTO_ID_FIELD, MAP_SIGNS_CFG_POS_X_FIELD, MAP_SIGNS_CFG_POS_Y_FIELD, MAP_SIGNS_CFG_POS_Z_FIELD, MAP_SIGNS_CFG_IS_AUTO_FIELD, MAP_SIGNS_CFG_IS_SHOW_FIELD}
+MAP_SIGNS_CFG.is_extendable = false
+MAP_SIGNS_CFG.extensions = {}
+MAP_SIGNS_CFGS_ITEMS_FIELD.name = "items"
+MAP_SIGNS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.map_signs_cfgs.items"
+MAP_SIGNS_CFGS_ITEMS_FIELD.number = 1
+MAP_SIGNS_CFGS_ITEMS_FIELD.index = 0
+MAP_SIGNS_CFGS_ITEMS_FIELD.label = 3
+MAP_SIGNS_CFGS_ITEMS_FIELD.has_default_value = false
+MAP_SIGNS_CFGS_ITEMS_FIELD.default_value = {}
+MAP_SIGNS_CFGS_ITEMS_FIELD.message_type = MAP_SIGNS_CFG
+MAP_SIGNS_CFGS_ITEMS_FIELD.type = 11
+MAP_SIGNS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAP_SIGNS_CFGS.name = "map_signs_cfgs"
+MAP_SIGNS_CFGS.full_name = ".ftcfg.map_signs_cfgs"
+MAP_SIGNS_CFGS.nested_types = {}
+MAP_SIGNS_CFGS.enum_types = {}
+MAP_SIGNS_CFGS.fields = {MAP_SIGNS_CFGS_ITEMS_FIELD}
+MAP_SIGNS_CFGS.is_extendable = false
+MAP_SIGNS_CFGS.extensions = {}
+SCENE_TRIGGER_CFG_NAME_FIELD.name = "name"
+SCENE_TRIGGER_CFG_NAME_FIELD.full_name = ".ftcfg.scene_trigger_cfg.name"
+SCENE_TRIGGER_CFG_NAME_FIELD.number = 1
+SCENE_TRIGGER_CFG_NAME_FIELD.index = 0
+SCENE_TRIGGER_CFG_NAME_FIELD.label = 2
+SCENE_TRIGGER_CFG_NAME_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_NAME_FIELD.default_value = ""
+SCENE_TRIGGER_CFG_NAME_FIELD.type = 9
+SCENE_TRIGGER_CFG_NAME_FIELD.cpp_type = 9
+
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.name = "map_id"
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_trigger_cfg.map_id"
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.number = 2
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.index = 1
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.label = 2
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.default_value = 0
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.type = 5
+SCENE_TRIGGER_CFG_MAP_ID_FIELD.cpp_type = 1
+
+SCENE_TRIGGER_CFG_EVENTS_FIELD.name = "events"
+SCENE_TRIGGER_CFG_EVENTS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.events"
+SCENE_TRIGGER_CFG_EVENTS_FIELD.number = 3
+SCENE_TRIGGER_CFG_EVENTS_FIELD.index = 2
+SCENE_TRIGGER_CFG_EVENTS_FIELD.label = 3
+SCENE_TRIGGER_CFG_EVENTS_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_EVENTS_FIELD.default_value = {}
+SCENE_TRIGGER_CFG_EVENTS_FIELD.type = 5
+SCENE_TRIGGER_CFG_EVENTS_FIELD.cpp_type = 1
+
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.name = "conditions"
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.conditions"
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.number = 4
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.index = 3
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.label = 3
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.default_value = {}
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.type = 5
+SCENE_TRIGGER_CFG_CONDITIONS_FIELD.cpp_type = 1
+
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.name = "actions"
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.actions"
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.number = 5
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.index = 4
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.label = 3
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.default_value = {}
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.type = 5
+SCENE_TRIGGER_CFG_ACTIONS_FIELD.cpp_type = 1
+
+SCENE_TRIGGER_CFG_OPENED_FIELD.name = "opened"
+SCENE_TRIGGER_CFG_OPENED_FIELD.full_name = ".ftcfg.scene_trigger_cfg.opened"
+SCENE_TRIGGER_CFG_OPENED_FIELD.number = 6
+SCENE_TRIGGER_CFG_OPENED_FIELD.index = 5
+SCENE_TRIGGER_CFG_OPENED_FIELD.label = 2
+SCENE_TRIGGER_CFG_OPENED_FIELD.has_default_value = false
+SCENE_TRIGGER_CFG_OPENED_FIELD.default_value = 0
+SCENE_TRIGGER_CFG_OPENED_FIELD.type = 5
+SCENE_TRIGGER_CFG_OPENED_FIELD.cpp_type = 1
+
+SCENE_TRIGGER_CFG.name = "scene_trigger_cfg"
+SCENE_TRIGGER_CFG.full_name = ".ftcfg.scene_trigger_cfg"
+SCENE_TRIGGER_CFG.nested_types = {}
+SCENE_TRIGGER_CFG.enum_types = {}
+SCENE_TRIGGER_CFG.fields = {SCENE_TRIGGER_CFG_NAME_FIELD, SCENE_TRIGGER_CFG_MAP_ID_FIELD, SCENE_TRIGGER_CFG_EVENTS_FIELD, SCENE_TRIGGER_CFG_CONDITIONS_FIELD, SCENE_TRIGGER_CFG_ACTIONS_FIELD, SCENE_TRIGGER_CFG_OPENED_FIELD}
+SCENE_TRIGGER_CFG.is_extendable = false
+SCENE_TRIGGER_CFG.extensions = {}
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.name = "items"
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_trigger_cfgs.items"
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.number = 1
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.index = 0
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.label = 3
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.message_type = SCENE_TRIGGER_CFG
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.type = 11
+SCENE_TRIGGER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_TRIGGER_CFGS.name = "scene_trigger_cfgs"
+SCENE_TRIGGER_CFGS.full_name = ".ftcfg.scene_trigger_cfgs"
+SCENE_TRIGGER_CFGS.nested_types = {}
+SCENE_TRIGGER_CFGS.enum_types = {}
+SCENE_TRIGGER_CFGS.fields = {SCENE_TRIGGER_CFGS_ITEMS_FIELD}
+SCENE_TRIGGER_CFGS.is_extendable = false
+SCENE_TRIGGER_CFGS.extensions = {}
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.trigger_event_cfg.event_id"
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.number = 1
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.index = 0
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.label = 2
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.type = 5
+TRIGGER_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
+
+TRIGGER_EVENT_CFG_TYPE_FIELD.name = "type"
+TRIGGER_EVENT_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_event_cfg.type"
+TRIGGER_EVENT_CFG_TYPE_FIELD.number = 2
+TRIGGER_EVENT_CFG_TYPE_FIELD.index = 1
+TRIGGER_EVENT_CFG_TYPE_FIELD.label = 2
+TRIGGER_EVENT_CFG_TYPE_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_TYPE_FIELD.default_value = nil
+TRIGGER_EVENT_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGEREVENTTYPE
+TRIGGER_EVENT_CFG_TYPE_FIELD.type = 14
+TRIGGER_EVENT_CFG_TYPE_FIELD.cpp_type = 8
+
+TRIGGER_EVENT_CFG_PARAM1_FIELD.name = "param1"
+TRIGGER_EVENT_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_event_cfg.param1"
+TRIGGER_EVENT_CFG_PARAM1_FIELD.number = 3
+TRIGGER_EVENT_CFG_PARAM1_FIELD.index = 2
+TRIGGER_EVENT_CFG_PARAM1_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM1_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM1_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM1_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM1_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM2_FIELD.name = "param2"
+TRIGGER_EVENT_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_event_cfg.param2"
+TRIGGER_EVENT_CFG_PARAM2_FIELD.number = 4
+TRIGGER_EVENT_CFG_PARAM2_FIELD.index = 3
+TRIGGER_EVENT_CFG_PARAM2_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM2_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM2_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM2_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM2_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM3_FIELD.name = "param3"
+TRIGGER_EVENT_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_event_cfg.param3"
+TRIGGER_EVENT_CFG_PARAM3_FIELD.number = 5
+TRIGGER_EVENT_CFG_PARAM3_FIELD.index = 4
+TRIGGER_EVENT_CFG_PARAM3_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM3_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM3_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM3_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM3_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM4_FIELD.name = "param4"
+TRIGGER_EVENT_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_event_cfg.param4"
+TRIGGER_EVENT_CFG_PARAM4_FIELD.number = 6
+TRIGGER_EVENT_CFG_PARAM4_FIELD.index = 5
+TRIGGER_EVENT_CFG_PARAM4_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM4_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM4_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM4_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM4_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM5_FIELD.name = "param5"
+TRIGGER_EVENT_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_event_cfg.param5"
+TRIGGER_EVENT_CFG_PARAM5_FIELD.number = 7
+TRIGGER_EVENT_CFG_PARAM5_FIELD.index = 6
+TRIGGER_EVENT_CFG_PARAM5_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM5_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM5_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM5_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM5_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM6_FIELD.name = "param6"
+TRIGGER_EVENT_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_event_cfg.param6"
+TRIGGER_EVENT_CFG_PARAM6_FIELD.number = 8
+TRIGGER_EVENT_CFG_PARAM6_FIELD.index = 7
+TRIGGER_EVENT_CFG_PARAM6_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM6_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM6_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM6_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM6_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM7_FIELD.name = "param7"
+TRIGGER_EVENT_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_event_cfg.param7"
+TRIGGER_EVENT_CFG_PARAM7_FIELD.number = 9
+TRIGGER_EVENT_CFG_PARAM7_FIELD.index = 8
+TRIGGER_EVENT_CFG_PARAM7_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM7_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM7_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM7_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM7_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM8_FIELD.name = "param8"
+TRIGGER_EVENT_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_event_cfg.param8"
+TRIGGER_EVENT_CFG_PARAM8_FIELD.number = 10
+TRIGGER_EVENT_CFG_PARAM8_FIELD.index = 9
+TRIGGER_EVENT_CFG_PARAM8_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM8_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM8_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM8_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM8_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM9_FIELD.name = "param9"
+TRIGGER_EVENT_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_event_cfg.param9"
+TRIGGER_EVENT_CFG_PARAM9_FIELD.number = 11
+TRIGGER_EVENT_CFG_PARAM9_FIELD.index = 10
+TRIGGER_EVENT_CFG_PARAM9_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM9_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM9_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM9_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM9_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG_PARAM10_FIELD.name = "param10"
+TRIGGER_EVENT_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_event_cfg.param10"
+TRIGGER_EVENT_CFG_PARAM10_FIELD.number = 12
+TRIGGER_EVENT_CFG_PARAM10_FIELD.index = 11
+TRIGGER_EVENT_CFG_PARAM10_FIELD.label = 2
+TRIGGER_EVENT_CFG_PARAM10_FIELD.has_default_value = false
+TRIGGER_EVENT_CFG_PARAM10_FIELD.default_value = ""
+TRIGGER_EVENT_CFG_PARAM10_FIELD.type = 9
+TRIGGER_EVENT_CFG_PARAM10_FIELD.cpp_type = 9
+
+TRIGGER_EVENT_CFG.name = "trigger_event_cfg"
+TRIGGER_EVENT_CFG.full_name = ".ftcfg.trigger_event_cfg"
+TRIGGER_EVENT_CFG.nested_types = {}
+TRIGGER_EVENT_CFG.enum_types = {}
+TRIGGER_EVENT_CFG.fields = {TRIGGER_EVENT_CFG_EVENT_ID_FIELD, TRIGGER_EVENT_CFG_TYPE_FIELD, TRIGGER_EVENT_CFG_PARAM1_FIELD, TRIGGER_EVENT_CFG_PARAM2_FIELD, TRIGGER_EVENT_CFG_PARAM3_FIELD, TRIGGER_EVENT_CFG_PARAM4_FIELD, TRIGGER_EVENT_CFG_PARAM5_FIELD, TRIGGER_EVENT_CFG_PARAM6_FIELD, TRIGGER_EVENT_CFG_PARAM7_FIELD, TRIGGER_EVENT_CFG_PARAM8_FIELD, TRIGGER_EVENT_CFG_PARAM9_FIELD, TRIGGER_EVENT_CFG_PARAM10_FIELD}
+TRIGGER_EVENT_CFG.is_extendable = false
+TRIGGER_EVENT_CFG.extensions = {}
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.name = "items"
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_event_cfgs.items"
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.number = 1
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.index = 0
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.label = 3
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.default_value = {}
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.message_type = TRIGGER_EVENT_CFG
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.type = 11
+TRIGGER_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRIGGER_EVENT_CFGS.name = "trigger_event_cfgs"
+TRIGGER_EVENT_CFGS.full_name = ".ftcfg.trigger_event_cfgs"
+TRIGGER_EVENT_CFGS.nested_types = {}
+TRIGGER_EVENT_CFGS.enum_types = {}
+TRIGGER_EVENT_CFGS.fields = {TRIGGER_EVENT_CFGS_ITEMS_FIELD}
+TRIGGER_EVENT_CFGS.is_extendable = false
+TRIGGER_EVENT_CFGS.extensions = {}
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.name = "condition_id"
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.full_name = ".ftcfg.trigger_condition_cfg.condition_id"
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.number = 1
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.index = 0
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.label = 2
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.default_value = 0
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.type = 5
+TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.cpp_type = 1
+
+TRIGGER_CONDITION_CFG_TYPE_FIELD.name = "type"
+TRIGGER_CONDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_condition_cfg.type"
+TRIGGER_CONDITION_CFG_TYPE_FIELD.number = 2
+TRIGGER_CONDITION_CFG_TYPE_FIELD.index = 1
+TRIGGER_CONDITION_CFG_TYPE_FIELD.label = 2
+TRIGGER_CONDITION_CFG_TYPE_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_TYPE_FIELD.default_value = nil
+TRIGGER_CONDITION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERCONDITIONTYPE
+TRIGGER_CONDITION_CFG_TYPE_FIELD.type = 14
+TRIGGER_CONDITION_CFG_TYPE_FIELD.cpp_type = 8
+
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.name = "param1"
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param1"
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.number = 3
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.index = 2
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM1_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.name = "param2"
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param2"
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.number = 4
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.index = 3
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM2_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.name = "param3"
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param3"
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.number = 5
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.index = 4
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM3_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.name = "param4"
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param4"
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.number = 6
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.index = 5
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM4_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.name = "param5"
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param5"
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.number = 7
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.index = 6
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM5_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.name = "param6"
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param6"
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.number = 8
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.index = 7
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM6_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.name = "param7"
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param7"
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.number = 9
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.index = 8
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM7_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.name = "param8"
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param8"
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.number = 10
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.index = 9
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM8_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.name = "param9"
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param9"
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.number = 11
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.index = 10
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM9_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.name = "param10"
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param10"
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.number = 12
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.index = 11
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.label = 2
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.default_value = ""
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.type = 9
+TRIGGER_CONDITION_CFG_PARAM10_FIELD.cpp_type = 9
+
+TRIGGER_CONDITION_CFG.name = "trigger_condition_cfg"
+TRIGGER_CONDITION_CFG.full_name = ".ftcfg.trigger_condition_cfg"
+TRIGGER_CONDITION_CFG.nested_types = {}
+TRIGGER_CONDITION_CFG.enum_types = {}
+TRIGGER_CONDITION_CFG.fields = {TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD, TRIGGER_CONDITION_CFG_TYPE_FIELD, TRIGGER_CONDITION_CFG_PARAM1_FIELD, TRIGGER_CONDITION_CFG_PARAM2_FIELD, TRIGGER_CONDITION_CFG_PARAM3_FIELD, TRIGGER_CONDITION_CFG_PARAM4_FIELD, TRIGGER_CONDITION_CFG_PARAM5_FIELD, TRIGGER_CONDITION_CFG_PARAM6_FIELD, TRIGGER_CONDITION_CFG_PARAM7_FIELD, TRIGGER_CONDITION_CFG_PARAM8_FIELD, TRIGGER_CONDITION_CFG_PARAM9_FIELD, TRIGGER_CONDITION_CFG_PARAM10_FIELD}
+TRIGGER_CONDITION_CFG.is_extendable = false
+TRIGGER_CONDITION_CFG.extensions = {}
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.name = "items"
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_condition_cfgs.items"
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.number = 1
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.index = 0
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.label = 3
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.message_type = TRIGGER_CONDITION_CFG
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.type = 11
+TRIGGER_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRIGGER_CONDITION_CFGS.name = "trigger_condition_cfgs"
+TRIGGER_CONDITION_CFGS.full_name = ".ftcfg.trigger_condition_cfgs"
+TRIGGER_CONDITION_CFGS.nested_types = {}
+TRIGGER_CONDITION_CFGS.enum_types = {}
+TRIGGER_CONDITION_CFGS.fields = {TRIGGER_CONDITION_CFGS_ITEMS_FIELD}
+TRIGGER_CONDITION_CFGS.is_extendable = false
+TRIGGER_CONDITION_CFGS.extensions = {}
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.name = "action_id"
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.full_name = ".ftcfg.trigger_action_cfg.action_id"
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.number = 1
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.index = 0
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.label = 2
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.default_value = 0
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.type = 5
+TRIGGER_ACTION_CFG_ACTION_ID_FIELD.cpp_type = 1
+
+TRIGGER_ACTION_CFG_TYPE_FIELD.name = "type"
+TRIGGER_ACTION_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_action_cfg.type"
+TRIGGER_ACTION_CFG_TYPE_FIELD.number = 2
+TRIGGER_ACTION_CFG_TYPE_FIELD.index = 1
+TRIGGER_ACTION_CFG_TYPE_FIELD.label = 2
+TRIGGER_ACTION_CFG_TYPE_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_TYPE_FIELD.default_value = nil
+TRIGGER_ACTION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERACTION0TYPE
+TRIGGER_ACTION_CFG_TYPE_FIELD.type = 14
+TRIGGER_ACTION_CFG_TYPE_FIELD.cpp_type = 8
+
+TRIGGER_ACTION_CFG_PARAM1_FIELD.name = "param1"
+TRIGGER_ACTION_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_action_cfg.param1"
+TRIGGER_ACTION_CFG_PARAM1_FIELD.number = 3
+TRIGGER_ACTION_CFG_PARAM1_FIELD.index = 2
+TRIGGER_ACTION_CFG_PARAM1_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM1_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM1_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM1_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM1_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM2_FIELD.name = "param2"
+TRIGGER_ACTION_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_action_cfg.param2"
+TRIGGER_ACTION_CFG_PARAM2_FIELD.number = 4
+TRIGGER_ACTION_CFG_PARAM2_FIELD.index = 3
+TRIGGER_ACTION_CFG_PARAM2_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM2_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM2_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM2_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM2_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM3_FIELD.name = "param3"
+TRIGGER_ACTION_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_action_cfg.param3"
+TRIGGER_ACTION_CFG_PARAM3_FIELD.number = 5
+TRIGGER_ACTION_CFG_PARAM3_FIELD.index = 4
+TRIGGER_ACTION_CFG_PARAM3_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM3_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM3_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM3_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM3_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM4_FIELD.name = "param4"
+TRIGGER_ACTION_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_action_cfg.param4"
+TRIGGER_ACTION_CFG_PARAM4_FIELD.number = 6
+TRIGGER_ACTION_CFG_PARAM4_FIELD.index = 5
+TRIGGER_ACTION_CFG_PARAM4_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM4_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM4_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM4_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM4_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM5_FIELD.name = "param5"
+TRIGGER_ACTION_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_action_cfg.param5"
+TRIGGER_ACTION_CFG_PARAM5_FIELD.number = 7
+TRIGGER_ACTION_CFG_PARAM5_FIELD.index = 6
+TRIGGER_ACTION_CFG_PARAM5_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM5_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM5_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM5_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM5_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM6_FIELD.name = "param6"
+TRIGGER_ACTION_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_action_cfg.param6"
+TRIGGER_ACTION_CFG_PARAM6_FIELD.number = 8
+TRIGGER_ACTION_CFG_PARAM6_FIELD.index = 7
+TRIGGER_ACTION_CFG_PARAM6_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM6_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM6_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM6_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM6_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM7_FIELD.name = "param7"
+TRIGGER_ACTION_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_action_cfg.param7"
+TRIGGER_ACTION_CFG_PARAM7_FIELD.number = 9
+TRIGGER_ACTION_CFG_PARAM7_FIELD.index = 8
+TRIGGER_ACTION_CFG_PARAM7_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM7_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM7_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM7_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM7_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM8_FIELD.name = "param8"
+TRIGGER_ACTION_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_action_cfg.param8"
+TRIGGER_ACTION_CFG_PARAM8_FIELD.number = 10
+TRIGGER_ACTION_CFG_PARAM8_FIELD.index = 9
+TRIGGER_ACTION_CFG_PARAM8_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM8_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM8_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM8_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM8_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM9_FIELD.name = "param9"
+TRIGGER_ACTION_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_action_cfg.param9"
+TRIGGER_ACTION_CFG_PARAM9_FIELD.number = 11
+TRIGGER_ACTION_CFG_PARAM9_FIELD.index = 10
+TRIGGER_ACTION_CFG_PARAM9_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM9_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM9_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM9_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM9_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG_PARAM10_FIELD.name = "param10"
+TRIGGER_ACTION_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_action_cfg.param10"
+TRIGGER_ACTION_CFG_PARAM10_FIELD.number = 12
+TRIGGER_ACTION_CFG_PARAM10_FIELD.index = 11
+TRIGGER_ACTION_CFG_PARAM10_FIELD.label = 2
+TRIGGER_ACTION_CFG_PARAM10_FIELD.has_default_value = false
+TRIGGER_ACTION_CFG_PARAM10_FIELD.default_value = ""
+TRIGGER_ACTION_CFG_PARAM10_FIELD.type = 9
+TRIGGER_ACTION_CFG_PARAM10_FIELD.cpp_type = 9
+
+TRIGGER_ACTION_CFG.name = "trigger_action_cfg"
+TRIGGER_ACTION_CFG.full_name = ".ftcfg.trigger_action_cfg"
+TRIGGER_ACTION_CFG.nested_types = {}
+TRIGGER_ACTION_CFG.enum_types = {}
+TRIGGER_ACTION_CFG.fields = {TRIGGER_ACTION_CFG_ACTION_ID_FIELD, TRIGGER_ACTION_CFG_TYPE_FIELD, TRIGGER_ACTION_CFG_PARAM1_FIELD, TRIGGER_ACTION_CFG_PARAM2_FIELD, TRIGGER_ACTION_CFG_PARAM3_FIELD, TRIGGER_ACTION_CFG_PARAM4_FIELD, TRIGGER_ACTION_CFG_PARAM5_FIELD, TRIGGER_ACTION_CFG_PARAM6_FIELD, TRIGGER_ACTION_CFG_PARAM7_FIELD, TRIGGER_ACTION_CFG_PARAM8_FIELD, TRIGGER_ACTION_CFG_PARAM9_FIELD, TRIGGER_ACTION_CFG_PARAM10_FIELD}
+TRIGGER_ACTION_CFG.is_extendable = false
+TRIGGER_ACTION_CFG.extensions = {}
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.name = "items"
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_action_cfgs.items"
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.number = 1
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.index = 0
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.label = 3
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.default_value = {}
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.message_type = TRIGGER_ACTION_CFG
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.type = 11
+TRIGGER_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRIGGER_ACTION_CFGS.name = "trigger_action_cfgs"
+TRIGGER_ACTION_CFGS.full_name = ".ftcfg.trigger_action_cfgs"
+TRIGGER_ACTION_CFGS.nested_types = {}
+TRIGGER_ACTION_CFGS.enum_types = {}
+TRIGGER_ACTION_CFGS.fields = {TRIGGER_ACTION_CFGS_ITEMS_FIELD}
+TRIGGER_ACTION_CFGS.is_extendable = false
+TRIGGER_ACTION_CFGS.extensions = {}
+TRIGGER_VARIABLE_CFG_NAME_FIELD.name = "name"
+TRIGGER_VARIABLE_CFG_NAME_FIELD.full_name = ".ftcfg.trigger_variable_cfg.name"
+TRIGGER_VARIABLE_CFG_NAME_FIELD.number = 1
+TRIGGER_VARIABLE_CFG_NAME_FIELD.index = 0
+TRIGGER_VARIABLE_CFG_NAME_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_NAME_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_NAME_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_NAME_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_NAME_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.name = "map_id"
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.trigger_variable_cfg.map_id"
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.number = 2
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.index = 1
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.default_value = 0
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.type = 5
+TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.cpp_type = 1
+
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.name = "type"
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_variable_cfg.type"
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.number = 3
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.index = 2
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.default_value = nil
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERVARIABLETYPE
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.type = 14
+TRIGGER_VARIABLE_CFG_TYPE_FIELD.cpp_type = 8
+
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.name = "is_vec"
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.full_name = ".ftcfg.trigger_variable_cfg.is_vec"
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.number = 4
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.index = 3
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.default_value = 0
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.type = 13
+TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.cpp_type = 3
+
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.name = "vec_size"
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.full_name = ".ftcfg.trigger_variable_cfg.vec_size"
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.number = 5
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.index = 4
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.default_value = 0
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.type = 13
+TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.cpp_type = 3
+
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.name = "param1"
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param1"
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.number = 6
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.index = 5
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_PARAM1_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.name = "param2"
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param2"
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.number = 7
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.index = 6
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_PARAM2_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.name = "param3"
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param3"
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.number = 8
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.index = 7
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_PARAM3_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.name = "param4"
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param4"
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.number = 9
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.index = 8
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_PARAM4_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.name = "param5"
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param5"
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.number = 10
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.index = 9
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.label = 2
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.default_value = ""
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.type = 9
+TRIGGER_VARIABLE_CFG_PARAM5_FIELD.cpp_type = 9
+
+TRIGGER_VARIABLE_CFG.name = "trigger_variable_cfg"
+TRIGGER_VARIABLE_CFG.full_name = ".ftcfg.trigger_variable_cfg"
+TRIGGER_VARIABLE_CFG.nested_types = {}
+TRIGGER_VARIABLE_CFG.enum_types = {}
+TRIGGER_VARIABLE_CFG.fields = {TRIGGER_VARIABLE_CFG_NAME_FIELD, TRIGGER_VARIABLE_CFG_MAP_ID_FIELD, TRIGGER_VARIABLE_CFG_TYPE_FIELD, TRIGGER_VARIABLE_CFG_IS_VEC_FIELD, TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD, TRIGGER_VARIABLE_CFG_PARAM1_FIELD, TRIGGER_VARIABLE_CFG_PARAM2_FIELD, TRIGGER_VARIABLE_CFG_PARAM3_FIELD, TRIGGER_VARIABLE_CFG_PARAM4_FIELD, TRIGGER_VARIABLE_CFG_PARAM5_FIELD}
+TRIGGER_VARIABLE_CFG.is_extendable = false
+TRIGGER_VARIABLE_CFG.extensions = {}
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.name = "items"
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_variable_cfgs.items"
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.number = 1
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.index = 0
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.label = 3
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.has_default_value = false
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.default_value = {}
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.message_type = TRIGGER_VARIABLE_CFG
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.type = 11
+TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TRIGGER_VARIABLE_CFGS.name = "trigger_variable_cfgs"
+TRIGGER_VARIABLE_CFGS.full_name = ".ftcfg.trigger_variable_cfgs"
+TRIGGER_VARIABLE_CFGS.nested_types = {}
+TRIGGER_VARIABLE_CFGS.enum_types = {}
+TRIGGER_VARIABLE_CFGS.fields = {TRIGGER_VARIABLE_CFGS_ITEMS_FIELD}
+TRIGGER_VARIABLE_CFGS.is_extendable = false
+TRIGGER_VARIABLE_CFGS.extensions = {}
+SCENE_DOOR_CFG_ID_FIELD.name = "id"
+SCENE_DOOR_CFG_ID_FIELD.full_name = ".ftcfg.scene_door_cfg.id"
+SCENE_DOOR_CFG_ID_FIELD.number = 1
+SCENE_DOOR_CFG_ID_FIELD.index = 0
+SCENE_DOOR_CFG_ID_FIELD.label = 2
+SCENE_DOOR_CFG_ID_FIELD.has_default_value = false
+SCENE_DOOR_CFG_ID_FIELD.default_value = 0
+SCENE_DOOR_CFG_ID_FIELD.type = 5
+SCENE_DOOR_CFG_ID_FIELD.cpp_type = 1
+
+SCENE_DOOR_CFG_MAP_ID_FIELD.name = "map_id"
+SCENE_DOOR_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_door_cfg.map_id"
+SCENE_DOOR_CFG_MAP_ID_FIELD.number = 2
+SCENE_DOOR_CFG_MAP_ID_FIELD.index = 1
+SCENE_DOOR_CFG_MAP_ID_FIELD.label = 2
+SCENE_DOOR_CFG_MAP_ID_FIELD.has_default_value = false
+SCENE_DOOR_CFG_MAP_ID_FIELD.default_value = 0
+SCENE_DOOR_CFG_MAP_ID_FIELD.type = 5
+SCENE_DOOR_CFG_MAP_ID_FIELD.cpp_type = 1
+
+SCENE_DOOR_CFG_POS_X_FIELD.name = "pos_x"
+SCENE_DOOR_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_x"
+SCENE_DOOR_CFG_POS_X_FIELD.number = 3
+SCENE_DOOR_CFG_POS_X_FIELD.index = 2
+SCENE_DOOR_CFG_POS_X_FIELD.label = 2
+SCENE_DOOR_CFG_POS_X_FIELD.has_default_value = false
+SCENE_DOOR_CFG_POS_X_FIELD.default_value = 0.0
+SCENE_DOOR_CFG_POS_X_FIELD.type = 2
+SCENE_DOOR_CFG_POS_X_FIELD.cpp_type = 6
+
+SCENE_DOOR_CFG_POS_Y_FIELD.name = "pos_y"
+SCENE_DOOR_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_y"
+SCENE_DOOR_CFG_POS_Y_FIELD.number = 4
+SCENE_DOOR_CFG_POS_Y_FIELD.index = 3
+SCENE_DOOR_CFG_POS_Y_FIELD.label = 2
+SCENE_DOOR_CFG_POS_Y_FIELD.has_default_value = false
+SCENE_DOOR_CFG_POS_Y_FIELD.default_value = 0.0
+SCENE_DOOR_CFG_POS_Y_FIELD.type = 2
+SCENE_DOOR_CFG_POS_Y_FIELD.cpp_type = 6
+
+SCENE_DOOR_CFG_POS_Z_FIELD.name = "pos_z"
+SCENE_DOOR_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_z"
+SCENE_DOOR_CFG_POS_Z_FIELD.number = 5
+SCENE_DOOR_CFG_POS_Z_FIELD.index = 4
+SCENE_DOOR_CFG_POS_Z_FIELD.label = 2
+SCENE_DOOR_CFG_POS_Z_FIELD.has_default_value = false
+SCENE_DOOR_CFG_POS_Z_FIELD.default_value = 0.0
+SCENE_DOOR_CFG_POS_Z_FIELD.type = 2
+SCENE_DOOR_CFG_POS_Z_FIELD.cpp_type = 6
+
+SCENE_DOOR_CFG_WIDTH_FIELD.name = "width"
+SCENE_DOOR_CFG_WIDTH_FIELD.full_name = ".ftcfg.scene_door_cfg.width"
+SCENE_DOOR_CFG_WIDTH_FIELD.number = 6
+SCENE_DOOR_CFG_WIDTH_FIELD.index = 5
+SCENE_DOOR_CFG_WIDTH_FIELD.label = 2
+SCENE_DOOR_CFG_WIDTH_FIELD.has_default_value = false
+SCENE_DOOR_CFG_WIDTH_FIELD.default_value = 0.0
+SCENE_DOOR_CFG_WIDTH_FIELD.type = 2
+SCENE_DOOR_CFG_WIDTH_FIELD.cpp_type = 6
+
+SCENE_DOOR_CFG_ORIENTATION_FIELD.name = "orientation"
+SCENE_DOOR_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_door_cfg.orientation"
+SCENE_DOOR_CFG_ORIENTATION_FIELD.number = 7
+SCENE_DOOR_CFG_ORIENTATION_FIELD.index = 6
+SCENE_DOOR_CFG_ORIENTATION_FIELD.label = 2
+SCENE_DOOR_CFG_ORIENTATION_FIELD.has_default_value = false
+SCENE_DOOR_CFG_ORIENTATION_FIELD.default_value = 0.0
+SCENE_DOOR_CFG_ORIENTATION_FIELD.type = 2
+SCENE_DOOR_CFG_ORIENTATION_FIELD.cpp_type = 6
+
+SCENE_DOOR_CFG_OPENED_FIELD.name = "opened"
+SCENE_DOOR_CFG_OPENED_FIELD.full_name = ".ftcfg.scene_door_cfg.opened"
+SCENE_DOOR_CFG_OPENED_FIELD.number = 8
+SCENE_DOOR_CFG_OPENED_FIELD.index = 7
+SCENE_DOOR_CFG_OPENED_FIELD.label = 2
+SCENE_DOOR_CFG_OPENED_FIELD.has_default_value = false
+SCENE_DOOR_CFG_OPENED_FIELD.default_value = 0
+SCENE_DOOR_CFG_OPENED_FIELD.type = 5
+SCENE_DOOR_CFG_OPENED_FIELD.cpp_type = 1
+
+SCENE_DOOR_CFG_RESID_FIELD.name = "resid"
+SCENE_DOOR_CFG_RESID_FIELD.full_name = ".ftcfg.scene_door_cfg.resid"
+SCENE_DOOR_CFG_RESID_FIELD.number = 9
+SCENE_DOOR_CFG_RESID_FIELD.index = 8
+SCENE_DOOR_CFG_RESID_FIELD.label = 2
+SCENE_DOOR_CFG_RESID_FIELD.has_default_value = false
+SCENE_DOOR_CFG_RESID_FIELD.default_value = 0
+SCENE_DOOR_CFG_RESID_FIELD.type = 5
+SCENE_DOOR_CFG_RESID_FIELD.cpp_type = 1
+
+SCENE_DOOR_CFG.name = "scene_door_cfg"
+SCENE_DOOR_CFG.full_name = ".ftcfg.scene_door_cfg"
+SCENE_DOOR_CFG.nested_types = {}
+SCENE_DOOR_CFG.enum_types = {}
+SCENE_DOOR_CFG.fields = {SCENE_DOOR_CFG_ID_FIELD, SCENE_DOOR_CFG_MAP_ID_FIELD, SCENE_DOOR_CFG_POS_X_FIELD, SCENE_DOOR_CFG_POS_Y_FIELD, SCENE_DOOR_CFG_POS_Z_FIELD, SCENE_DOOR_CFG_WIDTH_FIELD, SCENE_DOOR_CFG_ORIENTATION_FIELD, SCENE_DOOR_CFG_OPENED_FIELD, SCENE_DOOR_CFG_RESID_FIELD}
+SCENE_DOOR_CFG.is_extendable = false
+SCENE_DOOR_CFG.extensions = {}
+SCENE_DOOR_CFGS_ITEMS_FIELD.name = "items"
+SCENE_DOOR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_door_cfgs.items"
+SCENE_DOOR_CFGS_ITEMS_FIELD.number = 1
+SCENE_DOOR_CFGS_ITEMS_FIELD.index = 0
+SCENE_DOOR_CFGS_ITEMS_FIELD.label = 3
+SCENE_DOOR_CFGS_ITEMS_FIELD.has_default_value = false
+SCENE_DOOR_CFGS_ITEMS_FIELD.default_value = {}
+SCENE_DOOR_CFGS_ITEMS_FIELD.message_type = SCENE_DOOR_CFG
+SCENE_DOOR_CFGS_ITEMS_FIELD.type = 11
+SCENE_DOOR_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SCENE_DOOR_CFGS.name = "scene_door_cfgs"
+SCENE_DOOR_CFGS.full_name = ".ftcfg.scene_door_cfgs"
+SCENE_DOOR_CFGS.nested_types = {}
+SCENE_DOOR_CFGS.enum_types = {}
+SCENE_DOOR_CFGS.fields = {SCENE_DOOR_CFGS_ITEMS_FIELD}
+SCENE_DOOR_CFGS.is_extendable = false
+SCENE_DOOR_CFGS.extensions = {}
+REVIVE_SHOW_CFG_ID_FIELD.name = "id"
+REVIVE_SHOW_CFG_ID_FIELD.full_name = ".ftcfg.revive_show_cfg.id"
+REVIVE_SHOW_CFG_ID_FIELD.number = 1
+REVIVE_SHOW_CFG_ID_FIELD.index = 0
+REVIVE_SHOW_CFG_ID_FIELD.label = 2
+REVIVE_SHOW_CFG_ID_FIELD.has_default_value = false
+REVIVE_SHOW_CFG_ID_FIELD.default_value = 0
+REVIVE_SHOW_CFG_ID_FIELD.type = 5
+REVIVE_SHOW_CFG_ID_FIELD.cpp_type = 1
+
+REVIVE_SHOW_CFG_INDEX_FIELD.name = "index"
+REVIVE_SHOW_CFG_INDEX_FIELD.full_name = ".ftcfg.revive_show_cfg.index"
+REVIVE_SHOW_CFG_INDEX_FIELD.number = 2
+REVIVE_SHOW_CFG_INDEX_FIELD.index = 1
+REVIVE_SHOW_CFG_INDEX_FIELD.label = 2
+REVIVE_SHOW_CFG_INDEX_FIELD.has_default_value = false
+REVIVE_SHOW_CFG_INDEX_FIELD.default_value = 0
+REVIVE_SHOW_CFG_INDEX_FIELD.type = 5
+REVIVE_SHOW_CFG_INDEX_FIELD.cpp_type = 1
+
+REVIVE_SHOW_CFG_NAME_FIELD.name = "name"
+REVIVE_SHOW_CFG_NAME_FIELD.full_name = ".ftcfg.revive_show_cfg.name"
+REVIVE_SHOW_CFG_NAME_FIELD.number = 3
+REVIVE_SHOW_CFG_NAME_FIELD.index = 2
+REVIVE_SHOW_CFG_NAME_FIELD.label = 2
+REVIVE_SHOW_CFG_NAME_FIELD.has_default_value = false
+REVIVE_SHOW_CFG_NAME_FIELD.default_value = 0
+REVIVE_SHOW_CFG_NAME_FIELD.type = 5
+REVIVE_SHOW_CFG_NAME_FIELD.cpp_type = 1
+
+REVIVE_SHOW_CFG.name = "revive_show_cfg"
+REVIVE_SHOW_CFG.full_name = ".ftcfg.revive_show_cfg"
+REVIVE_SHOW_CFG.nested_types = {}
+REVIVE_SHOW_CFG.enum_types = {}
+REVIVE_SHOW_CFG.fields = {REVIVE_SHOW_CFG_ID_FIELD, REVIVE_SHOW_CFG_INDEX_FIELD, REVIVE_SHOW_CFG_NAME_FIELD}
+REVIVE_SHOW_CFG.is_extendable = false
+REVIVE_SHOW_CFG.extensions = {}
+REVIVE_SHOW_CFGS_ITEMS_FIELD.name = "items"
+REVIVE_SHOW_CFGS_ITEMS_FIELD.full_name = ".ftcfg.revive_show_cfgs.items"
+REVIVE_SHOW_CFGS_ITEMS_FIELD.number = 1
+REVIVE_SHOW_CFGS_ITEMS_FIELD.index = 0
+REVIVE_SHOW_CFGS_ITEMS_FIELD.label = 3
+REVIVE_SHOW_CFGS_ITEMS_FIELD.has_default_value = false
+REVIVE_SHOW_CFGS_ITEMS_FIELD.default_value = {}
+REVIVE_SHOW_CFGS_ITEMS_FIELD.message_type = REVIVE_SHOW_CFG
+REVIVE_SHOW_CFGS_ITEMS_FIELD.type = 11
+REVIVE_SHOW_CFGS_ITEMS_FIELD.cpp_type = 10
+
+REVIVE_SHOW_CFGS.name = "revive_show_cfgs"
+REVIVE_SHOW_CFGS.full_name = ".ftcfg.revive_show_cfgs"
+REVIVE_SHOW_CFGS.nested_types = {}
+REVIVE_SHOW_CFGS.enum_types = {}
+REVIVE_SHOW_CFGS.fields = {REVIVE_SHOW_CFGS_ITEMS_FIELD}
+REVIVE_SHOW_CFGS.is_extendable = false
+REVIVE_SHOW_CFGS.extensions = {}
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.name = "level"
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.level"
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.number = 1
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.index = 0
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.label = 2
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.default_value = 0
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.type = 13
+FASHION_APPRECIATION_CFG_LEVEL_FIELD.cpp_type = 3
+
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.name = "next_level"
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.next_level"
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.number = 2
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.index = 1
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.label = 2
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.default_value = 0
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.type = 13
+FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.cpp_type = 3
+
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.name = "need_point"
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.need_point"
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.number = 3
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.index = 2
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.label = 2
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.default_value = 0
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.type = 13
+FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.cpp_type = 3
+
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.name = "cost_item_id"
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_item_id"
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.number = 4
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.index = 3
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.label = 3
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.type = 5
+FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.name = "cost_item_count"
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_item_count"
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.number = 5
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.index = 4
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.label = 3
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.type = 5
+FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.name = "cost_coin_type"
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_coin_type"
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.number = 6
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.index = 5
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.label = 3
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.type = 5
+FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.name = "cost_coin_count"
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_coin_count"
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.number = 7
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.index = 6
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.label = 3
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.type = 5
+FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.name = "reward_attribute_type"
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.reward_attribute_type"
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.number = 8
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.index = 7
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.label = 3
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.type = 5
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.reward_attribute_count"
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 9
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 8
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.combat_point"
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.number = 10
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.index = 9
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.label = 2
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.default_value = 0.0
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.type = 2
+FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.cpp_type = 6
+
+FASHION_APPRECIATION_CFG.name = "fashion_appreciation_cfg"
+FASHION_APPRECIATION_CFG.full_name = ".ftcfg.fashion_appreciation_cfg"
+FASHION_APPRECIATION_CFG.nested_types = {}
+FASHION_APPRECIATION_CFG.enum_types = {}
+FASHION_APPRECIATION_CFG.fields = {FASHION_APPRECIATION_CFG_LEVEL_FIELD, FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD, FASHION_APPRECIATION_CFG_NEED_POINT_FIELD, FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD, FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD, FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD, FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD, FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD, FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD}
+FASHION_APPRECIATION_CFG.is_extendable = false
+FASHION_APPRECIATION_CFG.extensions = {}
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.name = "items"
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_appreciation_cfgs.items"
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.number = 1
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.index = 0
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.label = 3
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.has_default_value = false
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.default_value = {}
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.message_type = FASHION_APPRECIATION_CFG
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.type = 11
+FASHION_APPRECIATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FASHION_APPRECIATION_CFGS.name = "fashion_appreciation_cfgs"
+FASHION_APPRECIATION_CFGS.full_name = ".ftcfg.fashion_appreciation_cfgs"
+FASHION_APPRECIATION_CFGS.nested_types = {}
+FASHION_APPRECIATION_CFGS.enum_types = {}
+FASHION_APPRECIATION_CFGS.fields = {FASHION_APPRECIATION_CFGS_ITEMS_FIELD}
+FASHION_APPRECIATION_CFGS.is_extendable = false
+FASHION_APPRECIATION_CFGS.extensions = {}
+FASHION_CFG_ID_FIELD.name = "id"
+FASHION_CFG_ID_FIELD.full_name = ".ftcfg.fashion_cfg.id"
+FASHION_CFG_ID_FIELD.number = 1
+FASHION_CFG_ID_FIELD.index = 0
+FASHION_CFG_ID_FIELD.label = 2
+FASHION_CFG_ID_FIELD.has_default_value = false
+FASHION_CFG_ID_FIELD.default_value = 0
+FASHION_CFG_ID_FIELD.type = 5
+FASHION_CFG_ID_FIELD.cpp_type = 1
+
+FASHION_CFG_ID_GROUP_FIELD.name = "id_group"
+FASHION_CFG_ID_GROUP_FIELD.full_name = ".ftcfg.fashion_cfg.id_group"
+FASHION_CFG_ID_GROUP_FIELD.number = 2
+FASHION_CFG_ID_GROUP_FIELD.index = 1
+FASHION_CFG_ID_GROUP_FIELD.label = 2
+FASHION_CFG_ID_GROUP_FIELD.has_default_value = false
+FASHION_CFG_ID_GROUP_FIELD.default_value = 0
+FASHION_CFG_ID_GROUP_FIELD.type = 13
+FASHION_CFG_ID_GROUP_FIELD.cpp_type = 3
+
+FASHION_CFG_FASHION_COST_FIELD.name = "fashion_cost"
+FASHION_CFG_FASHION_COST_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_cost"
+FASHION_CFG_FASHION_COST_FIELD.number = 3
+FASHION_CFG_FASHION_COST_FIELD.index = 2
+FASHION_CFG_FASHION_COST_FIELD.label = 3
+FASHION_CFG_FASHION_COST_FIELD.has_default_value = false
+FASHION_CFG_FASHION_COST_FIELD.default_value = {}
+FASHION_CFG_FASHION_COST_FIELD.type = 13
+FASHION_CFG_FASHION_COST_FIELD.cpp_type = 3
+
+FASHION_CFG_FASHION_TYPE_FIELD.name = "fashion_type"
+FASHION_CFG_FASHION_TYPE_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_type"
+FASHION_CFG_FASHION_TYPE_FIELD.number = 4
+FASHION_CFG_FASHION_TYPE_FIELD.index = 3
+FASHION_CFG_FASHION_TYPE_FIELD.label = 2
+FASHION_CFG_FASHION_TYPE_FIELD.has_default_value = false
+FASHION_CFG_FASHION_TYPE_FIELD.default_value = 0
+FASHION_CFG_FASHION_TYPE_FIELD.type = 13
+FASHION_CFG_FASHION_TYPE_FIELD.cpp_type = 3
+
+FASHION_CFG_VOCATION_LIMIT_FIELD.name = "vocation_limit"
+FASHION_CFG_VOCATION_LIMIT_FIELD.full_name = ".ftcfg.fashion_cfg.vocation_limit"
+FASHION_CFG_VOCATION_LIMIT_FIELD.number = 5
+FASHION_CFG_VOCATION_LIMIT_FIELD.index = 4
+FASHION_CFG_VOCATION_LIMIT_FIELD.label = 2
+FASHION_CFG_VOCATION_LIMIT_FIELD.has_default_value = false
+FASHION_CFG_VOCATION_LIMIT_FIELD.default_value = 0
+FASHION_CFG_VOCATION_LIMIT_FIELD.type = 5
+FASHION_CFG_VOCATION_LIMIT_FIELD.cpp_type = 1
+
+FASHION_CFG_FASHION_NAME_FIELD.name = "fashion_name"
+FASHION_CFG_FASHION_NAME_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_name"
+FASHION_CFG_FASHION_NAME_FIELD.number = 6
+FASHION_CFG_FASHION_NAME_FIELD.index = 5
+FASHION_CFG_FASHION_NAME_FIELD.label = 2
+FASHION_CFG_FASHION_NAME_FIELD.has_default_value = false
+FASHION_CFG_FASHION_NAME_FIELD.default_value = 0
+FASHION_CFG_FASHION_NAME_FIELD.type = 5
+FASHION_CFG_FASHION_NAME_FIELD.cpp_type = 1
+
+FASHION_CFG_FASHION_ICON_FIELD.name = "fashion_icon"
+FASHION_CFG_FASHION_ICON_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_icon"
+FASHION_CFG_FASHION_ICON_FIELD.number = 7
+FASHION_CFG_FASHION_ICON_FIELD.index = 6
+FASHION_CFG_FASHION_ICON_FIELD.label = 2
+FASHION_CFG_FASHION_ICON_FIELD.has_default_value = false
+FASHION_CFG_FASHION_ICON_FIELD.default_value = 0
+FASHION_CFG_FASHION_ICON_FIELD.type = 5
+FASHION_CFG_FASHION_ICON_FIELD.cpp_type = 1
+
+FASHION_CFG_FASHION_PARTS_FIELD.name = "fashion_parts"
+FASHION_CFG_FASHION_PARTS_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_parts"
+FASHION_CFG_FASHION_PARTS_FIELD.number = 8
+FASHION_CFG_FASHION_PARTS_FIELD.index = 7
+FASHION_CFG_FASHION_PARTS_FIELD.label = 3
+FASHION_CFG_FASHION_PARTS_FIELD.has_default_value = false
+FASHION_CFG_FASHION_PARTS_FIELD.default_value = {}
+FASHION_CFG_FASHION_PARTS_FIELD.type = 5
+FASHION_CFG_FASHION_PARTS_FIELD.cpp_type = 1
+
+FASHION_CFG_FASHION_COLOUR_FIELD.name = "fashion_colour"
+FASHION_CFG_FASHION_COLOUR_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_colour"
+FASHION_CFG_FASHION_COLOUR_FIELD.number = 9
+FASHION_CFG_FASHION_COLOUR_FIELD.index = 8
+FASHION_CFG_FASHION_COLOUR_FIELD.label = 2
+FASHION_CFG_FASHION_COLOUR_FIELD.has_default_value = false
+FASHION_CFG_FASHION_COLOUR_FIELD.default_value = 0
+FASHION_CFG_FASHION_COLOUR_FIELD.type = 5
+FASHION_CFG_FASHION_COLOUR_FIELD.cpp_type = 1
+
+FASHION_CFG_FASHION_TIPS_FIELD.name = "fashion_tips"
+FASHION_CFG_FASHION_TIPS_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_tips"
+FASHION_CFG_FASHION_TIPS_FIELD.number = 10
+FASHION_CFG_FASHION_TIPS_FIELD.index = 9
+FASHION_CFG_FASHION_TIPS_FIELD.label = 2
+FASHION_CFG_FASHION_TIPS_FIELD.has_default_value = false
+FASHION_CFG_FASHION_TIPS_FIELD.default_value = 0
+FASHION_CFG_FASHION_TIPS_FIELD.type = 5
+FASHION_CFG_FASHION_TIPS_FIELD.cpp_type = 1
+
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_type"
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.number = 11
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.index = 10
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
+FASHION_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
+
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.name = "attribute_mode"
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_mode"
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.number = 12
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.index = 11
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.label = 3
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.has_default_value = false
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.default_value = {}
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.type = 5
+FASHION_CFG_ATTRIBUTE_MODE_FIELD.cpp_type = 1
+
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_count"
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.number = 13
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.index = 12
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.type = 2
+FASHION_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 6
+
+FASHION_CFG.name = "fashion_cfg"
+FASHION_CFG.full_name = ".ftcfg.fashion_cfg"
+FASHION_CFG.nested_types = {}
+FASHION_CFG.enum_types = {}
+FASHION_CFG.fields = {FASHION_CFG_ID_FIELD, FASHION_CFG_ID_GROUP_FIELD, FASHION_CFG_FASHION_COST_FIELD, FASHION_CFG_FASHION_TYPE_FIELD, FASHION_CFG_VOCATION_LIMIT_FIELD, FASHION_CFG_FASHION_NAME_FIELD, FASHION_CFG_FASHION_ICON_FIELD, FASHION_CFG_FASHION_PARTS_FIELD, FASHION_CFG_FASHION_COLOUR_FIELD, FASHION_CFG_FASHION_TIPS_FIELD, FASHION_CFG_ATTRIBUTE_TYPE_FIELD, FASHION_CFG_ATTRIBUTE_MODE_FIELD, FASHION_CFG_ATTRIBUTE_COUNT_FIELD}
+FASHION_CFG.is_extendable = false
+FASHION_CFG.extensions = {}
+FASHION_CFGS_ITEMS_FIELD.name = "items"
+FASHION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_cfgs.items"
+FASHION_CFGS_ITEMS_FIELD.number = 1
+FASHION_CFGS_ITEMS_FIELD.index = 0
+FASHION_CFGS_ITEMS_FIELD.label = 3
+FASHION_CFGS_ITEMS_FIELD.has_default_value = false
+FASHION_CFGS_ITEMS_FIELD.default_value = {}
+FASHION_CFGS_ITEMS_FIELD.message_type = FASHION_CFG
+FASHION_CFGS_ITEMS_FIELD.type = 11
+FASHION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FASHION_CFGS.name = "fashion_cfgs"
+FASHION_CFGS.full_name = ".ftcfg.fashion_cfgs"
+FASHION_CFGS.nested_types = {}
+FASHION_CFGS.enum_types = {}
+FASHION_CFGS.fields = {FASHION_CFGS_ITEMS_FIELD}
+FASHION_CFGS.is_extendable = false
+FASHION_CFGS.extensions = {}
+FASHION_COST_CFG_ID_FIELD.name = "id"
+FASHION_COST_CFG_ID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.id"
+FASHION_COST_CFG_ID_FIELD.number = 1
+FASHION_COST_CFG_ID_FIELD.index = 0
+FASHION_COST_CFG_ID_FIELD.label = 2
+FASHION_COST_CFG_ID_FIELD.has_default_value = false
+FASHION_COST_CFG_ID_FIELD.default_value = 0
+FASHION_COST_CFG_ID_FIELD.type = 13
+FASHION_COST_CFG_ID_FIELD.cpp_type = 3
+
+FASHION_COST_CFG_FASHION_TIME_FIELD.name = "fashion_time"
+FASHION_COST_CFG_FASHION_TIME_FIELD.full_name = ".ftcfg.fashion_cost_cfg.fashion_time"
+FASHION_COST_CFG_FASHION_TIME_FIELD.number = 2
+FASHION_COST_CFG_FASHION_TIME_FIELD.index = 1
+FASHION_COST_CFG_FASHION_TIME_FIELD.label = 2
+FASHION_COST_CFG_FASHION_TIME_FIELD.has_default_value = false
+FASHION_COST_CFG_FASHION_TIME_FIELD.default_value = 0
+FASHION_COST_CFG_FASHION_TIME_FIELD.type = 5
+FASHION_COST_CFG_FASHION_TIME_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_FASHION_POINT_FIELD.name = "fashion_point"
+FASHION_COST_CFG_FASHION_POINT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.fashion_point"
+FASHION_COST_CFG_FASHION_POINT_FIELD.number = 3
+FASHION_COST_CFG_FASHION_POINT_FIELD.index = 2
+FASHION_COST_CFG_FASHION_POINT_FIELD.label = 2
+FASHION_COST_CFG_FASHION_POINT_FIELD.has_default_value = false
+FASHION_COST_CFG_FASHION_POINT_FIELD.default_value = 0
+FASHION_COST_CFG_FASHION_POINT_FIELD.type = 13
+FASHION_COST_CFG_FASHION_POINT_FIELD.cpp_type = 3
+
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.name = "unlock_level"
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_level"
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.number = 4
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.index = 3
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.label = 2
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.default_value = 0
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.name = "unlock_frontid"
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_frontid"
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.number = 5
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.index = 4
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.name = "unlock_itemid"
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_itemid"
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.number = 6
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.index = 5
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.name = "unlock_itemcount"
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_itemcount"
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.number = 7
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.index = 6
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.name = "unlock_cointype"
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_cointype"
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.number = 8
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.index = 7
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.name = "unlock_coincount"
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_coincount"
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.number = 9
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.index = 8
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.name = "unlock_allintensify"
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_allintensify"
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.number = 10
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.index = 9
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.label = 2
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.default_value = 0
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.name = "unlock_specifyintensify"
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_specifyintensify"
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.number = 11
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.index = 10
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.name = "unlock_gemstonelv"
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_gemstonelv"
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.number = 12
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.index = 11
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.label = 2
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.default_value = 0
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.name = "unlock_quality"
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_quality"
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.number = 13
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.index = 12
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.label = 3
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.default_value = {}
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.cpp_type = 1
+
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.name = "unlock_power"
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_power"
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.number = 14
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.index = 13
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.label = 2
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.has_default_value = false
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.default_value = 0
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.type = 5
+FASHION_COST_CFG_UNLOCK_POWER_FIELD.cpp_type = 1
+
+FASHION_COST_CFG.name = "fashion_cost_cfg"
+FASHION_COST_CFG.full_name = ".ftcfg.fashion_cost_cfg"
+FASHION_COST_CFG.nested_types = {}
+FASHION_COST_CFG.enum_types = {}
+FASHION_COST_CFG.fields = {FASHION_COST_CFG_ID_FIELD, FASHION_COST_CFG_FASHION_TIME_FIELD, FASHION_COST_CFG_FASHION_POINT_FIELD, FASHION_COST_CFG_UNLOCK_LEVEL_FIELD, FASHION_COST_CFG_UNLOCK_FRONTID_FIELD, FASHION_COST_CFG_UNLOCK_ITEMID_FIELD, FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD, FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD, FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD, FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD, FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD, FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD, FASHION_COST_CFG_UNLOCK_QUALITY_FIELD, FASHION_COST_CFG_UNLOCK_POWER_FIELD}
+FASHION_COST_CFG.is_extendable = false
+FASHION_COST_CFG.extensions = {}
+FASHION_COST_CFGS_ITEMS_FIELD.name = "items"
+FASHION_COST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_cost_cfgs.items"
+FASHION_COST_CFGS_ITEMS_FIELD.number = 1
+FASHION_COST_CFGS_ITEMS_FIELD.index = 0
+FASHION_COST_CFGS_ITEMS_FIELD.label = 3
+FASHION_COST_CFGS_ITEMS_FIELD.has_default_value = false
+FASHION_COST_CFGS_ITEMS_FIELD.default_value = {}
+FASHION_COST_CFGS_ITEMS_FIELD.message_type = FASHION_COST_CFG
+FASHION_COST_CFGS_ITEMS_FIELD.type = 11
+FASHION_COST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FASHION_COST_CFGS.name = "fashion_cost_cfgs"
+FASHION_COST_CFGS.full_name = ".ftcfg.fashion_cost_cfgs"
+FASHION_COST_CFGS.nested_types = {}
+FASHION_COST_CFGS.enum_types = {}
+FASHION_COST_CFGS.fields = {FASHION_COST_CFGS_ITEMS_FIELD}
+FASHION_COST_CFGS.is_extendable = false
+FASHION_COST_CFGS.extensions = {}
+MOUNTEQUIP_CFG_ID_FIELD.name = "id"
+MOUNTEQUIP_CFG_ID_FIELD.full_name = ".ftcfg.mountequip_cfg.id"
+MOUNTEQUIP_CFG_ID_FIELD.number = 1
+MOUNTEQUIP_CFG_ID_FIELD.index = 0
+MOUNTEQUIP_CFG_ID_FIELD.label = 2
+MOUNTEQUIP_CFG_ID_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ID_FIELD.default_value = 0
+MOUNTEQUIP_CFG_ID_FIELD.type = 13
+MOUNTEQUIP_CFG_ID_FIELD.cpp_type = 3
+
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.name = "item_name"
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.full_name = ".ftcfg.mountequip_cfg.item_name"
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.number = 2
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.index = 1
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.label = 2
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.default_value = 0
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.type = 5
+MOUNTEQUIP_CFG_ITEM_NAME_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.name = "item_desc"
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.full_name = ".ftcfg.mountequip_cfg.item_desc"
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.number = 3
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.index = 2
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.label = 2
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.default_value = 0
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.type = 5
+MOUNTEQUIP_CFG_ITEM_DESC_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.name = "need_level"
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.mountequip_cfg.need_level"
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.number = 4
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.index = 3
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.label = 2
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.default_value = 0
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.type = 5
+MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.name = "equip_place"
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.full_name = ".ftcfg.mountequip_cfg.equip_place"
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.number = 5
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.index = 4
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.label = 2
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.default_value = 0
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.type = 5
+MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.name = "display_type"
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.full_name = ".ftcfg.mountequip_cfg.display_type"
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.number = 6
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.index = 5
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.label = 2
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.default_value = 0
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.type = 5
+MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.name = "item_color"
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.full_name = ".ftcfg.mountequip_cfg.item_color"
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.number = 7
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.index = 6
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.label = 2
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.default_value = nil
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.type = 14
+MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.cpp_type = 8
+
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.name = "item_icon"
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.mountequip_cfg.item_icon"
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.number = 8
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.index = 7
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.label = 2
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.default_value = 0
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.type = 5
+MOUNTEQUIP_CFG_ITEM_ICON_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.name = "could_trade"
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.full_name = ".ftcfg.mountequip_cfg.could_trade"
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.number = 9
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.index = 8
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.label = 2
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.default_value = 0
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.type = 5
+MOUNTEQUIP_CFG_COULD_TRADE_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.name = "effect_timelimited"
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.full_name = ".ftcfg.mountequip_cfg.effect_timelimited"
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.number = 10
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.index = 9
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.label = 2
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.default_value = 0
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.type = 5
+MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_type"
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.number = 11
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.index = 10
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
+MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.name = "attribute_mode"
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_mode"
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.number = 12
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.index = 11
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.label = 3
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.default_value = {}
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.type = 5
+MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.cpp_type = 1
+
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_count"
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.number = 13
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.index = 12
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.type = 2
+MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 6
+
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.name = "combat_point"
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.mountequip_cfg.combat_point"
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.number = 14
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.index = 13
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.label = 2
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.has_default_value = false
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.default_value = 0
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.type = 13
+MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.cpp_type = 3
+
+MOUNTEQUIP_CFG.name = "mountequip_cfg"
+MOUNTEQUIP_CFG.full_name = ".ftcfg.mountequip_cfg"
+MOUNTEQUIP_CFG.nested_types = {}
+MOUNTEQUIP_CFG.enum_types = {}
+MOUNTEQUIP_CFG.fields = {MOUNTEQUIP_CFG_ID_FIELD, MOUNTEQUIP_CFG_ITEM_NAME_FIELD, MOUNTEQUIP_CFG_ITEM_DESC_FIELD, MOUNTEQUIP_CFG_NEED_LEVEL_FIELD, MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD, MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD, MOUNTEQUIP_CFG_ITEM_COLOR_FIELD, MOUNTEQUIP_CFG_ITEM_ICON_FIELD, MOUNTEQUIP_CFG_COULD_TRADE_FIELD, MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD, MOUNTEQUIP_CFG_COMBAT_POINT_FIELD}
+MOUNTEQUIP_CFG.is_extendable = false
+MOUNTEQUIP_CFG.extensions = {}
+MOUNTEQUIP_CFGS_ITEMS_FIELD.name = "items"
+MOUNTEQUIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mountequip_cfgs.items"
+MOUNTEQUIP_CFGS_ITEMS_FIELD.number = 1
+MOUNTEQUIP_CFGS_ITEMS_FIELD.index = 0
+MOUNTEQUIP_CFGS_ITEMS_FIELD.label = 3
+MOUNTEQUIP_CFGS_ITEMS_FIELD.has_default_value = false
+MOUNTEQUIP_CFGS_ITEMS_FIELD.default_value = {}
+MOUNTEQUIP_CFGS_ITEMS_FIELD.message_type = MOUNTEQUIP_CFG
+MOUNTEQUIP_CFGS_ITEMS_FIELD.type = 11
+MOUNTEQUIP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MOUNTEQUIP_CFGS.name = "mountequip_cfgs"
+MOUNTEQUIP_CFGS.full_name = ".ftcfg.mountequip_cfgs"
+MOUNTEQUIP_CFGS.nested_types = {}
+MOUNTEQUIP_CFGS.enum_types = {}
+MOUNTEQUIP_CFGS.fields = {MOUNTEQUIP_CFGS_ITEMS_FIELD}
+MOUNTEQUIP_CFGS.is_extendable = false
+MOUNTEQUIP_CFGS.extensions = {}
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.name = "id"
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.id"
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.number = 1
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.index = 0
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.label = 2
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.has_default_value = false
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.default_value = 0
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.type = 5
+INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.cpp_type = 1
+
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.name = "drop_rate"
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.drop_rate"
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.number = 2
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.index = 1
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.label = 3
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.has_default_value = false
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.default_value = {}
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.type = 5
+INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.cpp_type = 1
+
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.name = "random_reward_id"
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.random_reward_id"
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.number = 3
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.index = 2
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.label = 3
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.has_default_value = false
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.default_value = {}
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.type = 5
+INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.cpp_type = 1
+
+INDEPENDENT_RANDOM_REWARD_CFG.name = "independent_random_reward_cfg"
+INDEPENDENT_RANDOM_REWARD_CFG.full_name = ".ftcfg.independent_random_reward_cfg"
+INDEPENDENT_RANDOM_REWARD_CFG.nested_types = {}
+INDEPENDENT_RANDOM_REWARD_CFG.enum_types = {}
+INDEPENDENT_RANDOM_REWARD_CFG.fields = {INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD, INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD, INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD}
+INDEPENDENT_RANDOM_REWARD_CFG.is_extendable = false
+INDEPENDENT_RANDOM_REWARD_CFG.extensions = {}
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.name = "items"
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.independent_random_reward_cfgs.items"
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.number = 1
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.index = 0
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.label = 3
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.message_type = INDEPENDENT_RANDOM_REWARD_CFG
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.type = 11
+INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+INDEPENDENT_RANDOM_REWARD_CFGS.name = "independent_random_reward_cfgs"
+INDEPENDENT_RANDOM_REWARD_CFGS.full_name = ".ftcfg.independent_random_reward_cfgs"
+INDEPENDENT_RANDOM_REWARD_CFGS.nested_types = {}
+INDEPENDENT_RANDOM_REWARD_CFGS.enum_types = {}
+INDEPENDENT_RANDOM_REWARD_CFGS.fields = {INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD}
+INDEPENDENT_RANDOM_REWARD_CFGS.is_extendable = false
+INDEPENDENT_RANDOM_REWARD_CFGS.extensions = {}
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.name = "id"
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.id"
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.number = 1
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.index = 0
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.label = 2
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.default_value = 0
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.name = "reward_rate"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_rate"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.number = 2
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.index = 1
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.name = "reward_type"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_type"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.number = 3
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.index = 2
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.enum_type = config_predefine_pb.EREWARDTYPE
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.type = 14
+WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.cpp_type = 8
+
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.name = "reward_id"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_id"
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.number = 4
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.index = 3
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.name = "random_min"
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.random_min"
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.number = 5
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.index = 4
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.name = "random_max"
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.random_max"
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.number = 6
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.index = 5
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.name = "show"
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.show"
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.number = 7
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.index = 6
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.label = 2
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.default_value = 0
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.type = 5
+WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.cpp_type = 1
+
+WEIGHT_RANDOM_REWARD_CFG.name = "weight_random_reward_cfg"
+WEIGHT_RANDOM_REWARD_CFG.full_name = ".ftcfg.weight_random_reward_cfg"
+WEIGHT_RANDOM_REWARD_CFG.nested_types = {}
+WEIGHT_RANDOM_REWARD_CFG.enum_types = {}
+WEIGHT_RANDOM_REWARD_CFG.fields = {WEIGHT_RANDOM_REWARD_CFG_ID_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD, WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD, WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD, WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD}
+WEIGHT_RANDOM_REWARD_CFG.is_extendable = false
+WEIGHT_RANDOM_REWARD_CFG.extensions = {}
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.name = "items"
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.weight_random_reward_cfgs.items"
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.number = 1
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.index = 0
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.label = 3
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.message_type = WEIGHT_RANDOM_REWARD_CFG
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.type = 11
+WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+WEIGHT_RANDOM_REWARD_CFGS.name = "weight_random_reward_cfgs"
+WEIGHT_RANDOM_REWARD_CFGS.full_name = ".ftcfg.weight_random_reward_cfgs"
+WEIGHT_RANDOM_REWARD_CFGS.nested_types = {}
+WEIGHT_RANDOM_REWARD_CFGS.enum_types = {}
+WEIGHT_RANDOM_REWARD_CFGS.fields = {WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD}
+WEIGHT_RANDOM_REWARD_CFGS.is_extendable = false
+WEIGHT_RANDOM_REWARD_CFGS.extensions = {}
+REWARD_CFG_ID_FIELD.name = "id"
+REWARD_CFG_ID_FIELD.full_name = ".ftcfg.reward_cfg.id"
+REWARD_CFG_ID_FIELD.number = 1
+REWARD_CFG_ID_FIELD.index = 0
+REWARD_CFG_ID_FIELD.label = 2
+REWARD_CFG_ID_FIELD.has_default_value = false
+REWARD_CFG_ID_FIELD.default_value = 0
+REWARD_CFG_ID_FIELD.type = 5
+REWARD_CFG_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.name = "reward_attribute_id"
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_attribute_id"
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.number = 2
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.index = 1
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.label = 3
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.type = 5
+REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_attribute_count"
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 3
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 2
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_ITEM_ID_FIELD.name = "reward_item_id"
+REWARD_CFG_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_item_id"
+REWARD_CFG_REWARD_ITEM_ID_FIELD.number = 4
+REWARD_CFG_REWARD_ITEM_ID_FIELD.index = 3
+REWARD_CFG_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.name = "reward_item_count"
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_item_count"
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.number = 5
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.index = 4
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_ITEM_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.name = "reward_magic_rock_id"
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_magic_rock_id"
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.number = 6
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.index = 5
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.label = 3
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.type = 5
+REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.name = "reward_magic_rock_count"
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_magic_rock_count"
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.number = 7
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.index = 6
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.name = "reward_refine_rock_id"
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_refine_rock_id"
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.number = 8
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.index = 7
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.label = 3
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.type = 5
+REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.name = "reward_refine_rock_count"
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_refine_rock_count"
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.number = 9
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.index = 8
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_SOUL_ID_FIELD.name = "reward_soul_id"
+REWARD_CFG_REWARD_SOUL_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_soul_id"
+REWARD_CFG_REWARD_SOUL_ID_FIELD.number = 10
+REWARD_CFG_REWARD_SOUL_ID_FIELD.index = 9
+REWARD_CFG_REWARD_SOUL_ID_FIELD.label = 3
+REWARD_CFG_REWARD_SOUL_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_SOUL_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_SOUL_ID_FIELD.type = 5
+REWARD_CFG_REWARD_SOUL_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.name = "reward_soul_count"
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_soul_count"
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.number = 11
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.index = 10
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_SOUL_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.name = "reward_partner_id"
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_partner_id"
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.number = 12
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.index = 11
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.label = 3
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.has_default_value = false
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.default_value = {}
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.type = 5
+REWARD_CFG_REWARD_PARTNER_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.name = "reward_partner_count"
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_partner_count"
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.number = 13
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.index = 12
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.label = 3
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.has_default_value = false
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.default_value = {}
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.type = 5
+REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.name = "profession1_reward_item_id"
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession1_reward_item_id"
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.number = 14
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.index = 13
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession1_reward_attribute_count"
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession1_reward_attribute_count"
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.number = 15
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.index = 14
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.name = "profession2_reward_item_id"
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession2_reward_item_id"
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.number = 16
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.index = 15
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession2_reward_attribute_count"
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession2_reward_attribute_count"
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.number = 17
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.index = 16
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.name = "profession3_reward_item_id"
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession3_reward_item_id"
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.number = 18
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.index = 17
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession3_reward_attribute_count"
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession3_reward_attribute_count"
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.number = 19
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.index = 18
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.name = "profession4_reward_item_id"
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession4_reward_item_id"
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.number = 20
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.index = 19
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession4_reward_attribute_count"
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession4_reward_attribute_count"
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.number = 21
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.index = 20
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.name = "profession5_reward_item_id"
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession5_reward_item_id"
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.number = 22
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.index = 21
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.label = 3
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.default_value = {}
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.type = 5
+REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.cpp_type = 1
+
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession5_reward_attribute_count"
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession5_reward_attribute_count"
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.number = 23
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.index = 22
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
+REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
+
+REWARD_CFG.name = "reward_cfg"
+REWARD_CFG.full_name = ".ftcfg.reward_cfg"
+REWARD_CFG.nested_types = {}
+REWARD_CFG.enum_types = {}
+REWARD_CFG.fields = {REWARD_CFG_ID_FIELD, REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD, REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_REWARD_ITEM_ID_FIELD, REWARD_CFG_REWARD_ITEM_COUNT_FIELD, REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD, REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD, REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD, REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD, REWARD_CFG_REWARD_SOUL_ID_FIELD, REWARD_CFG_REWARD_SOUL_COUNT_FIELD, REWARD_CFG_REWARD_PARTNER_ID_FIELD, REWARD_CFG_REWARD_PARTNER_COUNT_FIELD, REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD}
+REWARD_CFG.is_extendable = false
+REWARD_CFG.extensions = {}
+REWARD_CFGS_ITEMS_FIELD.name = "items"
+REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.reward_cfgs.items"
+REWARD_CFGS_ITEMS_FIELD.number = 1
+REWARD_CFGS_ITEMS_FIELD.index = 0
+REWARD_CFGS_ITEMS_FIELD.label = 3
+REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+REWARD_CFGS_ITEMS_FIELD.default_value = {}
+REWARD_CFGS_ITEMS_FIELD.message_type = REWARD_CFG
+REWARD_CFGS_ITEMS_FIELD.type = 11
+REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+REWARD_CFGS.name = "reward_cfgs"
+REWARD_CFGS.full_name = ".ftcfg.reward_cfgs"
+REWARD_CFGS.nested_types = {}
+REWARD_CFGS.enum_types = {}
+REWARD_CFGS.fields = {REWARD_CFGS_ITEMS_FIELD}
+REWARD_CFGS.is_extendable = false
+REWARD_CFGS.extensions = {}
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.name = "id"
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.full_name = ".ftcfg.func_type_weight_cfg.id"
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.number = 1
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.index = 0
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.label = 2
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.has_default_value = false
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.default_value = nil
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.type = 14
+FUNC_TYPE_WEIGHT_CFG_ID_FIELD.cpp_type = 8
+
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.name = "drops"
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.full_name = ".ftcfg.func_type_weight_cfg.drops"
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.number = 2
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.index = 1
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.label = 3
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.has_default_value = false
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.default_value = {}
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.type = 5
+FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.cpp_type = 1
+
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.name = "weights"
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.full_name = ".ftcfg.func_type_weight_cfg.weights"
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.number = 3
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.index = 2
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.label = 3
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.has_default_value = false
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.default_value = {}
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.type = 5
+FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.cpp_type = 1
+
+FUNC_TYPE_WEIGHT_CFG.name = "func_type_weight_cfg"
+FUNC_TYPE_WEIGHT_CFG.full_name = ".ftcfg.func_type_weight_cfg"
+FUNC_TYPE_WEIGHT_CFG.nested_types = {}
+FUNC_TYPE_WEIGHT_CFG.enum_types = {}
+FUNC_TYPE_WEIGHT_CFG.fields = {FUNC_TYPE_WEIGHT_CFG_ID_FIELD, FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD, FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD}
+FUNC_TYPE_WEIGHT_CFG.is_extendable = false
+FUNC_TYPE_WEIGHT_CFG.extensions = {}
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.name = "items"
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.func_type_weight_cfgs.items"
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.number = 1
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.index = 0
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.label = 3
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.has_default_value = false
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.default_value = {}
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.message_type = FUNC_TYPE_WEIGHT_CFG
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.type = 11
+FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FUNC_TYPE_WEIGHT_CFGS.name = "func_type_weight_cfgs"
+FUNC_TYPE_WEIGHT_CFGS.full_name = ".ftcfg.func_type_weight_cfgs"
+FUNC_TYPE_WEIGHT_CFGS.nested_types = {}
+FUNC_TYPE_WEIGHT_CFGS.enum_types = {}
+FUNC_TYPE_WEIGHT_CFGS.fields = {FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD}
+FUNC_TYPE_WEIGHT_CFGS.is_extendable = false
+FUNC_TYPE_WEIGHT_CFGS.extensions = {}
+ZONE_LOCATION_CFG_ID_FIELD.name = "id"
+ZONE_LOCATION_CFG_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.id"
+ZONE_LOCATION_CFG_ID_FIELD.number = 1
+ZONE_LOCATION_CFG_ID_FIELD.index = 0
+ZONE_LOCATION_CFG_ID_FIELD.label = 2
+ZONE_LOCATION_CFG_ID_FIELD.has_default_value = false
+ZONE_LOCATION_CFG_ID_FIELD.default_value = 0
+ZONE_LOCATION_CFG_ID_FIELD.type = 5
+ZONE_LOCATION_CFG_ID_FIELD.cpp_type = 1
+
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.name = "province_id"
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.province_id"
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.number = 2
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.index = 1
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.label = 2
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.has_default_value = false
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.default_value = 0
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.type = 5
+ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.cpp_type = 1
+
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.name = "province_language_id"
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.province_language_id"
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.number = 3
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.index = 2
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.label = 2
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.has_default_value = false
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.default_value = 0
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.type = 5
+ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.cpp_type = 1
+
+ZONE_LOCATION_CFG_CITY_ID_FIELD.name = "city_id"
+ZONE_LOCATION_CFG_CITY_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.city_id"
+ZONE_LOCATION_CFG_CITY_ID_FIELD.number = 4
+ZONE_LOCATION_CFG_CITY_ID_FIELD.index = 3
+ZONE_LOCATION_CFG_CITY_ID_FIELD.label = 2
+ZONE_LOCATION_CFG_CITY_ID_FIELD.has_default_value = false
+ZONE_LOCATION_CFG_CITY_ID_FIELD.default_value = 0
+ZONE_LOCATION_CFG_CITY_ID_FIELD.type = 5
+ZONE_LOCATION_CFG_CITY_ID_FIELD.cpp_type = 1
+
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.name = "city_language_id"
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.city_language_id"
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.number = 5
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.index = 4
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.label = 2
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.has_default_value = false
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.default_value = 0
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.type = 5
+ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.cpp_type = 1
+
+ZONE_LOCATION_CFG.name = "zone_location_cfg"
+ZONE_LOCATION_CFG.full_name = ".ftcfg.zone_location_cfg"
+ZONE_LOCATION_CFG.nested_types = {}
+ZONE_LOCATION_CFG.enum_types = {}
+ZONE_LOCATION_CFG.fields = {ZONE_LOCATION_CFG_ID_FIELD, ZONE_LOCATION_CFG_PROVINCE_ID_FIELD, ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD, ZONE_LOCATION_CFG_CITY_ID_FIELD, ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD}
+ZONE_LOCATION_CFG.is_extendable = false
+ZONE_LOCATION_CFG.extensions = {}
+ZONE_LOCATION_CFGS_ITEMS_FIELD.name = "items"
+ZONE_LOCATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.zone_location_cfgs.items"
+ZONE_LOCATION_CFGS_ITEMS_FIELD.number = 1
+ZONE_LOCATION_CFGS_ITEMS_FIELD.index = 0
+ZONE_LOCATION_CFGS_ITEMS_FIELD.label = 3
+ZONE_LOCATION_CFGS_ITEMS_FIELD.has_default_value = false
+ZONE_LOCATION_CFGS_ITEMS_FIELD.default_value = {}
+ZONE_LOCATION_CFGS_ITEMS_FIELD.message_type = ZONE_LOCATION_CFG
+ZONE_LOCATION_CFGS_ITEMS_FIELD.type = 11
+ZONE_LOCATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ZONE_LOCATION_CFGS.name = "zone_location_cfgs"
+ZONE_LOCATION_CFGS.full_name = ".ftcfg.zone_location_cfgs"
+ZONE_LOCATION_CFGS.nested_types = {}
+ZONE_LOCATION_CFGS.enum_types = {}
+ZONE_LOCATION_CFGS.fields = {ZONE_LOCATION_CFGS_ITEMS_FIELD}
+ZONE_LOCATION_CFGS.is_extendable = false
+ZONE_LOCATION_CFGS.extensions = {}
+GIFT_GIVING_CFG_ID_FIELD.name = "id"
+GIFT_GIVING_CFG_ID_FIELD.full_name = ".ftcfg.gift_giving_cfg.id"
+GIFT_GIVING_CFG_ID_FIELD.number = 1
+GIFT_GIVING_CFG_ID_FIELD.index = 0
+GIFT_GIVING_CFG_ID_FIELD.label = 2
+GIFT_GIVING_CFG_ID_FIELD.has_default_value = false
+GIFT_GIVING_CFG_ID_FIELD.default_value = 0
+GIFT_GIVING_CFG_ID_FIELD.type = 5
+GIFT_GIVING_CFG_ID_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.name = "gift_type"
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.full_name = ".ftcfg.gift_giving_cfg.gift_type"
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.number = 2
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.index = 1
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.label = 2
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.has_default_value = false
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.default_value = 0
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.type = 5
+GIFT_GIVING_CFG_GIFT_TYPE_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.name = "gift_item_id"
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.full_name = ".ftcfg.gift_giving_cfg.gift_item_id"
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.number = 3
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.index = 2
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.label = 2
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.has_default_value = false
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.default_value = 0
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.type = 5
+GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.name = "give_friend_degree"
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.full_name = ".ftcfg.gift_giving_cfg.give_friend_degree"
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.number = 4
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.index = 3
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.label = 2
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.has_default_value = false
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.default_value = 0
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.type = 5
+GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.name = "is_give_friebd"
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.full_name = ".ftcfg.gift_giving_cfg.is_give_friebd"
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.number = 5
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.index = 4
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.label = 2
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.has_default_value = false
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.default_value = 0
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.type = 5
+GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.name = "is_give_delete"
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.full_name = ".ftcfg.gift_giving_cfg.is_give_delete"
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.number = 6
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.index = 5
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.label = 2
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.has_default_value = false
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.default_value = 0
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.type = 5
+GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.cpp_type = 1
+
+GIFT_GIVING_CFG.name = "gift_giving_cfg"
+GIFT_GIVING_CFG.full_name = ".ftcfg.gift_giving_cfg"
+GIFT_GIVING_CFG.nested_types = {}
+GIFT_GIVING_CFG.enum_types = {}
+GIFT_GIVING_CFG.fields = {GIFT_GIVING_CFG_ID_FIELD, GIFT_GIVING_CFG_GIFT_TYPE_FIELD, GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD, GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD, GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD, GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD}
+GIFT_GIVING_CFG.is_extendable = false
+GIFT_GIVING_CFG.extensions = {}
+GIFT_GIVING_CFGS_ITEMS_FIELD.name = "items"
+GIFT_GIVING_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gift_giving_cfgs.items"
+GIFT_GIVING_CFGS_ITEMS_FIELD.number = 1
+GIFT_GIVING_CFGS_ITEMS_FIELD.index = 0
+GIFT_GIVING_CFGS_ITEMS_FIELD.label = 3
+GIFT_GIVING_CFGS_ITEMS_FIELD.has_default_value = false
+GIFT_GIVING_CFGS_ITEMS_FIELD.default_value = {}
+GIFT_GIVING_CFGS_ITEMS_FIELD.message_type = GIFT_GIVING_CFG
+GIFT_GIVING_CFGS_ITEMS_FIELD.type = 11
+GIFT_GIVING_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GIFT_GIVING_CFGS.name = "gift_giving_cfgs"
+GIFT_GIVING_CFGS.full_name = ".ftcfg.gift_giving_cfgs"
+GIFT_GIVING_CFGS.nested_types = {}
+GIFT_GIVING_CFGS.enum_types = {}
+GIFT_GIVING_CFGS.fields = {GIFT_GIVING_CFGS_ITEMS_FIELD}
+GIFT_GIVING_CFGS.is_extendable = false
+GIFT_GIVING_CFGS.extensions = {}
+FRIEND_TITLE_CFG_ID_FIELD.name = "id"
+FRIEND_TITLE_CFG_ID_FIELD.full_name = ".ftcfg.friend_title_cfg.id"
+FRIEND_TITLE_CFG_ID_FIELD.number = 1
+FRIEND_TITLE_CFG_ID_FIELD.index = 0
+FRIEND_TITLE_CFG_ID_FIELD.label = 2
+FRIEND_TITLE_CFG_ID_FIELD.has_default_value = false
+FRIEND_TITLE_CFG_ID_FIELD.default_value = 0
+FRIEND_TITLE_CFG_ID_FIELD.type = 5
+FRIEND_TITLE_CFG_ID_FIELD.cpp_type = 1
+
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.name = "friend_degree_level"
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.full_name = ".ftcfg.friend_title_cfg.friend_degree_level"
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.number = 2
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.index = 1
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.label = 2
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.has_default_value = false
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.default_value = 0
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.type = 5
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.cpp_type = 1
+
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.name = "friend_degree_languageid"
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.full_name = ".ftcfg.friend_title_cfg.friend_degree_languageid"
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.number = 3
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.index = 2
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.label = 2
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.has_default_value = false
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.default_value = 0
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.type = 5
+FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.cpp_type = 1
+
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.name = "need_friend_degree"
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.full_name = ".ftcfg.friend_title_cfg.need_friend_degree"
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.number = 4
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.index = 3
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.label = 2
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.has_default_value = false
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.default_value = 0
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.type = 5
+FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.cpp_type = 1
+
+FRIEND_TITLE_CFG.name = "friend_title_cfg"
+FRIEND_TITLE_CFG.full_name = ".ftcfg.friend_title_cfg"
+FRIEND_TITLE_CFG.nested_types = {}
+FRIEND_TITLE_CFG.enum_types = {}
+FRIEND_TITLE_CFG.fields = {FRIEND_TITLE_CFG_ID_FIELD, FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD, FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD, FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD}
+FRIEND_TITLE_CFG.is_extendable = false
+FRIEND_TITLE_CFG.extensions = {}
+FRIEND_TITLE_CFGS_ITEMS_FIELD.name = "items"
+FRIEND_TITLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.friend_title_cfgs.items"
+FRIEND_TITLE_CFGS_ITEMS_FIELD.number = 1
+FRIEND_TITLE_CFGS_ITEMS_FIELD.index = 0
+FRIEND_TITLE_CFGS_ITEMS_FIELD.label = 3
+FRIEND_TITLE_CFGS_ITEMS_FIELD.has_default_value = false
+FRIEND_TITLE_CFGS_ITEMS_FIELD.default_value = {}
+FRIEND_TITLE_CFGS_ITEMS_FIELD.message_type = FRIEND_TITLE_CFG
+FRIEND_TITLE_CFGS_ITEMS_FIELD.type = 11
+FRIEND_TITLE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FRIEND_TITLE_CFGS.name = "friend_title_cfgs"
+FRIEND_TITLE_CFGS.full_name = ".ftcfg.friend_title_cfgs"
+FRIEND_TITLE_CFGS.nested_types = {}
+FRIEND_TITLE_CFGS.enum_types = {}
+FRIEND_TITLE_CFGS.fields = {FRIEND_TITLE_CFGS_ITEMS_FIELD}
+FRIEND_TITLE_CFGS.is_extendable = false
+FRIEND_TITLE_CFGS.extensions = {}
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.name = "fate_id"
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_id"
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.number = 1
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.index = 0
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.label = 2
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.has_default_value = false
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.default_value = 0
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.type = 5
+FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.cpp_type = 1
+
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.name = "need_fate_value"
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.need_fate_value"
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.number = 2
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.index = 1
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.label = 2
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.has_default_value = false
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.default_value = 0
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.type = 5
+FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.cpp_type = 1
+
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.name = "fate_item_id"
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_item_id"
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.number = 3
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.index = 2
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.label = 2
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.has_default_value = false
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.default_value = 0
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.type = 5
+FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.cpp_type = 1
+
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.name = "fate_item_number"
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_item_number"
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.number = 4
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.index = 3
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.label = 2
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.has_default_value = false
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.default_value = 0
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.type = 5
+FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.cpp_type = 1
+
+FATE_VALUE_REWARD_CFG.name = "fate_value_reward_cfg"
+FATE_VALUE_REWARD_CFG.full_name = ".ftcfg.fate_value_reward_cfg"
+FATE_VALUE_REWARD_CFG.nested_types = {}
+FATE_VALUE_REWARD_CFG.enum_types = {}
+FATE_VALUE_REWARD_CFG.fields = {FATE_VALUE_REWARD_CFG_FATE_ID_FIELD, FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD, FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD, FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD}
+FATE_VALUE_REWARD_CFG.is_extendable = false
+FATE_VALUE_REWARD_CFG.extensions = {}
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.name = "items"
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fate_value_reward_cfgs.items"
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.number = 1
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.index = 0
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.label = 3
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.message_type = FATE_VALUE_REWARD_CFG
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.type = 11
+FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+FATE_VALUE_REWARD_CFGS.name = "fate_value_reward_cfgs"
+FATE_VALUE_REWARD_CFGS.full_name = ".ftcfg.fate_value_reward_cfgs"
+FATE_VALUE_REWARD_CFGS.nested_types = {}
+FATE_VALUE_REWARD_CFGS.enum_types = {}
+FATE_VALUE_REWARD_CFGS.fields = {FATE_VALUE_REWARD_CFGS_ITEMS_FIELD}
+FATE_VALUE_REWARD_CFGS.is_extendable = false
+FATE_VALUE_REWARD_CFGS.extensions = {}
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.name = "item_id"
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_id"
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.number = 1
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.index = 0
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.name = "item_num"
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_num"
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.number = 2
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.index = 1
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.name = "item_fail_num"
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_fail_num"
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.number = 3
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.index = 2
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_RANGE_FIELD.name = "range"
+GEMSTONE_INLAY_CFG_RANGE_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.range"
+GEMSTONE_INLAY_CFG_RANGE_FIELD.number = 4
+GEMSTONE_INLAY_CFG_RANGE_FIELD.index = 3
+GEMSTONE_INLAY_CFG_RANGE_FIELD.label = 2
+GEMSTONE_INLAY_CFG_RANGE_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_RANGE_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_RANGE_FIELD.type = 5
+GEMSTONE_INLAY_CFG_RANGE_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.name = "item_suc_id"
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_suc_id"
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.number = 5
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.index = 4
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.name = "item_suc_num"
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_suc_num"
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.number = 6
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.index = 5
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.name = "item_desc_id"
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_desc_id"
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.number = 7
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.index = 6
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.label = 2
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.default_value = 0
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.type = 5
+GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.cpp_type = 1
+
+GEMSTONE_INLAY_CFG.name = "gemstone_inlay_cfg"
+GEMSTONE_INLAY_CFG.full_name = ".ftcfg.gemstone_inlay_cfg"
+GEMSTONE_INLAY_CFG.nested_types = {}
+GEMSTONE_INLAY_CFG.enum_types = {}
+GEMSTONE_INLAY_CFG.fields = {GEMSTONE_INLAY_CFG_ITEM_ID_FIELD, GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD, GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD, GEMSTONE_INLAY_CFG_RANGE_FIELD, GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD, GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD, GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD}
+GEMSTONE_INLAY_CFG.is_extendable = false
+GEMSTONE_INLAY_CFG.extensions = {}
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.name = "items"
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gemstone_inlay_cfgs.items"
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.number = 1
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.index = 0
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.label = 3
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.has_default_value = false
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.default_value = {}
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.message_type = GEMSTONE_INLAY_CFG
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.type = 11
+GEMSTONE_INLAY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GEMSTONE_INLAY_CFGS.name = "gemstone_inlay_cfgs"
+GEMSTONE_INLAY_CFGS.full_name = ".ftcfg.gemstone_inlay_cfgs"
+GEMSTONE_INLAY_CFGS.nested_types = {}
+GEMSTONE_INLAY_CFGS.enum_types = {}
+GEMSTONE_INLAY_CFGS.fields = {GEMSTONE_INLAY_CFGS_ITEMS_FIELD}
+GEMSTONE_INLAY_CFGS.is_extendable = false
+GEMSTONE_INLAY_CFGS.extensions = {}
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.name = "gem_id"
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_id"
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.number = 1
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.index = 0
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.label = 2
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.has_default_value = false
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.default_value = 0
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.type = 5
+GEMSTONE_LIST_CFG_GEM_ID_FIELD.cpp_type = 1
+
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.name = "gem_nameid"
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_nameid"
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.number = 2
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.index = 1
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.label = 2
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.has_default_value = false
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.default_value = 0
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.type = 5
+GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.cpp_type = 1
+
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.name = "gem_picid"
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_picid"
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.number = 3
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.index = 2
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.label = 2
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.has_default_value = false
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.default_value = 0
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.type = 5
+GEMSTONE_LIST_CFG_GEM_PICID_FIELD.cpp_type = 1
+
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.name = "gem_knameid"
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_knameid"
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.number = 4
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.index = 3
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.label = 2
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.has_default_value = false
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.default_value = 0
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.type = 5
+GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.cpp_type = 1
+
+GEMSTONE_LIST_CFG.name = "gemstone_list_cfg"
+GEMSTONE_LIST_CFG.full_name = ".ftcfg.gemstone_list_cfg"
+GEMSTONE_LIST_CFG.nested_types = {}
+GEMSTONE_LIST_CFG.enum_types = {}
+GEMSTONE_LIST_CFG.fields = {GEMSTONE_LIST_CFG_GEM_ID_FIELD, GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD, GEMSTONE_LIST_CFG_GEM_PICID_FIELD, GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD}
+GEMSTONE_LIST_CFG.is_extendable = false
+GEMSTONE_LIST_CFG.extensions = {}
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.name = "items"
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gemstone_list_cfgs.items"
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.number = 1
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.index = 0
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.label = 3
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.has_default_value = false
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.default_value = {}
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.message_type = GEMSTONE_LIST_CFG
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.type = 11
+GEMSTONE_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GEMSTONE_LIST_CFGS.name = "gemstone_list_cfgs"
+GEMSTONE_LIST_CFGS.full_name = ".ftcfg.gemstone_list_cfgs"
+GEMSTONE_LIST_CFGS.nested_types = {}
+GEMSTONE_LIST_CFGS.enum_types = {}
+GEMSTONE_LIST_CFGS.fields = {GEMSTONE_LIST_CFGS_ITEMS_FIELD}
+GEMSTONE_LIST_CFGS.is_extendable = false
+GEMSTONE_LIST_CFGS.extensions = {}
+CHEST_DROP_CFG_ID_FIELD.name = "id"
+CHEST_DROP_CFG_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.id"
+CHEST_DROP_CFG_ID_FIELD.number = 1
+CHEST_DROP_CFG_ID_FIELD.index = 0
+CHEST_DROP_CFG_ID_FIELD.label = 2
+CHEST_DROP_CFG_ID_FIELD.has_default_value = false
+CHEST_DROP_CFG_ID_FIELD.default_value = 0
+CHEST_DROP_CFG_ID_FIELD.type = 5
+CHEST_DROP_CFG_ID_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG_TYPE_FIELD.name = "type"
+CHEST_DROP_CFG_TYPE_FIELD.full_name = ".ftcfg.chest_drop_cfg.type"
+CHEST_DROP_CFG_TYPE_FIELD.number = 2
+CHEST_DROP_CFG_TYPE_FIELD.index = 1
+CHEST_DROP_CFG_TYPE_FIELD.label = 2
+CHEST_DROP_CFG_TYPE_FIELD.has_default_value = false
+CHEST_DROP_CFG_TYPE_FIELD.default_value = nil
+CHEST_DROP_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECHESTTYPE
+CHEST_DROP_CFG_TYPE_FIELD.type = 14
+CHEST_DROP_CFG_TYPE_FIELD.cpp_type = 8
+
+CHEST_DROP_CFG_COUNT_FIELD.name = "count"
+CHEST_DROP_CFG_COUNT_FIELD.full_name = ".ftcfg.chest_drop_cfg.count"
+CHEST_DROP_CFG_COUNT_FIELD.number = 3
+CHEST_DROP_CFG_COUNT_FIELD.index = 2
+CHEST_DROP_CFG_COUNT_FIELD.label = 2
+CHEST_DROP_CFG_COUNT_FIELD.has_default_value = false
+CHEST_DROP_CFG_COUNT_FIELD.default_value = 0
+CHEST_DROP_CFG_COUNT_FIELD.type = 5
+CHEST_DROP_CFG_COUNT_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG_ITEM_ID_FIELD.name = "item_id"
+CHEST_DROP_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.item_id"
+CHEST_DROP_CFG_ITEM_ID_FIELD.number = 4
+CHEST_DROP_CFG_ITEM_ID_FIELD.index = 3
+CHEST_DROP_CFG_ITEM_ID_FIELD.label = 2
+CHEST_DROP_CFG_ITEM_ID_FIELD.has_default_value = false
+CHEST_DROP_CFG_ITEM_ID_FIELD.default_value = 0
+CHEST_DROP_CFG_ITEM_ID_FIELD.type = 5
+CHEST_DROP_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG_RES_ID_FIELD.name = "res_id"
+CHEST_DROP_CFG_RES_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.res_id"
+CHEST_DROP_CFG_RES_ID_FIELD.number = 5
+CHEST_DROP_CFG_RES_ID_FIELD.index = 4
+CHEST_DROP_CFG_RES_ID_FIELD.label = 2
+CHEST_DROP_CFG_RES_ID_FIELD.has_default_value = false
+CHEST_DROP_CFG_RES_ID_FIELD.default_value = 0
+CHEST_DROP_CFG_RES_ID_FIELD.type = 5
+CHEST_DROP_CFG_RES_ID_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG_RADIUS_FIELD.name = "radius"
+CHEST_DROP_CFG_RADIUS_FIELD.full_name = ".ftcfg.chest_drop_cfg.radius"
+CHEST_DROP_CFG_RADIUS_FIELD.number = 6
+CHEST_DROP_CFG_RADIUS_FIELD.index = 5
+CHEST_DROP_CFG_RADIUS_FIELD.label = 2
+CHEST_DROP_CFG_RADIUS_FIELD.has_default_value = false
+CHEST_DROP_CFG_RADIUS_FIELD.default_value = 0.0
+CHEST_DROP_CFG_RADIUS_FIELD.type = 2
+CHEST_DROP_CFG_RADIUS_FIELD.cpp_type = 6
+
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.name = "space_rows"
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.full_name = ".ftcfg.chest_drop_cfg.space_rows"
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.number = 7
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.index = 6
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.label = 2
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.has_default_value = false
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.default_value = 0.0
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.type = 2
+CHEST_DROP_CFG_SPACE_ROWS_FIELD.cpp_type = 6
+
+CHEST_DROP_CFG_SPACE_COLS_FIELD.name = "space_cols"
+CHEST_DROP_CFG_SPACE_COLS_FIELD.full_name = ".ftcfg.chest_drop_cfg.space_cols"
+CHEST_DROP_CFG_SPACE_COLS_FIELD.number = 8
+CHEST_DROP_CFG_SPACE_COLS_FIELD.index = 7
+CHEST_DROP_CFG_SPACE_COLS_FIELD.label = 2
+CHEST_DROP_CFG_SPACE_COLS_FIELD.has_default_value = false
+CHEST_DROP_CFG_SPACE_COLS_FIELD.default_value = 0.0
+CHEST_DROP_CFG_SPACE_COLS_FIELD.type = 2
+CHEST_DROP_CFG_SPACE_COLS_FIELD.cpp_type = 6
+
+CHEST_DROP_CFG_LIVE_TIME_FIELD.name = "live_time"
+CHEST_DROP_CFG_LIVE_TIME_FIELD.full_name = ".ftcfg.chest_drop_cfg.live_time"
+CHEST_DROP_CFG_LIVE_TIME_FIELD.number = 9
+CHEST_DROP_CFG_LIVE_TIME_FIELD.index = 8
+CHEST_DROP_CFG_LIVE_TIME_FIELD.label = 2
+CHEST_DROP_CFG_LIVE_TIME_FIELD.has_default_value = false
+CHEST_DROP_CFG_LIVE_TIME_FIELD.default_value = 0
+CHEST_DROP_CFG_LIVE_TIME_FIELD.type = 5
+CHEST_DROP_CFG_LIVE_TIME_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.name = "refresh_time"
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.full_name = ".ftcfg.chest_drop_cfg.refresh_time"
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.number = 10
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.index = 9
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.label = 2
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.has_default_value = false
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.default_value = 0
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.type = 5
+CHEST_DROP_CFG_REFRESH_TIME_FIELD.cpp_type = 1
+
+CHEST_DROP_CFG.name = "chest_drop_cfg"
+CHEST_DROP_CFG.full_name = ".ftcfg.chest_drop_cfg"
+CHEST_DROP_CFG.nested_types = {}
+CHEST_DROP_CFG.enum_types = {}
+CHEST_DROP_CFG.fields = {CHEST_DROP_CFG_ID_FIELD, CHEST_DROP_CFG_TYPE_FIELD, CHEST_DROP_CFG_COUNT_FIELD, CHEST_DROP_CFG_ITEM_ID_FIELD, CHEST_DROP_CFG_RES_ID_FIELD, CHEST_DROP_CFG_RADIUS_FIELD, CHEST_DROP_CFG_SPACE_ROWS_FIELD, CHEST_DROP_CFG_SPACE_COLS_FIELD, CHEST_DROP_CFG_LIVE_TIME_FIELD, CHEST_DROP_CFG_REFRESH_TIME_FIELD}
+CHEST_DROP_CFG.is_extendable = false
+CHEST_DROP_CFG.extensions = {}
+CHEST_DROP_CFGS_ITEMS_FIELD.name = "items"
+CHEST_DROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.chest_drop_cfgs.items"
+CHEST_DROP_CFGS_ITEMS_FIELD.number = 1
+CHEST_DROP_CFGS_ITEMS_FIELD.index = 0
+CHEST_DROP_CFGS_ITEMS_FIELD.label = 3
+CHEST_DROP_CFGS_ITEMS_FIELD.has_default_value = false
+CHEST_DROP_CFGS_ITEMS_FIELD.default_value = {}
+CHEST_DROP_CFGS_ITEMS_FIELD.message_type = CHEST_DROP_CFG
+CHEST_DROP_CFGS_ITEMS_FIELD.type = 11
+CHEST_DROP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CHEST_DROP_CFGS.name = "chest_drop_cfgs"
+CHEST_DROP_CFGS.full_name = ".ftcfg.chest_drop_cfgs"
+CHEST_DROP_CFGS.nested_types = {}
+CHEST_DROP_CFGS.enum_types = {}
+CHEST_DROP_CFGS.fields = {CHEST_DROP_CFGS_ITEMS_FIELD}
+CHEST_DROP_CFGS.is_extendable = false
+CHEST_DROP_CFGS.extensions = {}
+MINIMAP_CFG_ID_FIELD.name = "id"
+MINIMAP_CFG_ID_FIELD.full_name = ".ftcfg.minimap_cfg.id"
+MINIMAP_CFG_ID_FIELD.number = 1
+MINIMAP_CFG_ID_FIELD.index = 0
+MINIMAP_CFG_ID_FIELD.label = 2
+MINIMAP_CFG_ID_FIELD.has_default_value = false
+MINIMAP_CFG_ID_FIELD.default_value = 0
+MINIMAP_CFG_ID_FIELD.type = 5
+MINIMAP_CFG_ID_FIELD.cpp_type = 1
+
+MINIMAP_CFG_POS_X_FIELD.name = "pos_x"
+MINIMAP_CFG_POS_X_FIELD.full_name = ".ftcfg.minimap_cfg.pos_x"
+MINIMAP_CFG_POS_X_FIELD.number = 2
+MINIMAP_CFG_POS_X_FIELD.index = 1
+MINIMAP_CFG_POS_X_FIELD.label = 2
+MINIMAP_CFG_POS_X_FIELD.has_default_value = false
+MINIMAP_CFG_POS_X_FIELD.default_value = 0.0
+MINIMAP_CFG_POS_X_FIELD.type = 2
+MINIMAP_CFG_POS_X_FIELD.cpp_type = 6
+
+MINIMAP_CFG_POS_Z_FIELD.name = "pos_z"
+MINIMAP_CFG_POS_Z_FIELD.full_name = ".ftcfg.minimap_cfg.pos_z"
+MINIMAP_CFG_POS_Z_FIELD.number = 3
+MINIMAP_CFG_POS_Z_FIELD.index = 2
+MINIMAP_CFG_POS_Z_FIELD.label = 2
+MINIMAP_CFG_POS_Z_FIELD.has_default_value = false
+MINIMAP_CFG_POS_Z_FIELD.default_value = 0.0
+MINIMAP_CFG_POS_Z_FIELD.type = 2
+MINIMAP_CFG_POS_Z_FIELD.cpp_type = 6
+
+MINIMAP_CFG_WIDTH_FIELD.name = "width"
+MINIMAP_CFG_WIDTH_FIELD.full_name = ".ftcfg.minimap_cfg.width"
+MINIMAP_CFG_WIDTH_FIELD.number = 4
+MINIMAP_CFG_WIDTH_FIELD.index = 3
+MINIMAP_CFG_WIDTH_FIELD.label = 2
+MINIMAP_CFG_WIDTH_FIELD.has_default_value = false
+MINIMAP_CFG_WIDTH_FIELD.default_value = 0.0
+MINIMAP_CFG_WIDTH_FIELD.type = 2
+MINIMAP_CFG_WIDTH_FIELD.cpp_type = 6
+
+MINIMAP_CFG_HEIGHT_FIELD.name = "height"
+MINIMAP_CFG_HEIGHT_FIELD.full_name = ".ftcfg.minimap_cfg.height"
+MINIMAP_CFG_HEIGHT_FIELD.number = 5
+MINIMAP_CFG_HEIGHT_FIELD.index = 4
+MINIMAP_CFG_HEIGHT_FIELD.label = 2
+MINIMAP_CFG_HEIGHT_FIELD.has_default_value = false
+MINIMAP_CFG_HEIGHT_FIELD.default_value = 0.0
+MINIMAP_CFG_HEIGHT_FIELD.type = 2
+MINIMAP_CFG_HEIGHT_FIELD.cpp_type = 6
+
+MINIMAP_CFG_TEX_WIDTH_FIELD.name = "tex_width"
+MINIMAP_CFG_TEX_WIDTH_FIELD.full_name = ".ftcfg.minimap_cfg.tex_width"
+MINIMAP_CFG_TEX_WIDTH_FIELD.number = 6
+MINIMAP_CFG_TEX_WIDTH_FIELD.index = 5
+MINIMAP_CFG_TEX_WIDTH_FIELD.label = 2
+MINIMAP_CFG_TEX_WIDTH_FIELD.has_default_value = false
+MINIMAP_CFG_TEX_WIDTH_FIELD.default_value = 0.0
+MINIMAP_CFG_TEX_WIDTH_FIELD.type = 2
+MINIMAP_CFG_TEX_WIDTH_FIELD.cpp_type = 6
+
+MINIMAP_CFG_TEX_HEIGHT_FIELD.name = "tex_height"
+MINIMAP_CFG_TEX_HEIGHT_FIELD.full_name = ".ftcfg.minimap_cfg.tex_height"
+MINIMAP_CFG_TEX_HEIGHT_FIELD.number = 7
+MINIMAP_CFG_TEX_HEIGHT_FIELD.index = 6
+MINIMAP_CFG_TEX_HEIGHT_FIELD.label = 2
+MINIMAP_CFG_TEX_HEIGHT_FIELD.has_default_value = false
+MINIMAP_CFG_TEX_HEIGHT_FIELD.default_value = 0.0
+MINIMAP_CFG_TEX_HEIGHT_FIELD.type = 2
+MINIMAP_CFG_TEX_HEIGHT_FIELD.cpp_type = 6
+
+MINIMAP_CFG_RES_ID_FIELD.name = "res_id"
+MINIMAP_CFG_RES_ID_FIELD.full_name = ".ftcfg.minimap_cfg.res_id"
+MINIMAP_CFG_RES_ID_FIELD.number = 8
+MINIMAP_CFG_RES_ID_FIELD.index = 7
+MINIMAP_CFG_RES_ID_FIELD.label = 2
+MINIMAP_CFG_RES_ID_FIELD.has_default_value = false
+MINIMAP_CFG_RES_ID_FIELD.default_value = 0
+MINIMAP_CFG_RES_ID_FIELD.type = 5
+MINIMAP_CFG_RES_ID_FIELD.cpp_type = 1
+
+MINIMAP_CFG_ROTATION_FIELD.name = "rotation"
+MINIMAP_CFG_ROTATION_FIELD.full_name = ".ftcfg.minimap_cfg.rotation"
+MINIMAP_CFG_ROTATION_FIELD.number = 9
+MINIMAP_CFG_ROTATION_FIELD.index = 8
+MINIMAP_CFG_ROTATION_FIELD.label = 2
+MINIMAP_CFG_ROTATION_FIELD.has_default_value = false
+MINIMAP_CFG_ROTATION_FIELD.default_value = 0.0
+MINIMAP_CFG_ROTATION_FIELD.type = 2
+MINIMAP_CFG_ROTATION_FIELD.cpp_type = 6
+
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.name = "minimap_radius"
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.full_name = ".ftcfg.minimap_cfg.minimap_radius"
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.number = 10
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.index = 9
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.label = 2
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.has_default_value = false
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.default_value = 0.0
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.type = 2
+MINIMAP_CFG_MINIMAP_RADIUS_FIELD.cpp_type = 6
+
+MINIMAP_CFG.name = "minimap_cfg"
+MINIMAP_CFG.full_name = ".ftcfg.minimap_cfg"
+MINIMAP_CFG.nested_types = {}
+MINIMAP_CFG.enum_types = {}
+MINIMAP_CFG.fields = {MINIMAP_CFG_ID_FIELD, MINIMAP_CFG_POS_X_FIELD, MINIMAP_CFG_POS_Z_FIELD, MINIMAP_CFG_WIDTH_FIELD, MINIMAP_CFG_HEIGHT_FIELD, MINIMAP_CFG_TEX_WIDTH_FIELD, MINIMAP_CFG_TEX_HEIGHT_FIELD, MINIMAP_CFG_RES_ID_FIELD, MINIMAP_CFG_ROTATION_FIELD, MINIMAP_CFG_MINIMAP_RADIUS_FIELD}
+MINIMAP_CFG.is_extendable = false
+MINIMAP_CFG.extensions = {}
+MINIMAP_CFGS_ITEMS_FIELD.name = "items"
+MINIMAP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.minimap_cfgs.items"
+MINIMAP_CFGS_ITEMS_FIELD.number = 1
+MINIMAP_CFGS_ITEMS_FIELD.index = 0
+MINIMAP_CFGS_ITEMS_FIELD.label = 3
+MINIMAP_CFGS_ITEMS_FIELD.has_default_value = false
+MINIMAP_CFGS_ITEMS_FIELD.default_value = {}
+MINIMAP_CFGS_ITEMS_FIELD.message_type = MINIMAP_CFG
+MINIMAP_CFGS_ITEMS_FIELD.type = 11
+MINIMAP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MINIMAP_CFGS.name = "minimap_cfgs"
+MINIMAP_CFGS.full_name = ".ftcfg.minimap_cfgs"
+MINIMAP_CFGS.nested_types = {}
+MINIMAP_CFGS.enum_types = {}
+MINIMAP_CFGS.fields = {MINIMAP_CFGS_ITEMS_FIELD}
+MINIMAP_CFGS.is_extendable = false
+MINIMAP_CFGS.extensions = {}
+TREASURE_ROOMS_CFG_GROUPID_FIELD.name = "groupid"
+TREASURE_ROOMS_CFG_GROUPID_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.groupid"
+TREASURE_ROOMS_CFG_GROUPID_FIELD.number = 1
+TREASURE_ROOMS_CFG_GROUPID_FIELD.index = 0
+TREASURE_ROOMS_CFG_GROUPID_FIELD.label = 2
+TREASURE_ROOMS_CFG_GROUPID_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_GROUPID_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_GROUPID_FIELD.type = 5
+TREASURE_ROOMS_CFG_GROUPID_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.name = "area_id"
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.area_id"
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.number = 2
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.index = 1
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.label = 2
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.type = 5
+TREASURE_ROOMS_CFG_AREA_ID_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.red_num"
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.number = 3
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.index = 2
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.label = 2
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.type = 5
+TREASURE_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.blue_num"
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.number = 4
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.index = 3
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
+TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.min_level"
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.number = 5
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.index = 4
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
+TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.max_level"
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.number = 6
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.index = 5
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
+TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
+
+TREASURE_ROOMS_CFG.name = "treasure_rooms_cfg"
+TREASURE_ROOMS_CFG.full_name = ".ftcfg.treasure_rooms_cfg"
+TREASURE_ROOMS_CFG.nested_types = {}
+TREASURE_ROOMS_CFG.enum_types = {}
+TREASURE_ROOMS_CFG.fields = {TREASURE_ROOMS_CFG_GROUPID_FIELD, TREASURE_ROOMS_CFG_AREA_ID_FIELD, TREASURE_ROOMS_CFG_RED_NUM_FIELD, TREASURE_ROOMS_CFG_BLUE_NUM_FIELD, TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD, TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD}
+TREASURE_ROOMS_CFG.is_extendable = false
+TREASURE_ROOMS_CFG.extensions = {}
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.name = "items"
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.treasure_rooms_cfgs.items"
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.number = 1
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.index = 0
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.label = 3
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.message_type = TREASURE_ROOMS_CFG
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.type = 11
+TREASURE_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TREASURE_ROOMS_CFGS.name = "treasure_rooms_cfgs"
+TREASURE_ROOMS_CFGS.full_name = ".ftcfg.treasure_rooms_cfgs"
+TREASURE_ROOMS_CFGS.nested_types = {}
+TREASURE_ROOMS_CFGS.enum_types = {}
+TREASURE_ROOMS_CFGS.fields = {TREASURE_ROOMS_CFGS_ITEMS_FIELD}
+TREASURE_ROOMS_CFGS.is_extendable = false
+TREASURE_ROOMS_CFGS.extensions = {}
+CRUSADE_BASE_CFG_LEVEL_FIELD.name = "level"
+CRUSADE_BASE_CFG_LEVEL_FIELD.full_name = ".ftcfg.crusade_base_cfg.level"
+CRUSADE_BASE_CFG_LEVEL_FIELD.number = 1
+CRUSADE_BASE_CFG_LEVEL_FIELD.index = 0
+CRUSADE_BASE_CFG_LEVEL_FIELD.label = 2
+CRUSADE_BASE_CFG_LEVEL_FIELD.has_default_value = false
+CRUSADE_BASE_CFG_LEVEL_FIELD.default_value = 0
+CRUSADE_BASE_CFG_LEVEL_FIELD.type = 5
+CRUSADE_BASE_CFG_LEVEL_FIELD.cpp_type = 1
+
+CRUSADE_BASE_CFG_DESC_FIELD.name = "desc"
+CRUSADE_BASE_CFG_DESC_FIELD.full_name = ".ftcfg.crusade_base_cfg.desc"
+CRUSADE_BASE_CFG_DESC_FIELD.number = 2
+CRUSADE_BASE_CFG_DESC_FIELD.index = 1
+CRUSADE_BASE_CFG_DESC_FIELD.label = 2
+CRUSADE_BASE_CFG_DESC_FIELD.has_default_value = false
+CRUSADE_BASE_CFG_DESC_FIELD.default_value = ""
+CRUSADE_BASE_CFG_DESC_FIELD.type = 9
+CRUSADE_BASE_CFG_DESC_FIELD.cpp_type = 9
+
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.name = "scene_id"
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.scene_id"
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.number = 3
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.index = 2
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.label = 2
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.has_default_value = false
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.default_value = 0
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.type = 5
+CRUSADE_BASE_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+CRUSADE_BASE_CFG_NPC_ID_FIELD.name = "npc_id"
+CRUSADE_BASE_CFG_NPC_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.npc_id"
+CRUSADE_BASE_CFG_NPC_ID_FIELD.number = 4
+CRUSADE_BASE_CFG_NPC_ID_FIELD.index = 3
+CRUSADE_BASE_CFG_NPC_ID_FIELD.label = 3
+CRUSADE_BASE_CFG_NPC_ID_FIELD.has_default_value = false
+CRUSADE_BASE_CFG_NPC_ID_FIELD.default_value = {}
+CRUSADE_BASE_CFG_NPC_ID_FIELD.type = 5
+CRUSADE_BASE_CFG_NPC_ID_FIELD.cpp_type = 1
+
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.name = "group_id"
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.group_id"
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.number = 5
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.index = 4
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.label = 2
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.has_default_value = false
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.default_value = 0
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.type = 5
+CRUSADE_BASE_CFG_GROUP_ID_FIELD.cpp_type = 1
+
+CRUSADE_BASE_CFG.name = "crusade_base_cfg"
+CRUSADE_BASE_CFG.full_name = ".ftcfg.crusade_base_cfg"
+CRUSADE_BASE_CFG.nested_types = {}
+CRUSADE_BASE_CFG.enum_types = {}
+CRUSADE_BASE_CFG.fields = {CRUSADE_BASE_CFG_LEVEL_FIELD, CRUSADE_BASE_CFG_DESC_FIELD, CRUSADE_BASE_CFG_SCENE_ID_FIELD, CRUSADE_BASE_CFG_NPC_ID_FIELD, CRUSADE_BASE_CFG_GROUP_ID_FIELD}
+CRUSADE_BASE_CFG.is_extendable = false
+CRUSADE_BASE_CFG.extensions = {}
+CRUSADE_BASE_CFGS_ITEMS_FIELD.name = "items"
+CRUSADE_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.crusade_base_cfgs.items"
+CRUSADE_BASE_CFGS_ITEMS_FIELD.number = 1
+CRUSADE_BASE_CFGS_ITEMS_FIELD.index = 0
+CRUSADE_BASE_CFGS_ITEMS_FIELD.label = 3
+CRUSADE_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+CRUSADE_BASE_CFGS_ITEMS_FIELD.default_value = {}
+CRUSADE_BASE_CFGS_ITEMS_FIELD.message_type = CRUSADE_BASE_CFG
+CRUSADE_BASE_CFGS_ITEMS_FIELD.type = 11
+CRUSADE_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CRUSADE_BASE_CFGS.name = "crusade_base_cfgs"
+CRUSADE_BASE_CFGS.full_name = ".ftcfg.crusade_base_cfgs"
+CRUSADE_BASE_CFGS.nested_types = {}
+CRUSADE_BASE_CFGS.enum_types = {}
+CRUSADE_BASE_CFGS.fields = {CRUSADE_BASE_CFGS_ITEMS_FIELD}
+CRUSADE_BASE_CFGS.is_extendable = false
+CRUSADE_BASE_CFGS.extensions = {}
+CRUSADE_DUNGON_CFG_NPCID_FIELD.name = "npcid"
+CRUSADE_DUNGON_CFG_NPCID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.npcid"
+CRUSADE_DUNGON_CFG_NPCID_FIELD.number = 1
+CRUSADE_DUNGON_CFG_NPCID_FIELD.index = 0
+CRUSADE_DUNGON_CFG_NPCID_FIELD.label = 2
+CRUSADE_DUNGON_CFG_NPCID_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_NPCID_FIELD.default_value = 0
+CRUSADE_DUNGON_CFG_NPCID_FIELD.type = 5
+CRUSADE_DUNGON_CFG_NPCID_FIELD.cpp_type = 1
+
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.name = "map_id"
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.map_id"
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.number = 2
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.index = 1
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.label = 3
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.default_value = {}
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.type = 5
+CRUSADE_DUNGON_CFG_MAP_ID_FIELD.cpp_type = 1
+
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.name = "npc_stagetype"
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.npc_stagetype"
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.number = 3
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.index = 2
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.label = 2
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.default_value = 0
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.type = 5
+CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.cpp_type = 1
+
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.name = "reward_id"
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.reward_id"
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.number = 4
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.index = 3
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.label = 2
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.default_value = 0
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.type = 5
+CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.name = "birth_x"
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_x"
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.number = 5
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.index = 4
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.label = 3
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.default_value = {}
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.type = 2
+CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.cpp_type = 6
+
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.name = "birth_y"
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_y"
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.number = 6
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.index = 5
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.label = 3
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.default_value = {}
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.type = 2
+CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.cpp_type = 6
+
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.name = "birth_z"
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_z"
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.number = 7
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.index = 6
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.label = 3
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.default_value = {}
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.type = 2
+CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.cpp_type = 6
+
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.name = "difficult"
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.difficult"
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.number = 8
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.index = 7
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.label = 2
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.default_value = 0
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.type = 5
+CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.cpp_type = 1
+
+CRUSADE_DUNGON_CFG.name = "crusade_dungon_cfg"
+CRUSADE_DUNGON_CFG.full_name = ".ftcfg.crusade_dungon_cfg"
+CRUSADE_DUNGON_CFG.nested_types = {}
+CRUSADE_DUNGON_CFG.enum_types = {}
+CRUSADE_DUNGON_CFG.fields = {CRUSADE_DUNGON_CFG_NPCID_FIELD, CRUSADE_DUNGON_CFG_MAP_ID_FIELD, CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD, CRUSADE_DUNGON_CFG_REWARD_ID_FIELD, CRUSADE_DUNGON_CFG_BIRTH_X_FIELD, CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD, CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD, CRUSADE_DUNGON_CFG_DIFFICULT_FIELD}
+CRUSADE_DUNGON_CFG.is_extendable = false
+CRUSADE_DUNGON_CFG.extensions = {}
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.name = "items"
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.full_name = ".ftcfg.crusade_dungon_cfgs.items"
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.number = 1
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.index = 0
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.label = 3
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.has_default_value = false
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.default_value = {}
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.message_type = CRUSADE_DUNGON_CFG
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.type = 11
+CRUSADE_DUNGON_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CRUSADE_DUNGON_CFGS.name = "crusade_dungon_cfgs"
+CRUSADE_DUNGON_CFGS.full_name = ".ftcfg.crusade_dungon_cfgs"
+CRUSADE_DUNGON_CFGS.nested_types = {}
+CRUSADE_DUNGON_CFGS.enum_types = {}
+CRUSADE_DUNGON_CFGS.fields = {CRUSADE_DUNGON_CFGS_ITEMS_FIELD}
+CRUSADE_DUNGON_CFGS.is_extendable = false
+CRUSADE_DUNGON_CFGS.extensions = {}
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.name = "prop_type"
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.strength_convert_cfg.prop_type"
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.number = 1
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.index = 0
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.label = 2
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.has_default_value = false
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.default_value = nil
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.type = 14
+STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.name = "factor"
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.full_name = ".ftcfg.strength_convert_cfg.factor"
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.number = 2
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.index = 1
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.label = 2
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.has_default_value = false
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.default_value = 0.0
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.type = 1
+STRENGTH_CONVERT_CFG_FACTOR_FIELD.cpp_type = 5
+
+STRENGTH_CONVERT_CFG.name = "strength_convert_cfg"
+STRENGTH_CONVERT_CFG.full_name = ".ftcfg.strength_convert_cfg"
+STRENGTH_CONVERT_CFG.nested_types = {}
+STRENGTH_CONVERT_CFG.enum_types = {}
+STRENGTH_CONVERT_CFG.fields = {STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD, STRENGTH_CONVERT_CFG_FACTOR_FIELD}
+STRENGTH_CONVERT_CFG.is_extendable = false
+STRENGTH_CONVERT_CFG.extensions = {}
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.name = "items"
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.strength_convert_cfgs.items"
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.number = 1
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.index = 0
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.label = 3
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.has_default_value = false
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.default_value = {}
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.message_type = STRENGTH_CONVERT_CFG
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.type = 11
+STRENGTH_CONVERT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+STRENGTH_CONVERT_CFGS.name = "strength_convert_cfgs"
+STRENGTH_CONVERT_CFGS.full_name = ".ftcfg.strength_convert_cfgs"
+STRENGTH_CONVERT_CFGS.nested_types = {}
+STRENGTH_CONVERT_CFGS.enum_types = {}
+STRENGTH_CONVERT_CFGS.fields = {STRENGTH_CONVERT_CFGS_ITEMS_FIELD}
+STRENGTH_CONVERT_CFGS.is_extendable = false
+STRENGTH_CONVERT_CFGS.extensions = {}
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.name = "id"
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.id"
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.number = 1
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.index = 0
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.label = 2
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.has_default_value = false
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.default_value = 0
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.type = 5
+SKILL_SUMMONED_NPC_CFG_ID_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.name = "desc"
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.desc"
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.number = 2
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.index = 1
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.label = 2
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.has_default_value = false
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.default_value = ""
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.type = 9
+SKILL_SUMMONED_NPC_CFG_DESC_FIELD.cpp_type = 9
+
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.name = "npc_id"
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.npc_id"
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.number = 3
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.index = 2
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.label = 2
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.has_default_value = false
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.default_value = 0
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.type = 5
+SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_NPC_CFG.name = "skill_summoned_npc_cfg"
+SKILL_SUMMONED_NPC_CFG.full_name = ".ftcfg.skill_summoned_npc_cfg"
+SKILL_SUMMONED_NPC_CFG.nested_types = {}
+SKILL_SUMMONED_NPC_CFG.enum_types = {}
+SKILL_SUMMONED_NPC_CFG.fields = {SKILL_SUMMONED_NPC_CFG_ID_FIELD, SKILL_SUMMONED_NPC_CFG_DESC_FIELD, SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD}
+SKILL_SUMMONED_NPC_CFG.is_extendable = false
+SKILL_SUMMONED_NPC_CFG.extensions = {}
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.name = "items"
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfgs.items"
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.number = 1
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.index = 0
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.label = 3
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.has_default_value = false
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.default_value = {}
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.message_type = SKILL_SUMMONED_NPC_CFG
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.type = 11
+SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SKILL_SUMMONED_NPC_CFGS.name = "skill_summoned_npc_cfgs"
+SKILL_SUMMONED_NPC_CFGS.full_name = ".ftcfg.skill_summoned_npc_cfgs"
+SKILL_SUMMONED_NPC_CFGS.nested_types = {}
+SKILL_SUMMONED_NPC_CFGS.enum_types = {}
+SKILL_SUMMONED_NPC_CFGS.fields = {SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD}
+SKILL_SUMMONED_NPC_CFGS.is_extendable = false
+SKILL_SUMMONED_NPC_CFGS.extensions = {}
+SKILL_SUMMONED_CFG_ID_FIELD.name = "id"
+SKILL_SUMMONED_CFG_ID_FIELD.full_name = ".ftcfg.skill_summoned_cfg.id"
+SKILL_SUMMONED_CFG_ID_FIELD.number = 1
+SKILL_SUMMONED_CFG_ID_FIELD.index = 0
+SKILL_SUMMONED_CFG_ID_FIELD.label = 2
+SKILL_SUMMONED_CFG_ID_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_ID_FIELD.default_value = 0
+SKILL_SUMMONED_CFG_ID_FIELD.type = 5
+SKILL_SUMMONED_CFG_ID_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_CFG_DESC_FIELD.name = "desc"
+SKILL_SUMMONED_CFG_DESC_FIELD.full_name = ".ftcfg.skill_summoned_cfg.desc"
+SKILL_SUMMONED_CFG_DESC_FIELD.number = 2
+SKILL_SUMMONED_CFG_DESC_FIELD.index = 1
+SKILL_SUMMONED_CFG_DESC_FIELD.label = 2
+SKILL_SUMMONED_CFG_DESC_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_DESC_FIELD.default_value = ""
+SKILL_SUMMONED_CFG_DESC_FIELD.type = 9
+SKILL_SUMMONED_CFG_DESC_FIELD.cpp_type = 9
+
+SKILL_SUMMONED_CFG_RING_FIELD.name = "ring"
+SKILL_SUMMONED_CFG_RING_FIELD.full_name = ".ftcfg.skill_summoned_cfg.ring"
+SKILL_SUMMONED_CFG_RING_FIELD.number = 3
+SKILL_SUMMONED_CFG_RING_FIELD.index = 2
+SKILL_SUMMONED_CFG_RING_FIELD.label = 2
+SKILL_SUMMONED_CFG_RING_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_RING_FIELD.default_value = 0
+SKILL_SUMMONED_CFG_RING_FIELD.type = 5
+SKILL_SUMMONED_CFG_RING_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.name = "exist_time"
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.exist_time"
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.number = 4
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.index = 3
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.label = 2
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.default_value = 0
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.type = 5
+SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_CFG_SPEED_FIELD.name = "speed"
+SKILL_SUMMONED_CFG_SPEED_FIELD.full_name = ".ftcfg.skill_summoned_cfg.speed"
+SKILL_SUMMONED_CFG_SPEED_FIELD.number = 5
+SKILL_SUMMONED_CFG_SPEED_FIELD.index = 4
+SKILL_SUMMONED_CFG_SPEED_FIELD.label = 2
+SKILL_SUMMONED_CFG_SPEED_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_SPEED_FIELD.default_value = 0.0
+SKILL_SUMMONED_CFG_SPEED_FIELD.type = 2
+SKILL_SUMMONED_CFG_SPEED_FIELD.cpp_type = 6
+
+SKILL_SUMMONED_CFG_EFF_START_FIELD.name = "eff_start"
+SKILL_SUMMONED_CFG_EFF_START_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_start"
+SKILL_SUMMONED_CFG_EFF_START_FIELD.number = 6
+SKILL_SUMMONED_CFG_EFF_START_FIELD.index = 5
+SKILL_SUMMONED_CFG_EFF_START_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_START_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_START_FIELD.default_value = ""
+SKILL_SUMMONED_CFG_EFF_START_FIELD.type = 9
+SKILL_SUMMONED_CFG_EFF_START_FIELD.cpp_type = 9
+
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.name = "eff_start_time"
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_start_time"
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.number = 7
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.index = 6
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.default_value = 0
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.type = 5
+SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.name = "eff_keep"
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_keep"
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.number = 8
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.index = 7
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.default_value = ""
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.type = 9
+SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.cpp_type = 9
+
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.name = "eff_destroy"
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy"
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.number = 9
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.index = 8
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.default_value = ""
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.type = 9
+SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.cpp_type = 9
+
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.name = "eff_destroy_time"
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy_time"
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.number = 10
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.index = 9
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.default_value = 0
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.type = 5
+SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.cpp_type = 1
+
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.name = "eff_keep_height"
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_keep_height"
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.number = 11
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.index = 10
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.default_value = 0.0
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.type = 2
+SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.cpp_type = 6
+
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.name = "eff_destroy_height"
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy_height"
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.number = 12
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.index = 11
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.label = 2
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.has_default_value = false
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.default_value = 0.0
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.type = 2
+SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.cpp_type = 6
+
+SKILL_SUMMONED_CFG.name = "skill_summoned_cfg"
+SKILL_SUMMONED_CFG.full_name = ".ftcfg.skill_summoned_cfg"
+SKILL_SUMMONED_CFG.nested_types = {}
+SKILL_SUMMONED_CFG.enum_types = {}
+SKILL_SUMMONED_CFG.fields = {SKILL_SUMMONED_CFG_ID_FIELD, SKILL_SUMMONED_CFG_DESC_FIELD, SKILL_SUMMONED_CFG_RING_FIELD, SKILL_SUMMONED_CFG_EXIST_TIME_FIELD, SKILL_SUMMONED_CFG_SPEED_FIELD, SKILL_SUMMONED_CFG_EFF_START_FIELD, SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD, SKILL_SUMMONED_CFG_EFF_KEEP_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD, SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD}
+SKILL_SUMMONED_CFG.is_extendable = false
+SKILL_SUMMONED_CFG.extensions = {}
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.name = "items"
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_summoned_cfgs.items"
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.number = 1
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.index = 0
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.label = 3
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.has_default_value = false
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.default_value = {}
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.message_type = SKILL_SUMMONED_CFG
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.type = 11
+SKILL_SUMMONED_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SKILL_SUMMONED_CFGS.name = "skill_summoned_cfgs"
+SKILL_SUMMONED_CFGS.full_name = ".ftcfg.skill_summoned_cfgs"
+SKILL_SUMMONED_CFGS.nested_types = {}
+SKILL_SUMMONED_CFGS.enum_types = {}
+SKILL_SUMMONED_CFGS.fields = {SKILL_SUMMONED_CFGS_ITEMS_FIELD}
+SKILL_SUMMONED_CFGS.is_extendable = false
+SKILL_SUMMONED_CFGS.extensions = {}
+CLUE_CFG_CLUE_ID_FIELD.name = "clue_id"
+CLUE_CFG_CLUE_ID_FIELD.full_name = ".ftcfg.clue_cfg.clue_id"
+CLUE_CFG_CLUE_ID_FIELD.number = 1
+CLUE_CFG_CLUE_ID_FIELD.index = 0
+CLUE_CFG_CLUE_ID_FIELD.label = 2
+CLUE_CFG_CLUE_ID_FIELD.has_default_value = false
+CLUE_CFG_CLUE_ID_FIELD.default_value = 0
+CLUE_CFG_CLUE_ID_FIELD.type = 5
+CLUE_CFG_CLUE_ID_FIELD.cpp_type = 1
+
+CLUE_CFG_MAP_ID_FIELD.name = "map_id"
+CLUE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.clue_cfg.map_id"
+CLUE_CFG_MAP_ID_FIELD.number = 2
+CLUE_CFG_MAP_ID_FIELD.index = 1
+CLUE_CFG_MAP_ID_FIELD.label = 2
+CLUE_CFG_MAP_ID_FIELD.has_default_value = false
+CLUE_CFG_MAP_ID_FIELD.default_value = 0
+CLUE_CFG_MAP_ID_FIELD.type = 5
+CLUE_CFG_MAP_ID_FIELD.cpp_type = 1
+
+CLUE_CFG_SCENE_ID_FIELD.name = "scene_id"
+CLUE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.clue_cfg.scene_id"
+CLUE_CFG_SCENE_ID_FIELD.number = 3
+CLUE_CFG_SCENE_ID_FIELD.index = 2
+CLUE_CFG_SCENE_ID_FIELD.label = 2
+CLUE_CFG_SCENE_ID_FIELD.has_default_value = false
+CLUE_CFG_SCENE_ID_FIELD.default_value = 0
+CLUE_CFG_SCENE_ID_FIELD.type = 5
+CLUE_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+CLUE_CFG_POS_FIELD.name = "pos"
+CLUE_CFG_POS_FIELD.full_name = ".ftcfg.clue_cfg.pos"
+CLUE_CFG_POS_FIELD.number = 4
+CLUE_CFG_POS_FIELD.index = 3
+CLUE_CFG_POS_FIELD.label = 3
+CLUE_CFG_POS_FIELD.has_default_value = false
+CLUE_CFG_POS_FIELD.default_value = {}
+CLUE_CFG_POS_FIELD.type = 2
+CLUE_CFG_POS_FIELD.cpp_type = 6
+
+CLUE_CFG_DESC_FIELD.name = "desc"
+CLUE_CFG_DESC_FIELD.full_name = ".ftcfg.clue_cfg.desc"
+CLUE_CFG_DESC_FIELD.number = 5
+CLUE_CFG_DESC_FIELD.index = 4
+CLUE_CFG_DESC_FIELD.label = 2
+CLUE_CFG_DESC_FIELD.has_default_value = false
+CLUE_CFG_DESC_FIELD.default_value = ""
+CLUE_CFG_DESC_FIELD.type = 9
+CLUE_CFG_DESC_FIELD.cpp_type = 9
+
+CLUE_CFG_BOXES_POS_X_FIELD.name = "boxes_pos_x"
+CLUE_CFG_BOXES_POS_X_FIELD.full_name = ".ftcfg.clue_cfg.boxes_pos_x"
+CLUE_CFG_BOXES_POS_X_FIELD.number = 6
+CLUE_CFG_BOXES_POS_X_FIELD.index = 5
+CLUE_CFG_BOXES_POS_X_FIELD.label = 3
+CLUE_CFG_BOXES_POS_X_FIELD.has_default_value = false
+CLUE_CFG_BOXES_POS_X_FIELD.default_value = {}
+CLUE_CFG_BOXES_POS_X_FIELD.type = 2
+CLUE_CFG_BOXES_POS_X_FIELD.cpp_type = 6
+
+CLUE_CFG_BOXES_POS_Z_FIELD.name = "boxes_pos_z"
+CLUE_CFG_BOXES_POS_Z_FIELD.full_name = ".ftcfg.clue_cfg.boxes_pos_z"
+CLUE_CFG_BOXES_POS_Z_FIELD.number = 7
+CLUE_CFG_BOXES_POS_Z_FIELD.index = 6
+CLUE_CFG_BOXES_POS_Z_FIELD.label = 3
+CLUE_CFG_BOXES_POS_Z_FIELD.has_default_value = false
+CLUE_CFG_BOXES_POS_Z_FIELD.default_value = {}
+CLUE_CFG_BOXES_POS_Z_FIELD.type = 2
+CLUE_CFG_BOXES_POS_Z_FIELD.cpp_type = 6
+
+CLUE_CFG_COST_ID_FIELD.name = "cost_id"
+CLUE_CFG_COST_ID_FIELD.full_name = ".ftcfg.clue_cfg.cost_id"
+CLUE_CFG_COST_ID_FIELD.number = 8
+CLUE_CFG_COST_ID_FIELD.index = 7
+CLUE_CFG_COST_ID_FIELD.label = 2
+CLUE_CFG_COST_ID_FIELD.has_default_value = false
+CLUE_CFG_COST_ID_FIELD.default_value = 0
+CLUE_CFG_COST_ID_FIELD.type = 5
+CLUE_CFG_COST_ID_FIELD.cpp_type = 1
+
+CLUE_CFG_CORE_COORDINATE_FIELD.name = "core_coordinate"
+CLUE_CFG_CORE_COORDINATE_FIELD.full_name = ".ftcfg.clue_cfg.core_coordinate"
+CLUE_CFG_CORE_COORDINATE_FIELD.number = 9
+CLUE_CFG_CORE_COORDINATE_FIELD.index = 8
+CLUE_CFG_CORE_COORDINATE_FIELD.label = 3
+CLUE_CFG_CORE_COORDINATE_FIELD.has_default_value = false
+CLUE_CFG_CORE_COORDINATE_FIELD.default_value = {}
+CLUE_CFG_CORE_COORDINATE_FIELD.type = 5
+CLUE_CFG_CORE_COORDINATE_FIELD.cpp_type = 1
+
+CLUE_CFG_MAP_RANGE_FIELD.name = "map_range"
+CLUE_CFG_MAP_RANGE_FIELD.full_name = ".ftcfg.clue_cfg.map_range"
+CLUE_CFG_MAP_RANGE_FIELD.number = 10
+CLUE_CFG_MAP_RANGE_FIELD.index = 9
+CLUE_CFG_MAP_RANGE_FIELD.label = 2
+CLUE_CFG_MAP_RANGE_FIELD.has_default_value = false
+CLUE_CFG_MAP_RANGE_FIELD.default_value = 0
+CLUE_CFG_MAP_RANGE_FIELD.type = 5
+CLUE_CFG_MAP_RANGE_FIELD.cpp_type = 1
+
+CLUE_CFG.name = "clue_cfg"
+CLUE_CFG.full_name = ".ftcfg.clue_cfg"
+CLUE_CFG.nested_types = {}
+CLUE_CFG.enum_types = {}
+CLUE_CFG.fields = {CLUE_CFG_CLUE_ID_FIELD, CLUE_CFG_MAP_ID_FIELD, CLUE_CFG_SCENE_ID_FIELD, CLUE_CFG_POS_FIELD, CLUE_CFG_DESC_FIELD, CLUE_CFG_BOXES_POS_X_FIELD, CLUE_CFG_BOXES_POS_Z_FIELD, CLUE_CFG_COST_ID_FIELD, CLUE_CFG_CORE_COORDINATE_FIELD, CLUE_CFG_MAP_RANGE_FIELD}
+CLUE_CFG.is_extendable = false
+CLUE_CFG.extensions = {}
+CLUE_CFGS_ITEMS_FIELD.name = "items"
+CLUE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.clue_cfgs.items"
+CLUE_CFGS_ITEMS_FIELD.number = 1
+CLUE_CFGS_ITEMS_FIELD.index = 0
+CLUE_CFGS_ITEMS_FIELD.label = 3
+CLUE_CFGS_ITEMS_FIELD.has_default_value = false
+CLUE_CFGS_ITEMS_FIELD.default_value = {}
+CLUE_CFGS_ITEMS_FIELD.message_type = CLUE_CFG
+CLUE_CFGS_ITEMS_FIELD.type = 11
+CLUE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CLUE_CFGS.name = "clue_cfgs"
+CLUE_CFGS.full_name = ".ftcfg.clue_cfgs"
+CLUE_CFGS.nested_types = {}
+CLUE_CFGS.enum_types = {}
+CLUE_CFGS.fields = {CLUE_CFGS_ITEMS_FIELD}
+CLUE_CFGS.is_extendable = false
+CLUE_CFGS.extensions = {}
+BOXS_CFG_BOXES_ID_FIELD.name = "boxes_id"
+BOXS_CFG_BOXES_ID_FIELD.full_name = ".ftcfg.boxs_cfg.boxes_id"
+BOXS_CFG_BOXES_ID_FIELD.number = 1
+BOXS_CFG_BOXES_ID_FIELD.index = 0
+BOXS_CFG_BOXES_ID_FIELD.label = 2
+BOXS_CFG_BOXES_ID_FIELD.has_default_value = false
+BOXS_CFG_BOXES_ID_FIELD.default_value = 0
+BOXS_CFG_BOXES_ID_FIELD.type = 5
+BOXS_CFG_BOXES_ID_FIELD.cpp_type = 1
+
+BOXS_CFG_BOX_ID_FIELD.name = "box_id"
+BOXS_CFG_BOX_ID_FIELD.full_name = ".ftcfg.boxs_cfg.box_id"
+BOXS_CFG_BOX_ID_FIELD.number = 2
+BOXS_CFG_BOX_ID_FIELD.index = 1
+BOXS_CFG_BOX_ID_FIELD.label = 3
+BOXS_CFG_BOX_ID_FIELD.has_default_value = false
+BOXS_CFG_BOX_ID_FIELD.default_value = {}
+BOXS_CFG_BOX_ID_FIELD.type = 5
+BOXS_CFG_BOX_ID_FIELD.cpp_type = 1
+
+BOXS_CFG_BOX_RATE_FIELD.name = "box_rate"
+BOXS_CFG_BOX_RATE_FIELD.full_name = ".ftcfg.boxs_cfg.box_rate"
+BOXS_CFG_BOX_RATE_FIELD.number = 3
+BOXS_CFG_BOX_RATE_FIELD.index = 2
+BOXS_CFG_BOX_RATE_FIELD.label = 3
+BOXS_CFG_BOX_RATE_FIELD.has_default_value = false
+BOXS_CFG_BOX_RATE_FIELD.default_value = {}
+BOXS_CFG_BOX_RATE_FIELD.type = 5
+BOXS_CFG_BOX_RATE_FIELD.cpp_type = 1
+
+BOXS_CFG.name = "boxs_cfg"
+BOXS_CFG.full_name = ".ftcfg.boxs_cfg"
+BOXS_CFG.nested_types = {}
+BOXS_CFG.enum_types = {}
+BOXS_CFG.fields = {BOXS_CFG_BOXES_ID_FIELD, BOXS_CFG_BOX_ID_FIELD, BOXS_CFG_BOX_RATE_FIELD}
+BOXS_CFG.is_extendable = false
+BOXS_CFG.extensions = {}
+BOXS_CFGS_ITEMS_FIELD.name = "items"
+BOXS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boxs_cfgs.items"
+BOXS_CFGS_ITEMS_FIELD.number = 1
+BOXS_CFGS_ITEMS_FIELD.index = 0
+BOXS_CFGS_ITEMS_FIELD.label = 3
+BOXS_CFGS_ITEMS_FIELD.has_default_value = false
+BOXS_CFGS_ITEMS_FIELD.default_value = {}
+BOXS_CFGS_ITEMS_FIELD.message_type = BOXS_CFG
+BOXS_CFGS_ITEMS_FIELD.type = 11
+BOXS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BOXS_CFGS.name = "boxs_cfgs"
+BOXS_CFGS.full_name = ".ftcfg.boxs_cfgs"
+BOXS_CFGS.nested_types = {}
+BOXS_CFGS.enum_types = {}
+BOXS_CFGS.fields = {BOXS_CFGS_ITEMS_FIELD}
+BOXS_CFGS.is_extendable = false
+BOXS_CFGS.extensions = {}
+BOX_COLLECT_CFG_BOX_ID_FIELD.name = "box_id"
+BOX_COLLECT_CFG_BOX_ID_FIELD.full_name = ".ftcfg.box_collect_cfg.box_id"
+BOX_COLLECT_CFG_BOX_ID_FIELD.number = 1
+BOX_COLLECT_CFG_BOX_ID_FIELD.index = 0
+BOX_COLLECT_CFG_BOX_ID_FIELD.label = 2
+BOX_COLLECT_CFG_BOX_ID_FIELD.has_default_value = false
+BOX_COLLECT_CFG_BOX_ID_FIELD.default_value = 0
+BOX_COLLECT_CFG_BOX_ID_FIELD.type = 5
+BOX_COLLECT_CFG_BOX_ID_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_BOX_RES_FIELD.name = "box_res"
+BOX_COLLECT_CFG_BOX_RES_FIELD.full_name = ".ftcfg.box_collect_cfg.box_res"
+BOX_COLLECT_CFG_BOX_RES_FIELD.number = 2
+BOX_COLLECT_CFG_BOX_RES_FIELD.index = 1
+BOX_COLLECT_CFG_BOX_RES_FIELD.label = 2
+BOX_COLLECT_CFG_BOX_RES_FIELD.has_default_value = false
+BOX_COLLECT_CFG_BOX_RES_FIELD.default_value = 0
+BOX_COLLECT_CFG_BOX_RES_FIELD.type = 5
+BOX_COLLECT_CFG_BOX_RES_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.name = "item_type"
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.full_name = ".ftcfg.box_collect_cfg.item_type"
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.number = 3
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.index = 2
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.label = 3
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.has_default_value = false
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.default_value = {}
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.type = 5
+BOX_COLLECT_CFG_ITEM_TYPE_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_ITEM_ID_FIELD.name = "item_id"
+BOX_COLLECT_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.box_collect_cfg.item_id"
+BOX_COLLECT_CFG_ITEM_ID_FIELD.number = 4
+BOX_COLLECT_CFG_ITEM_ID_FIELD.index = 3
+BOX_COLLECT_CFG_ITEM_ID_FIELD.label = 3
+BOX_COLLECT_CFG_ITEM_ID_FIELD.has_default_value = false
+BOX_COLLECT_CFG_ITEM_ID_FIELD.default_value = {}
+BOX_COLLECT_CFG_ITEM_ID_FIELD.type = 5
+BOX_COLLECT_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.name = "item_rate"
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.full_name = ".ftcfg.box_collect_cfg.item_rate"
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.number = 5
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.index = 4
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.label = 3
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.has_default_value = false
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.default_value = {}
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.type = 5
+BOX_COLLECT_CFG_ITEM_RATE_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.name = "show_type"
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.full_name = ".ftcfg.box_collect_cfg.show_type"
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.number = 6
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.index = 5
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.label = 2
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.has_default_value = false
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.default_value = 0
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.type = 5
+BOX_COLLECT_CFG_SHOW_TYPE_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.name = "model_scale"
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.full_name = ".ftcfg.box_collect_cfg.model_scale"
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.number = 7
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.index = 6
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.label = 2
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.has_default_value = false
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.default_value = 0
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.type = 5
+BOX_COLLECT_CFG_MODEL_SCALE_FIELD.cpp_type = 1
+
+BOX_COLLECT_CFG.name = "box_collect_cfg"
+BOX_COLLECT_CFG.full_name = ".ftcfg.box_collect_cfg"
+BOX_COLLECT_CFG.nested_types = {}
+BOX_COLLECT_CFG.enum_types = {}
+BOX_COLLECT_CFG.fields = {BOX_COLLECT_CFG_BOX_ID_FIELD, BOX_COLLECT_CFG_BOX_RES_FIELD, BOX_COLLECT_CFG_ITEM_TYPE_FIELD, BOX_COLLECT_CFG_ITEM_ID_FIELD, BOX_COLLECT_CFG_ITEM_RATE_FIELD, BOX_COLLECT_CFG_SHOW_TYPE_FIELD, BOX_COLLECT_CFG_MODEL_SCALE_FIELD}
+BOX_COLLECT_CFG.is_extendable = false
+BOX_COLLECT_CFG.extensions = {}
+BOX_COLLECT_CFGS_ITEMS_FIELD.name = "items"
+BOX_COLLECT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.box_collect_cfgs.items"
+BOX_COLLECT_CFGS_ITEMS_FIELD.number = 1
+BOX_COLLECT_CFGS_ITEMS_FIELD.index = 0
+BOX_COLLECT_CFGS_ITEMS_FIELD.label = 3
+BOX_COLLECT_CFGS_ITEMS_FIELD.has_default_value = false
+BOX_COLLECT_CFGS_ITEMS_FIELD.default_value = {}
+BOX_COLLECT_CFGS_ITEMS_FIELD.message_type = BOX_COLLECT_CFG
+BOX_COLLECT_CFGS_ITEMS_FIELD.type = 11
+BOX_COLLECT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BOX_COLLECT_CFGS.name = "box_collect_cfgs"
+BOX_COLLECT_CFGS.full_name = ".ftcfg.box_collect_cfgs"
+BOX_COLLECT_CFGS.nested_types = {}
+BOX_COLLECT_CFGS.enum_types = {}
+BOX_COLLECT_CFGS.fields = {BOX_COLLECT_CFGS_ITEMS_FIELD}
+BOX_COLLECT_CFGS.is_extendable = false
+BOX_COLLECT_CFGS.extensions = {}
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.event_id"
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.number = 1
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.index = 0
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.label = 2
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.name = "discribe"
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.discribe"
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.number = 2
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.index = 1
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.label = 2
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.default_value = ""
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.type = 9
+DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.cpp_type = 9
+
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.name = "boxes_id"
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.boxes_id"
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.number = 3
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.index = 2
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.name = "dungeon_x"
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.dungeon_x"
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.number = 4
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.index = 3
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.type = 2
+DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.cpp_type = 6
+
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.name = "dungeon_z"
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.dungeon_z"
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.number = 5
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.index = 4
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.type = 2
+DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.cpp_type = 6
+
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.name = "map_id"
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.map_id"
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.number = 6
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.index = 5
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.name = "touchoff_task_id"
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.touchoff_task_id"
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.number = 7
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.index = 6
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.name = "touchoff_rate"
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.touchoff_rate"
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.number = 8
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.index = 7
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.name = "elite_monster"
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.elite_monster"
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.number = 9
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.index = 8
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.label = 3
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.type = 5
+DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.cpp_type = 1
+
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.name = "broad"
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.broad"
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.number = 10
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.index = 9
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.label = 2
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.default_value = ""
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.type = 9
+DIG_TREASURE_EVENT_CFG_BROAD_FIELD.cpp_type = 9
+
+DIG_TREASURE_EVENT_CFG.name = "dig_treasure_event_cfg"
+DIG_TREASURE_EVENT_CFG.full_name = ".ftcfg.dig_treasure_event_cfg"
+DIG_TREASURE_EVENT_CFG.nested_types = {}
+DIG_TREASURE_EVENT_CFG.enum_types = {}
+DIG_TREASURE_EVENT_CFG.fields = {DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD, DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD, DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD, DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD, DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD, DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD, DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD, DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD, DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD, DIG_TREASURE_EVENT_CFG_BROAD_FIELD}
+DIG_TREASURE_EVENT_CFG.is_extendable = false
+DIG_TREASURE_EVENT_CFG.extensions = {}
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.name = "items"
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.dig_treasure_event_cfgs.items"
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.number = 1
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.index = 0
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.label = 3
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.default_value = {}
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.message_type = DIG_TREASURE_EVENT_CFG
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.type = 11
+DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+DIG_TREASURE_EVENT_CFGS.name = "dig_treasure_event_cfgs"
+DIG_TREASURE_EVENT_CFGS.full_name = ".ftcfg.dig_treasure_event_cfgs"
+DIG_TREASURE_EVENT_CFGS.nested_types = {}
+DIG_TREASURE_EVENT_CFGS.enum_types = {}
+DIG_TREASURE_EVENT_CFGS.fields = {DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD}
+DIG_TREASURE_EVENT_CFGS.is_extendable = false
+DIG_TREASURE_EVENT_CFGS.extensions = {}
+DROP_POINT_CFG_ID_FIELD.name = "id"
+DROP_POINT_CFG_ID_FIELD.full_name = ".ftcfg.drop_point_cfg.id"
+DROP_POINT_CFG_ID_FIELD.number = 1
+DROP_POINT_CFG_ID_FIELD.index = 0
+DROP_POINT_CFG_ID_FIELD.label = 2
+DROP_POINT_CFG_ID_FIELD.has_default_value = false
+DROP_POINT_CFG_ID_FIELD.default_value = 0
+DROP_POINT_CFG_ID_FIELD.type = 5
+DROP_POINT_CFG_ID_FIELD.cpp_type = 1
+
+DROP_POINT_CFG_MODULE_FIELD.name = "module"
+DROP_POINT_CFG_MODULE_FIELD.full_name = ".ftcfg.drop_point_cfg.module"
+DROP_POINT_CFG_MODULE_FIELD.number = 2
+DROP_POINT_CFG_MODULE_FIELD.index = 1
+DROP_POINT_CFG_MODULE_FIELD.label = 2
+DROP_POINT_CFG_MODULE_FIELD.has_default_value = false
+DROP_POINT_CFG_MODULE_FIELD.default_value = 0
+DROP_POINT_CFG_MODULE_FIELD.type = 5
+DROP_POINT_CFG_MODULE_FIELD.cpp_type = 1
+
+DROP_POINT_CFG_MINDISTANCE_FIELD.name = "minDistance"
+DROP_POINT_CFG_MINDISTANCE_FIELD.full_name = ".ftcfg.drop_point_cfg.minDistance"
+DROP_POINT_CFG_MINDISTANCE_FIELD.number = 3
+DROP_POINT_CFG_MINDISTANCE_FIELD.index = 2
+DROP_POINT_CFG_MINDISTANCE_FIELD.label = 2
+DROP_POINT_CFG_MINDISTANCE_FIELD.has_default_value = false
+DROP_POINT_CFG_MINDISTANCE_FIELD.default_value = 0.0
+DROP_POINT_CFG_MINDISTANCE_FIELD.type = 2
+DROP_POINT_CFG_MINDISTANCE_FIELD.cpp_type = 6
+
+DROP_POINT_CFG_PICKTYPE_FIELD.name = "pickType"
+DROP_POINT_CFG_PICKTYPE_FIELD.full_name = ".ftcfg.drop_point_cfg.pickType"
+DROP_POINT_CFG_PICKTYPE_FIELD.number = 4
+DROP_POINT_CFG_PICKTYPE_FIELD.index = 3
+DROP_POINT_CFG_PICKTYPE_FIELD.label = 2
+DROP_POINT_CFG_PICKTYPE_FIELD.has_default_value = false
+DROP_POINT_CFG_PICKTYPE_FIELD.default_value = 0
+DROP_POINT_CFG_PICKTYPE_FIELD.type = 5
+DROP_POINT_CFG_PICKTYPE_FIELD.cpp_type = 1
+
+DROP_POINT_CFG_BSHOW_FIELD.name = "bShow"
+DROP_POINT_CFG_BSHOW_FIELD.full_name = ".ftcfg.drop_point_cfg.bShow"
+DROP_POINT_CFG_BSHOW_FIELD.number = 5
+DROP_POINT_CFG_BSHOW_FIELD.index = 4
+DROP_POINT_CFG_BSHOW_FIELD.label = 2
+DROP_POINT_CFG_BSHOW_FIELD.has_default_value = false
+DROP_POINT_CFG_BSHOW_FIELD.default_value = 0
+DROP_POINT_CFG_BSHOW_FIELD.type = 5
+DROP_POINT_CFG_BSHOW_FIELD.cpp_type = 1
+
+DROP_POINT_CFG_TEXTID_FIELD.name = "textId"
+DROP_POINT_CFG_TEXTID_FIELD.full_name = ".ftcfg.drop_point_cfg.textId"
+DROP_POINT_CFG_TEXTID_FIELD.number = 6
+DROP_POINT_CFG_TEXTID_FIELD.index = 5
+DROP_POINT_CFG_TEXTID_FIELD.label = 2
+DROP_POINT_CFG_TEXTID_FIELD.has_default_value = false
+DROP_POINT_CFG_TEXTID_FIELD.default_value = 0
+DROP_POINT_CFG_TEXTID_FIELD.type = 5
+DROP_POINT_CFG_TEXTID_FIELD.cpp_type = 1
+
+DROP_POINT_CFG.name = "drop_point_cfg"
+DROP_POINT_CFG.full_name = ".ftcfg.drop_point_cfg"
+DROP_POINT_CFG.nested_types = {}
+DROP_POINT_CFG.enum_types = {}
+DROP_POINT_CFG.fields = {DROP_POINT_CFG_ID_FIELD, DROP_POINT_CFG_MODULE_FIELD, DROP_POINT_CFG_MINDISTANCE_FIELD, DROP_POINT_CFG_PICKTYPE_FIELD, DROP_POINT_CFG_BSHOW_FIELD, DROP_POINT_CFG_TEXTID_FIELD}
+DROP_POINT_CFG.is_extendable = false
+DROP_POINT_CFG.extensions = {}
+DROP_POINT_CFGS_ITEMS_FIELD.name = "items"
+DROP_POINT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.drop_point_cfgs.items"
+DROP_POINT_CFGS_ITEMS_FIELD.number = 1
+DROP_POINT_CFGS_ITEMS_FIELD.index = 0
+DROP_POINT_CFGS_ITEMS_FIELD.label = 3
+DROP_POINT_CFGS_ITEMS_FIELD.has_default_value = false
+DROP_POINT_CFGS_ITEMS_FIELD.default_value = {}
+DROP_POINT_CFGS_ITEMS_FIELD.message_type = DROP_POINT_CFG
+DROP_POINT_CFGS_ITEMS_FIELD.type = 11
+DROP_POINT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+DROP_POINT_CFGS.name = "drop_point_cfgs"
+DROP_POINT_CFGS.full_name = ".ftcfg.drop_point_cfgs"
+DROP_POINT_CFGS.nested_types = {}
+DROP_POINT_CFGS.enum_types = {}
+DROP_POINT_CFGS.fields = {DROP_POINT_CFGS_ITEMS_FIELD}
+DROP_POINT_CFGS.is_extendable = false
+DROP_POINT_CFGS.extensions = {}
+RANK_FUNCTION_CFG_ID_FIELD.name = "id"
+RANK_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.rank_function_cfg.id"
+RANK_FUNCTION_CFG_ID_FIELD.number = 1
+RANK_FUNCTION_CFG_ID_FIELD.index = 0
+RANK_FUNCTION_CFG_ID_FIELD.label = 2
+RANK_FUNCTION_CFG_ID_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_ID_FIELD.default_value = 0
+RANK_FUNCTION_CFG_ID_FIELD.type = 5
+RANK_FUNCTION_CFG_ID_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_NAME_FIELD.name = "name"
+RANK_FUNCTION_CFG_NAME_FIELD.full_name = ".ftcfg.rank_function_cfg.name"
+RANK_FUNCTION_CFG_NAME_FIELD.number = 2
+RANK_FUNCTION_CFG_NAME_FIELD.index = 1
+RANK_FUNCTION_CFG_NAME_FIELD.label = 2
+RANK_FUNCTION_CFG_NAME_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_NAME_FIELD.default_value = 0
+RANK_FUNCTION_CFG_NAME_FIELD.type = 5
+RANK_FUNCTION_CFG_NAME_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.name = "select_show"
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.full_name = ".ftcfg.rank_function_cfg.select_show"
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.number = 3
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.index = 2
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.label = 2
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.default_value = 0
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.type = 5
+RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_TYPE_FIELD.name = "type"
+RANK_FUNCTION_CFG_TYPE_FIELD.full_name = ".ftcfg.rank_function_cfg.type"
+RANK_FUNCTION_CFG_TYPE_FIELD.number = 4
+RANK_FUNCTION_CFG_TYPE_FIELD.index = 3
+RANK_FUNCTION_CFG_TYPE_FIELD.label = 2
+RANK_FUNCTION_CFG_TYPE_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_TYPE_FIELD.default_value = 0
+RANK_FUNCTION_CFG_TYPE_FIELD.type = 5
+RANK_FUNCTION_CFG_TYPE_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.name = "child_names"
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_names"
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.number = 5
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.index = 4
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.label = 3
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.default_value = {}
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.type = 5
+RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.name = "child_types"
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_types"
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.number = 6
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.index = 5
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.label = 3
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.default_value = {}
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.type = 5
+RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.name = "child_values"
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_values"
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.number = 7
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.index = 6
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.label = 3
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.default_value = {}
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.type = 2
+RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.cpp_type = 6
+
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.name = "show_fields"
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.full_name = ".ftcfg.rank_function_cfg.show_fields"
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.number = 8
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.index = 7
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.label = 3
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.default_value = {}
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.type = 5
+RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.cpp_type = 1
+
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.name = "host_field"
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.full_name = ".ftcfg.rank_function_cfg.host_field"
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.number = 9
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.index = 8
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.label = 2
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.has_default_value = false
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.default_value = ""
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.type = 9
+RANK_FUNCTION_CFG_HOST_FIELD_FIELD.cpp_type = 9
+
+RANK_FUNCTION_CFG.name = "rank_function_cfg"
+RANK_FUNCTION_CFG.full_name = ".ftcfg.rank_function_cfg"
+RANK_FUNCTION_CFG.nested_types = {}
+RANK_FUNCTION_CFG.enum_types = {}
+RANK_FUNCTION_CFG.fields = {RANK_FUNCTION_CFG_ID_FIELD, RANK_FUNCTION_CFG_NAME_FIELD, RANK_FUNCTION_CFG_SELECT_SHOW_FIELD, RANK_FUNCTION_CFG_TYPE_FIELD, RANK_FUNCTION_CFG_CHILD_NAMES_FIELD, RANK_FUNCTION_CFG_CHILD_TYPES_FIELD, RANK_FUNCTION_CFG_CHILD_VALUES_FIELD, RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD, RANK_FUNCTION_CFG_HOST_FIELD_FIELD}
+RANK_FUNCTION_CFG.is_extendable = false
+RANK_FUNCTION_CFG.extensions = {}
+RANK_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
+RANK_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rank_function_cfgs.items"
+RANK_FUNCTION_CFGS_ITEMS_FIELD.number = 1
+RANK_FUNCTION_CFGS_ITEMS_FIELD.index = 0
+RANK_FUNCTION_CFGS_ITEMS_FIELD.label = 3
+RANK_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
+RANK_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
+RANK_FUNCTION_CFGS_ITEMS_FIELD.message_type = RANK_FUNCTION_CFG
+RANK_FUNCTION_CFGS_ITEMS_FIELD.type = 11
+RANK_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RANK_FUNCTION_CFGS.name = "rank_function_cfgs"
+RANK_FUNCTION_CFGS.full_name = ".ftcfg.rank_function_cfgs"
+RANK_FUNCTION_CFGS.nested_types = {}
+RANK_FUNCTION_CFGS.enum_types = {}
+RANK_FUNCTION_CFGS.fields = {RANK_FUNCTION_CFGS_ITEMS_FIELD}
+RANK_FUNCTION_CFGS.is_extendable = false
+RANK_FUNCTION_CFGS.extensions = {}
+RANK_FIELD_CFG_ID_FIELD.name = "id"
+RANK_FIELD_CFG_ID_FIELD.full_name = ".ftcfg.rank_field_cfg.id"
+RANK_FIELD_CFG_ID_FIELD.number = 1
+RANK_FIELD_CFG_ID_FIELD.index = 0
+RANK_FIELD_CFG_ID_FIELD.label = 2
+RANK_FIELD_CFG_ID_FIELD.has_default_value = false
+RANK_FIELD_CFG_ID_FIELD.default_value = 0
+RANK_FIELD_CFG_ID_FIELD.type = 5
+RANK_FIELD_CFG_ID_FIELD.cpp_type = 1
+
+RANK_FIELD_CFG_NAME_FIELD.name = "name"
+RANK_FIELD_CFG_NAME_FIELD.full_name = ".ftcfg.rank_field_cfg.name"
+RANK_FIELD_CFG_NAME_FIELD.number = 2
+RANK_FIELD_CFG_NAME_FIELD.index = 1
+RANK_FIELD_CFG_NAME_FIELD.label = 2
+RANK_FIELD_CFG_NAME_FIELD.has_default_value = false
+RANK_FIELD_CFG_NAME_FIELD.default_value = 0
+RANK_FIELD_CFG_NAME_FIELD.type = 5
+RANK_FIELD_CFG_NAME_FIELD.cpp_type = 1
+
+RANK_FIELD_CFG_FIELD_NAME_FIELD.name = "field_name"
+RANK_FIELD_CFG_FIELD_NAME_FIELD.full_name = ".ftcfg.rank_field_cfg.field_name"
+RANK_FIELD_CFG_FIELD_NAME_FIELD.number = 3
+RANK_FIELD_CFG_FIELD_NAME_FIELD.index = 2
+RANK_FIELD_CFG_FIELD_NAME_FIELD.label = 2
+RANK_FIELD_CFG_FIELD_NAME_FIELD.has_default_value = false
+RANK_FIELD_CFG_FIELD_NAME_FIELD.default_value = ""
+RANK_FIELD_CFG_FIELD_NAME_FIELD.type = 9
+RANK_FIELD_CFG_FIELD_NAME_FIELD.cpp_type = 9
+
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.name = "child_names"
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_names"
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.number = 4
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.index = 3
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.label = 3
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.has_default_value = false
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.default_value = {}
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.type = 5
+RANK_FIELD_CFG_CHILD_NAMES_FIELD.cpp_type = 1
+
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.name = "child_types"
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_types"
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.number = 5
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.index = 4
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.label = 3
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.has_default_value = false
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.default_value = {}
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.type = 5
+RANK_FIELD_CFG_CHILD_TYPES_FIELD.cpp_type = 1
+
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.name = "child_values"
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_values"
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.number = 6
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.index = 5
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.label = 3
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.has_default_value = false
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.default_value = {}
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.type = 2
+RANK_FIELD_CFG_CHILD_VALUES_FIELD.cpp_type = 6
+
+RANK_FIELD_CFG_HOST_FIELD_FIELD.name = "host_field"
+RANK_FIELD_CFG_HOST_FIELD_FIELD.full_name = ".ftcfg.rank_field_cfg.host_field"
+RANK_FIELD_CFG_HOST_FIELD_FIELD.number = 7
+RANK_FIELD_CFG_HOST_FIELD_FIELD.index = 6
+RANK_FIELD_CFG_HOST_FIELD_FIELD.label = 2
+RANK_FIELD_CFG_HOST_FIELD_FIELD.has_default_value = false
+RANK_FIELD_CFG_HOST_FIELD_FIELD.default_value = ""
+RANK_FIELD_CFG_HOST_FIELD_FIELD.type = 9
+RANK_FIELD_CFG_HOST_FIELD_FIELD.cpp_type = 9
+
+RANK_FIELD_CFG.name = "rank_field_cfg"
+RANK_FIELD_CFG.full_name = ".ftcfg.rank_field_cfg"
+RANK_FIELD_CFG.nested_types = {}
+RANK_FIELD_CFG.enum_types = {}
+RANK_FIELD_CFG.fields = {RANK_FIELD_CFG_ID_FIELD, RANK_FIELD_CFG_NAME_FIELD, RANK_FIELD_CFG_FIELD_NAME_FIELD, RANK_FIELD_CFG_CHILD_NAMES_FIELD, RANK_FIELD_CFG_CHILD_TYPES_FIELD, RANK_FIELD_CFG_CHILD_VALUES_FIELD, RANK_FIELD_CFG_HOST_FIELD_FIELD}
+RANK_FIELD_CFG.is_extendable = false
+RANK_FIELD_CFG.extensions = {}
+RANK_FIELD_CFGS_ITEMS_FIELD.name = "items"
+RANK_FIELD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rank_field_cfgs.items"
+RANK_FIELD_CFGS_ITEMS_FIELD.number = 1
+RANK_FIELD_CFGS_ITEMS_FIELD.index = 0
+RANK_FIELD_CFGS_ITEMS_FIELD.label = 3
+RANK_FIELD_CFGS_ITEMS_FIELD.has_default_value = false
+RANK_FIELD_CFGS_ITEMS_FIELD.default_value = {}
+RANK_FIELD_CFGS_ITEMS_FIELD.message_type = RANK_FIELD_CFG
+RANK_FIELD_CFGS_ITEMS_FIELD.type = 11
+RANK_FIELD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RANK_FIELD_CFGS.name = "rank_field_cfgs"
+RANK_FIELD_CFGS.full_name = ".ftcfg.rank_field_cfgs"
+RANK_FIELD_CFGS.nested_types = {}
+RANK_FIELD_CFGS.enum_types = {}
+RANK_FIELD_CFGS.fields = {RANK_FIELD_CFGS_ITEMS_FIELD}
+RANK_FIELD_CFGS.is_extendable = false
+RANK_FIELD_CFGS.extensions = {}
+EDN_CFG_LVL_FIELD.name = "lvl"
+EDN_CFG_LVL_FIELD.full_name = ".ftcfg.edn_cfg.lvl"
+EDN_CFG_LVL_FIELD.number = 1
+EDN_CFG_LVL_FIELD.index = 0
+EDN_CFG_LVL_FIELD.label = 2
+EDN_CFG_LVL_FIELD.has_default_value = false
+EDN_CFG_LVL_FIELD.default_value = 0
+EDN_CFG_LVL_FIELD.type = 5
+EDN_CFG_LVL_FIELD.cpp_type = 1
+
+EDN_CFG_LVLUP_EXP_FIELD.name = "lvlup_exp"
+EDN_CFG_LVLUP_EXP_FIELD.full_name = ".ftcfg.edn_cfg.lvlup_exp"
+EDN_CFG_LVLUP_EXP_FIELD.number = 2
+EDN_CFG_LVLUP_EXP_FIELD.index = 1
+EDN_CFG_LVLUP_EXP_FIELD.label = 2
+EDN_CFG_LVLUP_EXP_FIELD.has_default_value = false
+EDN_CFG_LVLUP_EXP_FIELD.default_value = 0
+EDN_CFG_LVLUP_EXP_FIELD.type = 5
+EDN_CFG_LVLUP_EXP_FIELD.cpp_type = 1
+
+EDN_CFG.name = "edn_cfg"
+EDN_CFG.full_name = ".ftcfg.edn_cfg"
+EDN_CFG.nested_types = {}
+EDN_CFG.enum_types = {}
+EDN_CFG.fields = {EDN_CFG_LVL_FIELD, EDN_CFG_LVLUP_EXP_FIELD}
+EDN_CFG.is_extendable = false
+EDN_CFG.extensions = {}
+EDN_CFGS_ITEMS_FIELD.name = "items"
+EDN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_cfgs.items"
+EDN_CFGS_ITEMS_FIELD.number = 1
+EDN_CFGS_ITEMS_FIELD.index = 0
+EDN_CFGS_ITEMS_FIELD.label = 3
+EDN_CFGS_ITEMS_FIELD.has_default_value = false
+EDN_CFGS_ITEMS_FIELD.default_value = {}
+EDN_CFGS_ITEMS_FIELD.message_type = EDN_CFG
+EDN_CFGS_ITEMS_FIELD.type = 11
+EDN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EDN_CFGS.name = "edn_cfgs"
+EDN_CFGS.full_name = ".ftcfg.edn_cfgs"
+EDN_CFGS.nested_types = {}
+EDN_CFGS.enum_types = {}
+EDN_CFGS.fields = {EDN_CFGS_ITEMS_FIELD}
+EDN_CFGS.is_extendable = false
+EDN_CFGS.extensions = {}
+EDN_SCENE_CFG_SCENE_ID_FIELD.name = "scene_id"
+EDN_SCENE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.edn_scene_cfg.scene_id"
+EDN_SCENE_CFG_SCENE_ID_FIELD.number = 1
+EDN_SCENE_CFG_SCENE_ID_FIELD.index = 0
+EDN_SCENE_CFG_SCENE_ID_FIELD.label = 2
+EDN_SCENE_CFG_SCENE_ID_FIELD.has_default_value = false
+EDN_SCENE_CFG_SCENE_ID_FIELD.default_value = 0
+EDN_SCENE_CFG_SCENE_ID_FIELD.type = 5
+EDN_SCENE_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+EDN_SCENE_CFG_OPEN_LVL_FIELD.name = "open_lvl"
+EDN_SCENE_CFG_OPEN_LVL_FIELD.full_name = ".ftcfg.edn_scene_cfg.open_lvl"
+EDN_SCENE_CFG_OPEN_LVL_FIELD.number = 2
+EDN_SCENE_CFG_OPEN_LVL_FIELD.index = 1
+EDN_SCENE_CFG_OPEN_LVL_FIELD.label = 2
+EDN_SCENE_CFG_OPEN_LVL_FIELD.has_default_value = false
+EDN_SCENE_CFG_OPEN_LVL_FIELD.default_value = 0
+EDN_SCENE_CFG_OPEN_LVL_FIELD.type = 5
+EDN_SCENE_CFG_OPEN_LVL_FIELD.cpp_type = 1
+
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.name = "mapname_id"
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.full_name = ".ftcfg.edn_scene_cfg.mapname_id"
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.number = 3
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.index = 2
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.label = 2
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.has_default_value = false
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.default_value = 0
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.type = 5
+EDN_SCENE_CFG_MAPNAME_ID_FIELD.cpp_type = 1
+
+EDN_SCENE_CFG_MAP_NAME_FIELD.name = "map_name"
+EDN_SCENE_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_name"
+EDN_SCENE_CFG_MAP_NAME_FIELD.number = 4
+EDN_SCENE_CFG_MAP_NAME_FIELD.index = 3
+EDN_SCENE_CFG_MAP_NAME_FIELD.label = 2
+EDN_SCENE_CFG_MAP_NAME_FIELD.has_default_value = false
+EDN_SCENE_CFG_MAP_NAME_FIELD.default_value = ""
+EDN_SCENE_CFG_MAP_NAME_FIELD.type = 9
+EDN_SCENE_CFG_MAP_NAME_FIELD.cpp_type = 9
+
+EDN_SCENE_CFG_MAP_IMGID_FIELD.name = "map_imgid"
+EDN_SCENE_CFG_MAP_IMGID_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_imgid"
+EDN_SCENE_CFG_MAP_IMGID_FIELD.number = 5
+EDN_SCENE_CFG_MAP_IMGID_FIELD.index = 4
+EDN_SCENE_CFG_MAP_IMGID_FIELD.label = 2
+EDN_SCENE_CFG_MAP_IMGID_FIELD.has_default_value = false
+EDN_SCENE_CFG_MAP_IMGID_FIELD.default_value = 0
+EDN_SCENE_CFG_MAP_IMGID_FIELD.type = 5
+EDN_SCENE_CFG_MAP_IMGID_FIELD.cpp_type = 1
+
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.name = "map_relicsids"
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_relicsids"
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.number = 6
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.index = 5
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.label = 3
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.has_default_value = false
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.default_value = {}
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.type = 5
+EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.cpp_type = 1
+
+EDN_SCENE_CFG.name = "edn_scene_cfg"
+EDN_SCENE_CFG.full_name = ".ftcfg.edn_scene_cfg"
+EDN_SCENE_CFG.nested_types = {}
+EDN_SCENE_CFG.enum_types = {}
+EDN_SCENE_CFG.fields = {EDN_SCENE_CFG_SCENE_ID_FIELD, EDN_SCENE_CFG_OPEN_LVL_FIELD, EDN_SCENE_CFG_MAPNAME_ID_FIELD, EDN_SCENE_CFG_MAP_NAME_FIELD, EDN_SCENE_CFG_MAP_IMGID_FIELD, EDN_SCENE_CFG_MAP_RELICSIDS_FIELD}
+EDN_SCENE_CFG.is_extendable = false
+EDN_SCENE_CFG.extensions = {}
+EDN_SCENE_CFGS_ITEMS_FIELD.name = "items"
+EDN_SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_scene_cfgs.items"
+EDN_SCENE_CFGS_ITEMS_FIELD.number = 1
+EDN_SCENE_CFGS_ITEMS_FIELD.index = 0
+EDN_SCENE_CFGS_ITEMS_FIELD.label = 3
+EDN_SCENE_CFGS_ITEMS_FIELD.has_default_value = false
+EDN_SCENE_CFGS_ITEMS_FIELD.default_value = {}
+EDN_SCENE_CFGS_ITEMS_FIELD.message_type = EDN_SCENE_CFG
+EDN_SCENE_CFGS_ITEMS_FIELD.type = 11
+EDN_SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EDN_SCENE_CFGS.name = "edn_scene_cfgs"
+EDN_SCENE_CFGS.full_name = ".ftcfg.edn_scene_cfgs"
+EDN_SCENE_CFGS.nested_types = {}
+EDN_SCENE_CFGS.enum_types = {}
+EDN_SCENE_CFGS.fields = {EDN_SCENE_CFGS_ITEMS_FIELD}
+EDN_SCENE_CFGS.is_extendable = false
+EDN_SCENE_CFGS.extensions = {}
+EDN_RELIC_CFG_ID_FIELD.name = "id"
+EDN_RELIC_CFG_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.id"
+EDN_RELIC_CFG_ID_FIELD.number = 1
+EDN_RELIC_CFG_ID_FIELD.index = 0
+EDN_RELIC_CFG_ID_FIELD.label = 2
+EDN_RELIC_CFG_ID_FIELD.has_default_value = false
+EDN_RELIC_CFG_ID_FIELD.default_value = 0
+EDN_RELIC_CFG_ID_FIELD.type = 5
+EDN_RELIC_CFG_ID_FIELD.cpp_type = 1
+
+EDN_RELIC_CFG_NAME_ID_FIELD.name = "name_id"
+EDN_RELIC_CFG_NAME_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.name_id"
+EDN_RELIC_CFG_NAME_ID_FIELD.number = 2
+EDN_RELIC_CFG_NAME_ID_FIELD.index = 1
+EDN_RELIC_CFG_NAME_ID_FIELD.label = 2
+EDN_RELIC_CFG_NAME_ID_FIELD.has_default_value = false
+EDN_RELIC_CFG_NAME_ID_FIELD.default_value = 0
+EDN_RELIC_CFG_NAME_ID_FIELD.type = 5
+EDN_RELIC_CFG_NAME_ID_FIELD.cpp_type = 1
+
+EDN_RELIC_CFG_NAME_STRING_FIELD.name = "name_string"
+EDN_RELIC_CFG_NAME_STRING_FIELD.full_name = ".ftcfg.edn_relic_cfg.name_string"
+EDN_RELIC_CFG_NAME_STRING_FIELD.number = 3
+EDN_RELIC_CFG_NAME_STRING_FIELD.index = 2
+EDN_RELIC_CFG_NAME_STRING_FIELD.label = 2
+EDN_RELIC_CFG_NAME_STRING_FIELD.has_default_value = false
+EDN_RELIC_CFG_NAME_STRING_FIELD.default_value = ""
+EDN_RELIC_CFG_NAME_STRING_FIELD.type = 9
+EDN_RELIC_CFG_NAME_STRING_FIELD.cpp_type = 9
+
+EDN_RELIC_CFG_IMAGE_ID_FIELD.name = "image_id"
+EDN_RELIC_CFG_IMAGE_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.image_id"
+EDN_RELIC_CFG_IMAGE_ID_FIELD.number = 4
+EDN_RELIC_CFG_IMAGE_ID_FIELD.index = 3
+EDN_RELIC_CFG_IMAGE_ID_FIELD.label = 2
+EDN_RELIC_CFG_IMAGE_ID_FIELD.has_default_value = false
+EDN_RELIC_CFG_IMAGE_ID_FIELD.default_value = 0
+EDN_RELIC_CFG_IMAGE_ID_FIELD.type = 5
+EDN_RELIC_CFG_IMAGE_ID_FIELD.cpp_type = 1
+
+EDN_RELIC_CFG_REWARDS_FIELD.name = "rewards"
+EDN_RELIC_CFG_REWARDS_FIELD.full_name = ".ftcfg.edn_relic_cfg.rewards"
+EDN_RELIC_CFG_REWARDS_FIELD.number = 5
+EDN_RELIC_CFG_REWARDS_FIELD.index = 4
+EDN_RELIC_CFG_REWARDS_FIELD.label = 2
+EDN_RELIC_CFG_REWARDS_FIELD.has_default_value = false
+EDN_RELIC_CFG_REWARDS_FIELD.default_value = 0
+EDN_RELIC_CFG_REWARDS_FIELD.type = 5
+EDN_RELIC_CFG_REWARDS_FIELD.cpp_type = 1
+
+EDN_RELIC_CFG_TIPS_ID_FIELD.name = "tips_id"
+EDN_RELIC_CFG_TIPS_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.tips_id"
+EDN_RELIC_CFG_TIPS_ID_FIELD.number = 6
+EDN_RELIC_CFG_TIPS_ID_FIELD.index = 5
+EDN_RELIC_CFG_TIPS_ID_FIELD.label = 2
+EDN_RELIC_CFG_TIPS_ID_FIELD.has_default_value = false
+EDN_RELIC_CFG_TIPS_ID_FIELD.default_value = 0
+EDN_RELIC_CFG_TIPS_ID_FIELD.type = 5
+EDN_RELIC_CFG_TIPS_ID_FIELD.cpp_type = 1
+
+EDN_RELIC_CFG.name = "edn_relic_cfg"
+EDN_RELIC_CFG.full_name = ".ftcfg.edn_relic_cfg"
+EDN_RELIC_CFG.nested_types = {}
+EDN_RELIC_CFG.enum_types = {}
+EDN_RELIC_CFG.fields = {EDN_RELIC_CFG_ID_FIELD, EDN_RELIC_CFG_NAME_ID_FIELD, EDN_RELIC_CFG_NAME_STRING_FIELD, EDN_RELIC_CFG_IMAGE_ID_FIELD, EDN_RELIC_CFG_REWARDS_FIELD, EDN_RELIC_CFG_TIPS_ID_FIELD}
+EDN_RELIC_CFG.is_extendable = false
+EDN_RELIC_CFG.extensions = {}
+EDN_RELIC_CFGS_ITEMS_FIELD.name = "items"
+EDN_RELIC_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_relic_cfgs.items"
+EDN_RELIC_CFGS_ITEMS_FIELD.number = 1
+EDN_RELIC_CFGS_ITEMS_FIELD.index = 0
+EDN_RELIC_CFGS_ITEMS_FIELD.label = 3
+EDN_RELIC_CFGS_ITEMS_FIELD.has_default_value = false
+EDN_RELIC_CFGS_ITEMS_FIELD.default_value = {}
+EDN_RELIC_CFGS_ITEMS_FIELD.message_type = EDN_RELIC_CFG
+EDN_RELIC_CFGS_ITEMS_FIELD.type = 11
+EDN_RELIC_CFGS_ITEMS_FIELD.cpp_type = 10
+
+EDN_RELIC_CFGS.name = "edn_relic_cfgs"
+EDN_RELIC_CFGS.full_name = ".ftcfg.edn_relic_cfgs"
+EDN_RELIC_CFGS.nested_types = {}
+EDN_RELIC_CFGS.enum_types = {}
+EDN_RELIC_CFGS.fields = {EDN_RELIC_CFGS_ITEMS_FIELD}
+EDN_RELIC_CFGS.is_extendable = false
+EDN_RELIC_CFGS.extensions = {}
+TOWER_BASE_CFG_ID_FIELD.name = "id"
+TOWER_BASE_CFG_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.id"
+TOWER_BASE_CFG_ID_FIELD.number = 1
+TOWER_BASE_CFG_ID_FIELD.index = 0
+TOWER_BASE_CFG_ID_FIELD.label = 2
+TOWER_BASE_CFG_ID_FIELD.has_default_value = false
+TOWER_BASE_CFG_ID_FIELD.default_value = 0
+TOWER_BASE_CFG_ID_FIELD.type = 5
+TOWER_BASE_CFG_ID_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_MAP_ID_FIELD.name = "map_id"
+TOWER_BASE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.map_id"
+TOWER_BASE_CFG_MAP_ID_FIELD.number = 2
+TOWER_BASE_CFG_MAP_ID_FIELD.index = 1
+TOWER_BASE_CFG_MAP_ID_FIELD.label = 3
+TOWER_BASE_CFG_MAP_ID_FIELD.has_default_value = false
+TOWER_BASE_CFG_MAP_ID_FIELD.default_value = {}
+TOWER_BASE_CFG_MAP_ID_FIELD.type = 5
+TOWER_BASE_CFG_MAP_ID_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_ITEM_ID_FIELD.name = "item_id"
+TOWER_BASE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.item_id"
+TOWER_BASE_CFG_ITEM_ID_FIELD.number = 3
+TOWER_BASE_CFG_ITEM_ID_FIELD.index = 2
+TOWER_BASE_CFG_ITEM_ID_FIELD.label = 2
+TOWER_BASE_CFG_ITEM_ID_FIELD.has_default_value = false
+TOWER_BASE_CFG_ITEM_ID_FIELD.default_value = 0
+TOWER_BASE_CFG_ITEM_ID_FIELD.type = 5
+TOWER_BASE_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.name = "item_count"
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.item_count"
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.number = 4
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.index = 3
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.label = 2
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.has_default_value = false
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.default_value = 0
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.type = 5
+TOWER_BASE_CFG_ITEM_COUNT_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.name = "raid_itemid"
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.full_name = ".ftcfg.tower_base_cfg.raid_itemid"
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.number = 5
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.index = 4
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.label = 2
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.has_default_value = false
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.default_value = 0
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.type = 5
+TOWER_BASE_CFG_RAID_ITEMID_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.name = "raid_itemcount"
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.raid_itemcount"
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.number = 6
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.index = 5
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.label = 2
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.has_default_value = false
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.default_value = 0
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.type = 5
+TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_MONEYTYPE_FIELD.name = "moneytype"
+TOWER_BASE_CFG_MONEYTYPE_FIELD.full_name = ".ftcfg.tower_base_cfg.moneytype"
+TOWER_BASE_CFG_MONEYTYPE_FIELD.number = 7
+TOWER_BASE_CFG_MONEYTYPE_FIELD.index = 6
+TOWER_BASE_CFG_MONEYTYPE_FIELD.label = 2
+TOWER_BASE_CFG_MONEYTYPE_FIELD.has_default_value = false
+TOWER_BASE_CFG_MONEYTYPE_FIELD.default_value = 0
+TOWER_BASE_CFG_MONEYTYPE_FIELD.type = 5
+TOWER_BASE_CFG_MONEYTYPE_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.name = "moneycount"
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.moneycount"
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.number = 8
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.index = 7
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.label = 2
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.has_default_value = false
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.default_value = 0
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.type = 5
+TOWER_BASE_CFG_MONEYCOUNT_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.name = "itemid_cross"
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.itemid_cross"
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.number = 9
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.index = 8
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.label = 2
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.has_default_value = false
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.default_value = 0
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.type = 5
+TOWER_BASE_CFG_ITEMID_CROSS_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.name = "itemcount_cross"
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.itemcount_cross"
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.number = 10
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.index = 9
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.label = 2
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.has_default_value = false
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.default_value = 0
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.type = 5
+TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_EXP_CROSS_FIELD.name = "exp_cross"
+TOWER_BASE_CFG_EXP_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.exp_cross"
+TOWER_BASE_CFG_EXP_CROSS_FIELD.number = 11
+TOWER_BASE_CFG_EXP_CROSS_FIELD.index = 10
+TOWER_BASE_CFG_EXP_CROSS_FIELD.label = 2
+TOWER_BASE_CFG_EXP_CROSS_FIELD.has_default_value = false
+TOWER_BASE_CFG_EXP_CROSS_FIELD.default_value = 0
+TOWER_BASE_CFG_EXP_CROSS_FIELD.type = 5
+TOWER_BASE_CFG_EXP_CROSS_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.name = "hangup_reward_exp"
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_exp"
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.number = 12
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.index = 11
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.label = 2
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.has_default_value = false
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.default_value = 0
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.type = 5
+TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.name = "hangup_reward_moneytype"
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_moneytype"
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.number = 13
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.index = 12
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.label = 2
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.has_default_value = false
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.default_value = 0
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.type = 5
+TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.name = "hangup_reward_money"
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_money"
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.number = 14
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.index = 13
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.label = 2
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.has_default_value = false
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.default_value = 0
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.type = 5
+TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.name = "delay_reward_item"
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.full_name = ".ftcfg.tower_base_cfg.delay_reward_item"
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.number = 15
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.index = 14
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.label = 2
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.has_default_value = false
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.default_value = 0
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.type = 5
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.name = "delay_reward_item_count"
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.delay_reward_item_count"
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.number = 16
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.index = 15
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.label = 2
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.has_default_value = false
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.default_value = 0
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.type = 5
+TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.cpp_type = 1
+
+TOWER_BASE_CFG_BIRTH_X_FIELD.name = "birth_x"
+TOWER_BASE_CFG_BIRTH_X_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_x"
+TOWER_BASE_CFG_BIRTH_X_FIELD.number = 17
+TOWER_BASE_CFG_BIRTH_X_FIELD.index = 16
+TOWER_BASE_CFG_BIRTH_X_FIELD.label = 3
+TOWER_BASE_CFG_BIRTH_X_FIELD.has_default_value = false
+TOWER_BASE_CFG_BIRTH_X_FIELD.default_value = {}
+TOWER_BASE_CFG_BIRTH_X_FIELD.type = 2
+TOWER_BASE_CFG_BIRTH_X_FIELD.cpp_type = 6
+
+TOWER_BASE_CFG_BIRTH_Y_FIELD.name = "birth_y"
+TOWER_BASE_CFG_BIRTH_Y_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_y"
+TOWER_BASE_CFG_BIRTH_Y_FIELD.number = 18
+TOWER_BASE_CFG_BIRTH_Y_FIELD.index = 17
+TOWER_BASE_CFG_BIRTH_Y_FIELD.label = 3
+TOWER_BASE_CFG_BIRTH_Y_FIELD.has_default_value = false
+TOWER_BASE_CFG_BIRTH_Y_FIELD.default_value = {}
+TOWER_BASE_CFG_BIRTH_Y_FIELD.type = 2
+TOWER_BASE_CFG_BIRTH_Y_FIELD.cpp_type = 6
+
+TOWER_BASE_CFG_BIRTH_Z_FIELD.name = "birth_z"
+TOWER_BASE_CFG_BIRTH_Z_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_z"
+TOWER_BASE_CFG_BIRTH_Z_FIELD.number = 19
+TOWER_BASE_CFG_BIRTH_Z_FIELD.index = 18
+TOWER_BASE_CFG_BIRTH_Z_FIELD.label = 3
+TOWER_BASE_CFG_BIRTH_Z_FIELD.has_default_value = false
+TOWER_BASE_CFG_BIRTH_Z_FIELD.default_value = {}
+TOWER_BASE_CFG_BIRTH_Z_FIELD.type = 2
+TOWER_BASE_CFG_BIRTH_Z_FIELD.cpp_type = 6
+
+TOWER_BASE_CFG.name = "tower_base_cfg"
+TOWER_BASE_CFG.full_name = ".ftcfg.tower_base_cfg"
+TOWER_BASE_CFG.nested_types = {}
+TOWER_BASE_CFG.enum_types = {}
+TOWER_BASE_CFG.fields = {TOWER_BASE_CFG_ID_FIELD, TOWER_BASE_CFG_MAP_ID_FIELD, TOWER_BASE_CFG_ITEM_ID_FIELD, TOWER_BASE_CFG_ITEM_COUNT_FIELD, TOWER_BASE_CFG_RAID_ITEMID_FIELD, TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD, TOWER_BASE_CFG_MONEYTYPE_FIELD, TOWER_BASE_CFG_MONEYCOUNT_FIELD, TOWER_BASE_CFG_ITEMID_CROSS_FIELD, TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD, TOWER_BASE_CFG_EXP_CROSS_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD, TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD, TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD, TOWER_BASE_CFG_BIRTH_X_FIELD, TOWER_BASE_CFG_BIRTH_Y_FIELD, TOWER_BASE_CFG_BIRTH_Z_FIELD}
+TOWER_BASE_CFG.is_extendable = false
+TOWER_BASE_CFG.extensions = {}
+TOWER_BASE_CFGS_ITEMS_FIELD.name = "items"
+TOWER_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.tower_base_cfgs.items"
+TOWER_BASE_CFGS_ITEMS_FIELD.number = 1
+TOWER_BASE_CFGS_ITEMS_FIELD.index = 0
+TOWER_BASE_CFGS_ITEMS_FIELD.label = 3
+TOWER_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+TOWER_BASE_CFGS_ITEMS_FIELD.default_value = {}
+TOWER_BASE_CFGS_ITEMS_FIELD.message_type = TOWER_BASE_CFG
+TOWER_BASE_CFGS_ITEMS_FIELD.type = 11
+TOWER_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TOWER_BASE_CFGS.name = "tower_base_cfgs"
+TOWER_BASE_CFGS.full_name = ".ftcfg.tower_base_cfgs"
+TOWER_BASE_CFGS.nested_types = {}
+TOWER_BASE_CFGS.enum_types = {}
+TOWER_BASE_CFGS.fields = {TOWER_BASE_CFGS_ITEMS_FIELD}
+TOWER_BASE_CFGS.is_extendable = false
+TOWER_BASE_CFGS.extensions = {}
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.name = "id"
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.id"
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.number = 1
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.index = 0
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_ID_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.name = "level_state"
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.level_state"
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.number = 2
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.index = 1
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.name = "map_id"
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_id"
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.number = 3
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.index = 2
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.name = "map_image_id"
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_image_id"
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.number = 4
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.index = 3
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.name = "map_name"
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_name"
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.number = 5
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.index = 4
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.default_value = ""
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.type = 9
+STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.cpp_type = 9
+
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.name = "min_fightval"
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.min_fightval"
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.number = 6
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.index = 5
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.type = 13
+STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.cpp_type = 3
+
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.name = "recommend_fightval"
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.recommend_fightval"
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.number = 7
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.index = 6
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.type = 13
+STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.cpp_type = 3
+
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.name = "consume_item_type"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_type"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.number = 8
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.index = 7
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.type = 13
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.cpp_type = 3
+
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.name = "consume_item_num"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_num"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.number = 9
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.index = 8
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.name = "enter_type"
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.enter_type"
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.number = 10
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.index = 9
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.default_value = nil
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.enum_type = config_predefine_pb.EDUNGEON_CHALLENGE_TYPE
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.type = 14
+STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.cpp_type = 8
+
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.name = "dungoen_diff"
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.dungoen_diff"
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.number = 11
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.index = 10
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.default_value = nil
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.enum_type = config_predefine_pb.EDUNGEON_CHALLENGE_DIFF
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.type = 14
+STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.cpp_type = 8
+
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.name = "enter_delay"
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.enter_delay"
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.number = 12
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.index = 11
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.type = 13
+STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.cpp_type = 3
+
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.name = "default_cancel_buton"
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.default_cancel_buton"
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.number = 13
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.index = 12
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.name = "reward_type"
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.reward_type"
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.number = 14
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.index = 13
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.name = "min_team_num"
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.min_team_num"
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.number = 15
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.index = 14
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.name = "icon_id"
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.icon_id"
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.number = 16
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.index = 15
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.default_value = 0
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.name = "consume_show_name"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_show_name"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.number = 17
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.index = 16
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.label = 2
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.default_value = ""
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.type = 9
+STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.cpp_type = 9
+
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.name = "consume_item_id"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_id"
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.number = 18
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.index = 17
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.label = 3
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.default_value = {}
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.type = 5
+STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.cpp_type = 1
+
+STARSPIRIT_DUNGOEN_CFG.name = "starspirit_dungoen_cfg"
+STARSPIRIT_DUNGOEN_CFG.full_name = ".ftcfg.starspirit_dungoen_cfg"
+STARSPIRIT_DUNGOEN_CFG.nested_types = {}
+STARSPIRIT_DUNGOEN_CFG.enum_types = {}
+STARSPIRIT_DUNGOEN_CFG.fields = {STARSPIRIT_DUNGOEN_CFG_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD, STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD, STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD, STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD, STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD, STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD, STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD, STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD}
+STARSPIRIT_DUNGOEN_CFG.is_extendable = false
+STARSPIRIT_DUNGOEN_CFG.extensions = {}
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.name = "items"
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfgs.items"
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.number = 1
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.index = 0
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.label = 3
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.has_default_value = false
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.default_value = {}
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.message_type = STARSPIRIT_DUNGOEN_CFG
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.type = 11
+STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+STARSPIRIT_DUNGOEN_CFGS.name = "starspirit_dungoen_cfgs"
+STARSPIRIT_DUNGOEN_CFGS.full_name = ".ftcfg.starspirit_dungoen_cfgs"
+STARSPIRIT_DUNGOEN_CFGS.nested_types = {}
+STARSPIRIT_DUNGOEN_CFGS.enum_types = {}
+STARSPIRIT_DUNGOEN_CFGS.fields = {STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD}
+STARSPIRIT_DUNGOEN_CFGS.is_extendable = false
+STARSPIRIT_DUNGOEN_CFGS.extensions = {}
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.name = "rune_id"
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.full_name = ".ftcfg.rune_quality_cfg.rune_id"
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.number = 1
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.index = 0
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.label = 2
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.has_default_value = false
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.default_value = 0
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.type = 13
+RUNE_QUALITY_CFG_RUNE_ID_FIELD.cpp_type = 3
+
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.name = "power_uplimit"
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.full_name = ".ftcfg.rune_quality_cfg.power_uplimit"
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.number = 2
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.index = 1
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.label = 2
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.has_default_value = false
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.default_value = 0
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.type = 13
+RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.cpp_type = 3
+
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.name = "power_downlimit"
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.full_name = ".ftcfg.rune_quality_cfg.power_downlimit"
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.number = 3
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.index = 2
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.label = 2
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.has_default_value = false
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.default_value = 0
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.type = 13
+RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.cpp_type = 3
+
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.name = "better_effect_rate"
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.full_name = ".ftcfg.rune_quality_cfg.better_effect_rate"
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.number = 4
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.index = 3
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.label = 2
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.has_default_value = false
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.default_value = 0
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.type = 5
+RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.cpp_type = 1
+
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.name = "best_effect_rate"
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.full_name = ".ftcfg.rune_quality_cfg.best_effect_rate"
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.number = 5
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.index = 4
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.label = 2
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.has_default_value = false
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.default_value = 0
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.type = 5
+RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.cpp_type = 1
+
+RUNE_QUALITY_CFG.name = "rune_quality_cfg"
+RUNE_QUALITY_CFG.full_name = ".ftcfg.rune_quality_cfg"
+RUNE_QUALITY_CFG.nested_types = {}
+RUNE_QUALITY_CFG.enum_types = {}
+RUNE_QUALITY_CFG.fields = {RUNE_QUALITY_CFG_RUNE_ID_FIELD, RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD, RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD, RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD, RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD}
+RUNE_QUALITY_CFG.is_extendable = false
+RUNE_QUALITY_CFG.extensions = {}
+RUNE_QUALITY_CFGS_ITEMS_FIELD.name = "items"
+RUNE_QUALITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_quality_cfgs.items"
+RUNE_QUALITY_CFGS_ITEMS_FIELD.number = 1
+RUNE_QUALITY_CFGS_ITEMS_FIELD.index = 0
+RUNE_QUALITY_CFGS_ITEMS_FIELD.label = 3
+RUNE_QUALITY_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_QUALITY_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_QUALITY_CFGS_ITEMS_FIELD.message_type = RUNE_QUALITY_CFG
+RUNE_QUALITY_CFGS_ITEMS_FIELD.type = 11
+RUNE_QUALITY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_QUALITY_CFGS.name = "rune_quality_cfgs"
+RUNE_QUALITY_CFGS.full_name = ".ftcfg.rune_quality_cfgs"
+RUNE_QUALITY_CFGS.nested_types = {}
+RUNE_QUALITY_CFGS.enum_types = {}
+RUNE_QUALITY_CFGS.fields = {RUNE_QUALITY_CFGS_ITEMS_FIELD}
+RUNE_QUALITY_CFGS.is_extendable = false
+RUNE_QUALITY_CFGS.extensions = {}
+RUNE_PROP_REFINE_CFG_ID_FIELD.name = "id"
+RUNE_PROP_REFINE_CFG_ID_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.id"
+RUNE_PROP_REFINE_CFG_ID_FIELD.number = 1
+RUNE_PROP_REFINE_CFG_ID_FIELD.index = 0
+RUNE_PROP_REFINE_CFG_ID_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_ID_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_ID_FIELD.default_value = 0
+RUNE_PROP_REFINE_CFG_ID_FIELD.type = 13
+RUNE_PROP_REFINE_CFG_ID_FIELD.cpp_type = 3
+
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.name = "level"
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.level"
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.number = 2
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.index = 1
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.default_value = 0
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.type = 13
+RUNE_PROP_REFINE_CFG_LEVEL_FIELD.cpp_type = 3
+
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.name = "prop_type"
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.prop_type"
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.number = 3
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.index = 2
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.default_value = nil
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.type = 14
+RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.item_id"
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.number = 4
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.index = 3
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.type = 13
+RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
+
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.name = "item_count"
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.item_count"
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.number = 5
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.index = 4
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.default_value = 0
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.type = 13
+RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.cpp_type = 3
+
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.name = "silver_cost"
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.silver_cost"
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.number = 6
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.index = 5
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.default_value = 0
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.type = 13
+RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.cpp_type = 3
+
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.name = "prop_limit"
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.prop_limit"
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.number = 7
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.index = 6
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.label = 2
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.default_value = 0.0
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.type = 2
+RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.cpp_type = 6
+
+RUNE_PROP_REFINE_CFG.name = "rune_prop_refine_cfg"
+RUNE_PROP_REFINE_CFG.full_name = ".ftcfg.rune_prop_refine_cfg"
+RUNE_PROP_REFINE_CFG.nested_types = {}
+RUNE_PROP_REFINE_CFG.enum_types = {}
+RUNE_PROP_REFINE_CFG.fields = {RUNE_PROP_REFINE_CFG_ID_FIELD, RUNE_PROP_REFINE_CFG_LEVEL_FIELD, RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD, RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD, RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD, RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD, RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD}
+RUNE_PROP_REFINE_CFG.is_extendable = false
+RUNE_PROP_REFINE_CFG.extensions = {}
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.name = "items"
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_prop_refine_cfgs.items"
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.number = 1
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.index = 0
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.label = 3
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.message_type = RUNE_PROP_REFINE_CFG
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.type = 11
+RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_PROP_REFINE_CFGS.name = "rune_prop_refine_cfgs"
+RUNE_PROP_REFINE_CFGS.full_name = ".ftcfg.rune_prop_refine_cfgs"
+RUNE_PROP_REFINE_CFGS.nested_types = {}
+RUNE_PROP_REFINE_CFGS.enum_types = {}
+RUNE_PROP_REFINE_CFGS.fields = {RUNE_PROP_REFINE_CFGS_ITEMS_FIELD}
+RUNE_PROP_REFINE_CFGS.is_extendable = false
+RUNE_PROP_REFINE_CFGS.extensions = {}
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.name = "level"
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.level"
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.number = 1
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.index = 0
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.label = 2
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.has_default_value = false
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.default_value = 0
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.type = 13
+RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.cpp_type = 3
+
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.item_id"
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.number = 2
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.index = 1
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.label = 2
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.type = 13
+RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
+
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.name = "item_count"
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.item_count"
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.number = 3
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.index = 2
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.label = 2
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.has_default_value = false
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.default_value = 0
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.type = 13
+RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.cpp_type = 3
+
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.name = "silver_cost"
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.silver_cost"
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.number = 4
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.index = 3
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.label = 2
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.has_default_value = false
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.default_value = 0
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.type = 13
+RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.cpp_type = 3
+
+RUNE_SKILL_REFINE_CFG.name = "rune_skill_refine_cfg"
+RUNE_SKILL_REFINE_CFG.full_name = ".ftcfg.rune_skill_refine_cfg"
+RUNE_SKILL_REFINE_CFG.nested_types = {}
+RUNE_SKILL_REFINE_CFG.enum_types = {}
+RUNE_SKILL_REFINE_CFG.fields = {RUNE_SKILL_REFINE_CFG_LEVEL_FIELD, RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD, RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD, RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD}
+RUNE_SKILL_REFINE_CFG.is_extendable = false
+RUNE_SKILL_REFINE_CFG.extensions = {}
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.name = "items"
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_skill_refine_cfgs.items"
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.number = 1
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.index = 0
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.label = 3
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.default_value = {}
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.message_type = RUNE_SKILL_REFINE_CFG
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.type = 11
+RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RUNE_SKILL_REFINE_CFGS.name = "rune_skill_refine_cfgs"
+RUNE_SKILL_REFINE_CFGS.full_name = ".ftcfg.rune_skill_refine_cfgs"
+RUNE_SKILL_REFINE_CFGS.nested_types = {}
+RUNE_SKILL_REFINE_CFGS.enum_types = {}
+RUNE_SKILL_REFINE_CFGS.fields = {RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD}
+RUNE_SKILL_REFINE_CFGS.is_extendable = false
+RUNE_SKILL_REFINE_CFGS.extensions = {}
+MONTHCARD_BASE_CFG_ID_FIELD.name = "id"
+MONTHCARD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.monthcard_base_cfg.id"
+MONTHCARD_BASE_CFG_ID_FIELD.number = 1
+MONTHCARD_BASE_CFG_ID_FIELD.index = 0
+MONTHCARD_BASE_CFG_ID_FIELD.label = 2
+MONTHCARD_BASE_CFG_ID_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_ID_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_ID_FIELD.type = 5
+MONTHCARD_BASE_CFG_ID_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.name = "continueday"
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.full_name = ".ftcfg.monthcard_base_cfg.continueday"
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.number = 2
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.index = 1
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.label = 2
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.type = 5
+MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG_PRICE_FIELD.name = "price"
+MONTHCARD_BASE_CFG_PRICE_FIELD.full_name = ".ftcfg.monthcard_base_cfg.price"
+MONTHCARD_BASE_CFG_PRICE_FIELD.number = 3
+MONTHCARD_BASE_CFG_PRICE_FIELD.index = 2
+MONTHCARD_BASE_CFG_PRICE_FIELD.label = 2
+MONTHCARD_BASE_CFG_PRICE_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_PRICE_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_PRICE_FIELD.type = 5
+MONTHCARD_BASE_CFG_PRICE_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.name = "ingotscount"
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.full_name = ".ftcfg.monthcard_base_cfg.ingotscount"
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.number = 4
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.index = 3
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.label = 2
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.type = 5
+MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.name = "exp_percent"
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.full_name = ".ftcfg.monthcard_base_cfg.exp_percent"
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.number = 5
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.index = 4
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.label = 2
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.type = 5
+MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.name = "popularity_per"
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.full_name = ".ftcfg.monthcard_base_cfg.popularity_per"
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.number = 6
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.index = 5
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.label = 2
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.has_default_value = false
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.default_value = 0
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.type = 5
+MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.cpp_type = 1
+
+MONTHCARD_BASE_CFG.name = "monthcard_base_cfg"
+MONTHCARD_BASE_CFG.full_name = ".ftcfg.monthcard_base_cfg"
+MONTHCARD_BASE_CFG.nested_types = {}
+MONTHCARD_BASE_CFG.enum_types = {}
+MONTHCARD_BASE_CFG.fields = {MONTHCARD_BASE_CFG_ID_FIELD, MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD, MONTHCARD_BASE_CFG_PRICE_FIELD, MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD, MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD, MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD}
+MONTHCARD_BASE_CFG.is_extendable = false
+MONTHCARD_BASE_CFG.extensions = {}
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.name = "items"
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.monthcard_base_cfgs.items"
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.number = 1
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.index = 0
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.label = 3
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.default_value = {}
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.message_type = MONTHCARD_BASE_CFG
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.type = 11
+MONTHCARD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MONTHCARD_BASE_CFGS.name = "monthcard_base_cfgs"
+MONTHCARD_BASE_CFGS.full_name = ".ftcfg.monthcard_base_cfgs"
+MONTHCARD_BASE_CFGS.nested_types = {}
+MONTHCARD_BASE_CFGS.enum_types = {}
+MONTHCARD_BASE_CFGS.fields = {MONTHCARD_BASE_CFGS_ITEMS_FIELD}
+MONTHCARD_BASE_CFGS.is_extendable = false
+MONTHCARD_BASE_CFGS.extensions = {}
+SIGNUP_BASE_CFG_ID_FIELD.name = "id"
+SIGNUP_BASE_CFG_ID_FIELD.full_name = ".ftcfg.signup_base_cfg.id"
+SIGNUP_BASE_CFG_ID_FIELD.number = 1
+SIGNUP_BASE_CFG_ID_FIELD.index = 0
+SIGNUP_BASE_CFG_ID_FIELD.label = 2
+SIGNUP_BASE_CFG_ID_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ID_FIELD.default_value = 0
+SIGNUP_BASE_CFG_ID_FIELD.type = 5
+SIGNUP_BASE_CFG_ID_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.name = "item_number_month1"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month1"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.number = 2
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.index = 1
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.name = "item_number_month2"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month2"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.number = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.index = 2
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.name = "item_number_month3"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month3"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.number = 4
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.index = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.name = "item_number_month4"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month4"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.number = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.index = 4
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.name = "item_number_month5"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month5"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.number = 6
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.index = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.name = "item_number_month6"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month6"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.number = 7
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.index = 6
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.name = "item_number_month7"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month7"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.number = 8
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.index = 7
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.name = "item_number_month8"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month8"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.number = 9
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.index = 8
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.name = "item_number_month9"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month9"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.number = 10
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.index = 9
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.name = "item_number_month10"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month10"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.number = 11
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.index = 10
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.name = "item_number_month11"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month11"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.number = 12
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.index = 11
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.name = "item_number_month12"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month12"
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.number = 13
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.index = 12
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.label = 3
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.has_default_value = false
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.default_value = {}
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.type = 5
+SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.cpp_type = 1
+
+SIGNUP_BASE_CFG.name = "signup_base_cfg"
+SIGNUP_BASE_CFG.full_name = ".ftcfg.signup_base_cfg"
+SIGNUP_BASE_CFG.nested_types = {}
+SIGNUP_BASE_CFG.enum_types = {}
+SIGNUP_BASE_CFG.fields = {SIGNUP_BASE_CFG_ID_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD}
+SIGNUP_BASE_CFG.is_extendable = false
+SIGNUP_BASE_CFG.extensions = {}
+SIGNUP_BASE_CFGS_ITEMS_FIELD.name = "items"
+SIGNUP_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.signup_base_cfgs.items"
+SIGNUP_BASE_CFGS_ITEMS_FIELD.number = 1
+SIGNUP_BASE_CFGS_ITEMS_FIELD.index = 0
+SIGNUP_BASE_CFGS_ITEMS_FIELD.label = 3
+SIGNUP_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+SIGNUP_BASE_CFGS_ITEMS_FIELD.default_value = {}
+SIGNUP_BASE_CFGS_ITEMS_FIELD.message_type = SIGNUP_BASE_CFG
+SIGNUP_BASE_CFGS_ITEMS_FIELD.type = 11
+SIGNUP_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SIGNUP_BASE_CFGS.name = "signup_base_cfgs"
+SIGNUP_BASE_CFGS.full_name = ".ftcfg.signup_base_cfgs"
+SIGNUP_BASE_CFGS.nested_types = {}
+SIGNUP_BASE_CFGS.enum_types = {}
+SIGNUP_BASE_CFGS.fields = {SIGNUP_BASE_CFGS_ITEMS_FIELD}
+SIGNUP_BASE_CFGS.is_extendable = false
+SIGNUP_BASE_CFGS.extensions = {}
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.name = "id"
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.id"
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.number = 1
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.index = 0
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.label = 2
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.has_default_value = false
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.default_value = 0
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.type = 5
+SIGNUP_ACCUMULATION_CFG_ID_FIELD.cpp_type = 1
+
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.name = "reach_number"
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reach_number"
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.number = 2
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.index = 1
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.label = 2
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.has_default_value = false
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.default_value = 0
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.type = 5
+SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.cpp_type = 1
+
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.name = "reward_id"
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reward_id"
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.number = 3
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.index = 2
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.label = 2
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.has_default_value = false
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.default_value = 0
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.type = 5
+SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.name = "reward_num"
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reward_num"
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.number = 4
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.index = 3
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.label = 2
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.has_default_value = false
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.default_value = 0
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.type = 5
+SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.cpp_type = 1
+
+SIGNUP_ACCUMULATION_CFG.name = "signup_accumulation_cfg"
+SIGNUP_ACCUMULATION_CFG.full_name = ".ftcfg.signup_accumulation_cfg"
+SIGNUP_ACCUMULATION_CFG.nested_types = {}
+SIGNUP_ACCUMULATION_CFG.enum_types = {}
+SIGNUP_ACCUMULATION_CFG.fields = {SIGNUP_ACCUMULATION_CFG_ID_FIELD, SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD, SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD, SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD}
+SIGNUP_ACCUMULATION_CFG.is_extendable = false
+SIGNUP_ACCUMULATION_CFG.extensions = {}
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.name = "items"
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.signup_accumulation_cfgs.items"
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.number = 1
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.index = 0
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.label = 3
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.has_default_value = false
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.default_value = {}
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.message_type = SIGNUP_ACCUMULATION_CFG
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.type = 11
+SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SIGNUP_ACCUMULATION_CFGS.name = "signup_accumulation_cfgs"
+SIGNUP_ACCUMULATION_CFGS.full_name = ".ftcfg.signup_accumulation_cfgs"
+SIGNUP_ACCUMULATION_CFGS.nested_types = {}
+SIGNUP_ACCUMULATION_CFGS.enum_types = {}
+SIGNUP_ACCUMULATION_CFGS.fields = {SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD}
+SIGNUP_ACCUMULATION_CFGS.is_extendable = false
+SIGNUP_ACCUMULATION_CFGS.extensions = {}
+SERVICE_CFG_ID_FIELD.name = "id"
+SERVICE_CFG_ID_FIELD.full_name = ".ftcfg.service_cfg.id"
+SERVICE_CFG_ID_FIELD.number = 1
+SERVICE_CFG_ID_FIELD.index = 0
+SERVICE_CFG_ID_FIELD.label = 2
+SERVICE_CFG_ID_FIELD.has_default_value = false
+SERVICE_CFG_ID_FIELD.default_value = 0
+SERVICE_CFG_ID_FIELD.type = 5
+SERVICE_CFG_ID_FIELD.cpp_type = 1
+
+SERVICE_CFG_SERVICE_ID_FIELD.name = "service_id"
+SERVICE_CFG_SERVICE_ID_FIELD.full_name = ".ftcfg.service_cfg.service_id"
+SERVICE_CFG_SERVICE_ID_FIELD.number = 2
+SERVICE_CFG_SERVICE_ID_FIELD.index = 1
+SERVICE_CFG_SERVICE_ID_FIELD.label = 2
+SERVICE_CFG_SERVICE_ID_FIELD.has_default_value = false
+SERVICE_CFG_SERVICE_ID_FIELD.default_value = 0
+SERVICE_CFG_SERVICE_ID_FIELD.type = 5
+SERVICE_CFG_SERVICE_ID_FIELD.cpp_type = 1
+
+SERVICE_CFG_PARAM1_FIELD.name = "param1"
+SERVICE_CFG_PARAM1_FIELD.full_name = ".ftcfg.service_cfg.param1"
+SERVICE_CFG_PARAM1_FIELD.number = 3
+SERVICE_CFG_PARAM1_FIELD.index = 2
+SERVICE_CFG_PARAM1_FIELD.label = 2
+SERVICE_CFG_PARAM1_FIELD.has_default_value = false
+SERVICE_CFG_PARAM1_FIELD.default_value = 0
+SERVICE_CFG_PARAM1_FIELD.type = 5
+SERVICE_CFG_PARAM1_FIELD.cpp_type = 1
+
+SERVICE_CFG_PARAM2_FIELD.name = "param2"
+SERVICE_CFG_PARAM2_FIELD.full_name = ".ftcfg.service_cfg.param2"
+SERVICE_CFG_PARAM2_FIELD.number = 4
+SERVICE_CFG_PARAM2_FIELD.index = 3
+SERVICE_CFG_PARAM2_FIELD.label = 2
+SERVICE_CFG_PARAM2_FIELD.has_default_value = false
+SERVICE_CFG_PARAM2_FIELD.default_value = 0
+SERVICE_CFG_PARAM2_FIELD.type = 5
+SERVICE_CFG_PARAM2_FIELD.cpp_type = 1
+
+SERVICE_CFG_PARAM3_FIELD.name = "param3"
+SERVICE_CFG_PARAM3_FIELD.full_name = ".ftcfg.service_cfg.param3"
+SERVICE_CFG_PARAM3_FIELD.number = 5
+SERVICE_CFG_PARAM3_FIELD.index = 4
+SERVICE_CFG_PARAM3_FIELD.label = 2
+SERVICE_CFG_PARAM3_FIELD.has_default_value = false
+SERVICE_CFG_PARAM3_FIELD.default_value = 0
+SERVICE_CFG_PARAM3_FIELD.type = 5
+SERVICE_CFG_PARAM3_FIELD.cpp_type = 1
+
+SERVICE_CFG_PARAM4_FIELD.name = "param4"
+SERVICE_CFG_PARAM4_FIELD.full_name = ".ftcfg.service_cfg.param4"
+SERVICE_CFG_PARAM4_FIELD.number = 6
+SERVICE_CFG_PARAM4_FIELD.index = 5
+SERVICE_CFG_PARAM4_FIELD.label = 2
+SERVICE_CFG_PARAM4_FIELD.has_default_value = false
+SERVICE_CFG_PARAM4_FIELD.default_value = 0
+SERVICE_CFG_PARAM4_FIELD.type = 5
+SERVICE_CFG_PARAM4_FIELD.cpp_type = 1
+
+SERVICE_CFG_PARAM5_FIELD.name = "param5"
+SERVICE_CFG_PARAM5_FIELD.full_name = ".ftcfg.service_cfg.param5"
+SERVICE_CFG_PARAM5_FIELD.number = 7
+SERVICE_CFG_PARAM5_FIELD.index = 6
+SERVICE_CFG_PARAM5_FIELD.label = 2
+SERVICE_CFG_PARAM5_FIELD.has_default_value = false
+SERVICE_CFG_PARAM5_FIELD.default_value = 0
+SERVICE_CFG_PARAM5_FIELD.type = 5
+SERVICE_CFG_PARAM5_FIELD.cpp_type = 1
+
+SERVICE_CFG.name = "service_cfg"
+SERVICE_CFG.full_name = ".ftcfg.service_cfg"
+SERVICE_CFG.nested_types = {}
+SERVICE_CFG.enum_types = {}
+SERVICE_CFG.fields = {SERVICE_CFG_ID_FIELD, SERVICE_CFG_SERVICE_ID_FIELD, SERVICE_CFG_PARAM1_FIELD, SERVICE_CFG_PARAM2_FIELD, SERVICE_CFG_PARAM3_FIELD, SERVICE_CFG_PARAM4_FIELD, SERVICE_CFG_PARAM5_FIELD}
+SERVICE_CFG.is_extendable = false
+SERVICE_CFG.extensions = {}
+SERVICE_CFGS_ITEMS_FIELD.name = "items"
+SERVICE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.service_cfgs.items"
+SERVICE_CFGS_ITEMS_FIELD.number = 1
+SERVICE_CFGS_ITEMS_FIELD.index = 0
+SERVICE_CFGS_ITEMS_FIELD.label = 3
+SERVICE_CFGS_ITEMS_FIELD.has_default_value = false
+SERVICE_CFGS_ITEMS_FIELD.default_value = {}
+SERVICE_CFGS_ITEMS_FIELD.message_type = SERVICE_CFG
+SERVICE_CFGS_ITEMS_FIELD.type = 11
+SERVICE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SERVICE_CFGS.name = "service_cfgs"
+SERVICE_CFGS.full_name = ".ftcfg.service_cfgs"
+SERVICE_CFGS.nested_types = {}
+SERVICE_CFGS.enum_types = {}
+SERVICE_CFGS.fields = {SERVICE_CFGS_ITEMS_FIELD}
+SERVICE_CFGS.is_extendable = false
+SERVICE_CFGS.extensions = {}
+MATERIAL_ITEM_CFG_NUM_FIELD.name = "num"
+MATERIAL_ITEM_CFG_NUM_FIELD.full_name = ".ftcfg.material_item_cfg.num"
+MATERIAL_ITEM_CFG_NUM_FIELD.number = 1
+MATERIAL_ITEM_CFG_NUM_FIELD.index = 0
+MATERIAL_ITEM_CFG_NUM_FIELD.label = 2
+MATERIAL_ITEM_CFG_NUM_FIELD.has_default_value = false
+MATERIAL_ITEM_CFG_NUM_FIELD.default_value = 0
+MATERIAL_ITEM_CFG_NUM_FIELD.type = 13
+MATERIAL_ITEM_CFG_NUM_FIELD.cpp_type = 3
+
+MATERIAL_ITEM_CFG_ID_FIELD.name = "id"
+MATERIAL_ITEM_CFG_ID_FIELD.full_name = ".ftcfg.material_item_cfg.id"
+MATERIAL_ITEM_CFG_ID_FIELD.number = 2
+MATERIAL_ITEM_CFG_ID_FIELD.index = 1
+MATERIAL_ITEM_CFG_ID_FIELD.label = 3
+MATERIAL_ITEM_CFG_ID_FIELD.has_default_value = false
+MATERIAL_ITEM_CFG_ID_FIELD.default_value = {}
+MATERIAL_ITEM_CFG_ID_FIELD.type = 13
+MATERIAL_ITEM_CFG_ID_FIELD.cpp_type = 3
+
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.name = "weight"
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.full_name = ".ftcfg.material_item_cfg.weight"
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.number = 3
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.index = 2
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.label = 3
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.has_default_value = false
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.default_value = {}
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.type = 5
+MATERIAL_ITEM_CFG_WEIGHT_FIELD.cpp_type = 1
+
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.name = "reward_id"
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.material_item_cfg.reward_id"
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.number = 4
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.index = 3
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.label = 3
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.has_default_value = false
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.default_value = {}
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.type = 5
+MATERIAL_ITEM_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+MATERIAL_ITEM_CFG.name = "material_item_cfg"
+MATERIAL_ITEM_CFG.full_name = ".ftcfg.material_item_cfg"
+MATERIAL_ITEM_CFG.nested_types = {}
+MATERIAL_ITEM_CFG.enum_types = {}
+MATERIAL_ITEM_CFG.fields = {MATERIAL_ITEM_CFG_NUM_FIELD, MATERIAL_ITEM_CFG_ID_FIELD, MATERIAL_ITEM_CFG_WEIGHT_FIELD, MATERIAL_ITEM_CFG_REWARD_ID_FIELD}
+MATERIAL_ITEM_CFG.is_extendable = false
+MATERIAL_ITEM_CFG.extensions = {}
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.name = "items"
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.material_item_cfgs.items"
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.number = 1
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.index = 0
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.label = 3
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.has_default_value = false
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.default_value = {}
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.message_type = MATERIAL_ITEM_CFG
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.type = 11
+MATERIAL_ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MATERIAL_ITEM_CFGS.name = "material_item_cfgs"
+MATERIAL_ITEM_CFGS.full_name = ".ftcfg.material_item_cfgs"
+MATERIAL_ITEM_CFGS.nested_types = {}
+MATERIAL_ITEM_CFGS.enum_types = {}
+MATERIAL_ITEM_CFGS.fields = {MATERIAL_ITEM_CFGS_ITEMS_FIELD}
+MATERIAL_ITEM_CFGS.is_extendable = false
+MATERIAL_ITEM_CFGS.extensions = {}
+STATE_CFG_ID_FIELD.name = "id"
+STATE_CFG_ID_FIELD.full_name = ".ftcfg.state_cfg.id"
+STATE_CFG_ID_FIELD.number = 1
+STATE_CFG_ID_FIELD.index = 0
+STATE_CFG_ID_FIELD.label = 2
+STATE_CFG_ID_FIELD.has_default_value = false
+STATE_CFG_ID_FIELD.default_value = 0
+STATE_CFG_ID_FIELD.type = 5
+STATE_CFG_ID_FIELD.cpp_type = 1
+
+STATE_CFG_DESC_FIELD.name = "desc"
+STATE_CFG_DESC_FIELD.full_name = ".ftcfg.state_cfg.desc"
+STATE_CFG_DESC_FIELD.number = 2
+STATE_CFG_DESC_FIELD.index = 1
+STATE_CFG_DESC_FIELD.label = 2
+STATE_CFG_DESC_FIELD.has_default_value = false
+STATE_CFG_DESC_FIELD.default_value = ""
+STATE_CFG_DESC_FIELD.type = 9
+STATE_CFG_DESC_FIELD.cpp_type = 9
+
+STATE_CFG_ACTIONS_FIELD.name = "actions"
+STATE_CFG_ACTIONS_FIELD.full_name = ".ftcfg.state_cfg.actions"
+STATE_CFG_ACTIONS_FIELD.number = 3
+STATE_CFG_ACTIONS_FIELD.index = 2
+STATE_CFG_ACTIONS_FIELD.label = 3
+STATE_CFG_ACTIONS_FIELD.has_default_value = false
+STATE_CFG_ACTIONS_FIELD.default_value = {}
+STATE_CFG_ACTIONS_FIELD.enum_type = config_predefine_pb.EBATTLESTATEACTION
+STATE_CFG_ACTIONS_FIELD.type = 14
+STATE_CFG_ACTIONS_FIELD.cpp_type = 8
+
+STATE_CFG.name = "state_cfg"
+STATE_CFG.full_name = ".ftcfg.state_cfg"
+STATE_CFG.nested_types = {}
+STATE_CFG.enum_types = {}
+STATE_CFG.fields = {STATE_CFG_ID_FIELD, STATE_CFG_DESC_FIELD, STATE_CFG_ACTIONS_FIELD}
+STATE_CFG.is_extendable = false
+STATE_CFG.extensions = {}
+STATE_CFGS_ITEMS_FIELD.name = "items"
+STATE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.state_cfgs.items"
+STATE_CFGS_ITEMS_FIELD.number = 1
+STATE_CFGS_ITEMS_FIELD.index = 0
+STATE_CFGS_ITEMS_FIELD.label = 3
+STATE_CFGS_ITEMS_FIELD.has_default_value = false
+STATE_CFGS_ITEMS_FIELD.default_value = {}
+STATE_CFGS_ITEMS_FIELD.message_type = STATE_CFG
+STATE_CFGS_ITEMS_FIELD.type = 11
+STATE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+STATE_CFGS.name = "state_cfgs"
+STATE_CFGS.full_name = ".ftcfg.state_cfgs"
+STATE_CFGS.nested_types = {}
+STATE_CFGS.enum_types = {}
+STATE_CFGS.fields = {STATE_CFGS_ITEMS_FIELD}
+STATE_CFGS.is_extendable = false
+STATE_CFGS.extensions = {}
+CAM_OPTIONS_CFG_ID_FIELD.name = "id"
+CAM_OPTIONS_CFG_ID_FIELD.full_name = ".ftcfg.cam_options_cfg.id"
+CAM_OPTIONS_CFG_ID_FIELD.number = 1
+CAM_OPTIONS_CFG_ID_FIELD.index = 0
+CAM_OPTIONS_CFG_ID_FIELD.label = 2
+CAM_OPTIONS_CFG_ID_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_ID_FIELD.default_value = 0
+CAM_OPTIONS_CFG_ID_FIELD.type = 5
+CAM_OPTIONS_CFG_ID_FIELD.cpp_type = 1
+
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.name = "min_pitch"
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.min_pitch"
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.number = 2
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.index = 1
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.label = 2
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.type = 2
+CAM_OPTIONS_CFG_MIN_PITCH_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.name = "max_pitch"
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.max_pitch"
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.number = 3
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.index = 2
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.label = 2
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.type = 2
+CAM_OPTIONS_CFG_MAX_PITCH_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.name = "max_follow_dis"
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.full_name = ".ftcfg.cam_options_cfg.max_follow_dis"
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.number = 4
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.index = 3
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.label = 2
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.type = 2
+CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.name = "min_follow_dis"
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.full_name = ".ftcfg.cam_options_cfg.min_follow_dis"
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.number = 5
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.index = 4
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.label = 2
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.type = 2
+CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.name = "def_yaw"
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.full_name = ".ftcfg.cam_options_cfg.def_yaw"
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.number = 6
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.index = 5
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.label = 2
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.type = 2
+CAM_OPTIONS_CFG_DEF_YAW_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.name = "def_pitch"
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.def_pitch"
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.number = 7
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.index = 6
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.label = 2
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.type = 2
+CAM_OPTIONS_CFG_DEF_PITCH_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.name = "follow_auto_rot_yaw_speed"
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.full_name = ".ftcfg.cam_options_cfg.follow_auto_rot_yaw_speed"
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.number = 8
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.index = 7
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.label = 2
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.type = 2
+CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.name = "offset_x"
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_x"
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.number = 9
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.index = 8
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.label = 2
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.type = 2
+CAM_OPTIONS_CFG_OFFSET_X_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.name = "offset_y"
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_y"
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.number = 10
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.index = 9
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.label = 2
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.type = 2
+CAM_OPTIONS_CFG_OFFSET_Y_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.name = "offset_z"
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_z"
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.number = 11
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.index = 10
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.label = 2
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.type = 2
+CAM_OPTIONS_CFG_OFFSET_Z_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG_FOV_FIELD.name = "fov"
+CAM_OPTIONS_CFG_FOV_FIELD.full_name = ".ftcfg.cam_options_cfg.fov"
+CAM_OPTIONS_CFG_FOV_FIELD.number = 12
+CAM_OPTIONS_CFG_FOV_FIELD.index = 11
+CAM_OPTIONS_CFG_FOV_FIELD.label = 2
+CAM_OPTIONS_CFG_FOV_FIELD.has_default_value = false
+CAM_OPTIONS_CFG_FOV_FIELD.default_value = 0.0
+CAM_OPTIONS_CFG_FOV_FIELD.type = 2
+CAM_OPTIONS_CFG_FOV_FIELD.cpp_type = 6
+
+CAM_OPTIONS_CFG.name = "cam_options_cfg"
+CAM_OPTIONS_CFG.full_name = ".ftcfg.cam_options_cfg"
+CAM_OPTIONS_CFG.nested_types = {}
+CAM_OPTIONS_CFG.enum_types = {}
+CAM_OPTIONS_CFG.fields = {CAM_OPTIONS_CFG_ID_FIELD, CAM_OPTIONS_CFG_MIN_PITCH_FIELD, CAM_OPTIONS_CFG_MAX_PITCH_FIELD, CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD, CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD, CAM_OPTIONS_CFG_DEF_YAW_FIELD, CAM_OPTIONS_CFG_DEF_PITCH_FIELD, CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD, CAM_OPTIONS_CFG_OFFSET_X_FIELD, CAM_OPTIONS_CFG_OFFSET_Y_FIELD, CAM_OPTIONS_CFG_OFFSET_Z_FIELD, CAM_OPTIONS_CFG_FOV_FIELD}
+CAM_OPTIONS_CFG.is_extendable = false
+CAM_OPTIONS_CFG.extensions = {}
+CAM_OPTIONS_CFGS_ITEMS_FIELD.name = "items"
+CAM_OPTIONS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.cam_options_cfgs.items"
+CAM_OPTIONS_CFGS_ITEMS_FIELD.number = 1
+CAM_OPTIONS_CFGS_ITEMS_FIELD.index = 0
+CAM_OPTIONS_CFGS_ITEMS_FIELD.label = 3
+CAM_OPTIONS_CFGS_ITEMS_FIELD.has_default_value = false
+CAM_OPTIONS_CFGS_ITEMS_FIELD.default_value = {}
+CAM_OPTIONS_CFGS_ITEMS_FIELD.message_type = CAM_OPTIONS_CFG
+CAM_OPTIONS_CFGS_ITEMS_FIELD.type = 11
+CAM_OPTIONS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CAM_OPTIONS_CFGS.name = "cam_options_cfgs"
+CAM_OPTIONS_CFGS.full_name = ".ftcfg.cam_options_cfgs"
+CAM_OPTIONS_CFGS.nested_types = {}
+CAM_OPTIONS_CFGS.enum_types = {}
+CAM_OPTIONS_CFGS.fields = {CAM_OPTIONS_CFGS_ITEMS_FIELD}
+CAM_OPTIONS_CFGS.is_extendable = false
+CAM_OPTIONS_CFGS.extensions = {}
+LEVEL_PACKAGE_CFG_ID_FIELD.name = "id"
+LEVEL_PACKAGE_CFG_ID_FIELD.full_name = ".ftcfg.level_package_cfg.id"
+LEVEL_PACKAGE_CFG_ID_FIELD.number = 1
+LEVEL_PACKAGE_CFG_ID_FIELD.index = 0
+LEVEL_PACKAGE_CFG_ID_FIELD.label = 2
+LEVEL_PACKAGE_CFG_ID_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_ID_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_ID_FIELD.type = 5
+LEVEL_PACKAGE_CFG_ID_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.name = "reach_grade"
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.full_name = ".ftcfg.level_package_cfg.reach_grade"
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.number = 2
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.index = 1
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.name = "reward_item1"
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item1"
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.number = 3
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.index = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.name = "reward_number1"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number1"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.number = 4
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.index = 3
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.name = "reward_item2"
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item2"
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.number = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.index = 4
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.name = "reward_number2"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number2"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.number = 6
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.index = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.name = "reward_item3"
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item3"
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.number = 7
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.index = 6
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.name = "reward_number3"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number3"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.number = 8
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.index = 7
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.name = "reward_item4"
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item4"
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.number = 9
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.index = 8
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.name = "reward_number4"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number4"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.number = 10
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.index = 9
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.name = "reward_item5"
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item5"
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.number = 11
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.index = 10
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.name = "reward_number5"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number5"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.number = 12
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.index = 11
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.name = "reward_item6"
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item6"
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.number = 13
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.index = 12
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.name = "reward_number6"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number6"
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.number = 14
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.index = 13
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.label = 2
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.default_value = 0
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.type = 5
+LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.cpp_type = 1
+
+LEVEL_PACKAGE_CFG.name = "level_package_cfg"
+LEVEL_PACKAGE_CFG.full_name = ".ftcfg.level_package_cfg"
+LEVEL_PACKAGE_CFG.nested_types = {}
+LEVEL_PACKAGE_CFG.enum_types = {}
+LEVEL_PACKAGE_CFG.fields = {LEVEL_PACKAGE_CFG_ID_FIELD, LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD}
+LEVEL_PACKAGE_CFG.is_extendable = false
+LEVEL_PACKAGE_CFG.extensions = {}
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.name = "items"
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.level_package_cfgs.items"
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.number = 1
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.index = 0
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.label = 3
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.has_default_value = false
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.default_value = {}
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.message_type = LEVEL_PACKAGE_CFG
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.type = 11
+LEVEL_PACKAGE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+LEVEL_PACKAGE_CFGS.name = "level_package_cfgs"
+LEVEL_PACKAGE_CFGS.full_name = ".ftcfg.level_package_cfgs"
+LEVEL_PACKAGE_CFGS.nested_types = {}
+LEVEL_PACKAGE_CFGS.enum_types = {}
+LEVEL_PACKAGE_CFGS.fields = {LEVEL_PACKAGE_CFGS_ITEMS_FIELD}
+LEVEL_PACKAGE_CFGS.is_extendable = false
+LEVEL_PACKAGE_CFGS.extensions = {}
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.name = "id"
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.id"
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.number = 1
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.index = 0
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.default_value = 0
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.type = 5
+BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.activity_type"
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.number = 2
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.index = 1
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.type = 14
+BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
+
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.name = "func_type"
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.func_type"
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.number = 3
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.index = 2
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.default_value = nil
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.type = 14
+BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.cpp_type = 8
+
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.name = "start_time"
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.start_time"
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.number = 4
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.index = 3
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.default_value = ""
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.type = 9
+BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.cpp_type = 9
+
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.name = "end_time"
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.end_time"
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.number = 5
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.index = 4
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.default_value = ""
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.type = 9
+BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.cpp_type = 9
+
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.level_limit"
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.number = 6
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.index = 5
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.default_value = 0
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.type = 5
+BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.name = "times"
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.times"
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.number = 7
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.index = 6
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.default_value = 0
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.type = 5
+BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.name = "week_loop"
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.week_loop"
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.number = 8
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.index = 7
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.label = 2
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.default_value = 0
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.type = 5
+BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_INFO_CFG.name = "battle_crystal_info_cfg"
+BATTLE_CRYSTAL_INFO_CFG.full_name = ".ftcfg.battle_crystal_info_cfg"
+BATTLE_CRYSTAL_INFO_CFG.nested_types = {}
+BATTLE_CRYSTAL_INFO_CFG.enum_types = {}
+BATTLE_CRYSTAL_INFO_CFG.fields = {BATTLE_CRYSTAL_INFO_CFG_ID_FIELD, BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD, BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD, BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD, BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD, BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD, BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD, BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD}
+BATTLE_CRYSTAL_INFO_CFG.is_extendable = false
+BATTLE_CRYSTAL_INFO_CFG.extensions = {}
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.name = "items"
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_crystal_info_cfgs.items"
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.number = 1
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.index = 0
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.label = 3
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.has_default_value = false
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.default_value = {}
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.message_type = BATTLE_CRYSTAL_INFO_CFG
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.type = 11
+BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BATTLE_CRYSTAL_INFO_CFGS.name = "battle_crystal_info_cfgs"
+BATTLE_CRYSTAL_INFO_CFGS.full_name = ".ftcfg.battle_crystal_info_cfgs"
+BATTLE_CRYSTAL_INFO_CFGS.nested_types = {}
+BATTLE_CRYSTAL_INFO_CFGS.enum_types = {}
+BATTLE_CRYSTAL_INFO_CFGS.fields = {BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD}
+BATTLE_CRYSTAL_INFO_CFGS.is_extendable = false
+BATTLE_CRYSTAL_INFO_CFGS.extensions = {}
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.name = "id"
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.id"
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.number = 1
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.index = 0
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.label = 2
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.default_value = 0
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.type = 5
+BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.red_num"
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.number = 2
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.index = 1
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.label = 2
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.type = 5
+BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.blue_num"
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.number = 3
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.index = 2
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
+BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.min_level"
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.number = 4
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.index = 3
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
+BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.max_level"
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.number = 5
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.index = 4
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
+BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
+
+BATTLE_CRYSTAL_ROOMS_CFG.name = "battle_crystal_rooms_cfg"
+BATTLE_CRYSTAL_ROOMS_CFG.full_name = ".ftcfg.battle_crystal_rooms_cfg"
+BATTLE_CRYSTAL_ROOMS_CFG.nested_types = {}
+BATTLE_CRYSTAL_ROOMS_CFG.enum_types = {}
+BATTLE_CRYSTAL_ROOMS_CFG.fields = {BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD}
+BATTLE_CRYSTAL_ROOMS_CFG.is_extendable = false
+BATTLE_CRYSTAL_ROOMS_CFG.extensions = {}
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.name = "items"
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfgs.items"
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.number = 1
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.index = 0
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.label = 3
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.message_type = BATTLE_CRYSTAL_ROOMS_CFG
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.type = 11
+BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BATTLE_CRYSTAL_ROOMS_CFGS.name = "battle_crystal_rooms_cfgs"
+BATTLE_CRYSTAL_ROOMS_CFGS.full_name = ".ftcfg.battle_crystal_rooms_cfgs"
+BATTLE_CRYSTAL_ROOMS_CFGS.nested_types = {}
+BATTLE_CRYSTAL_ROOMS_CFGS.enum_types = {}
+BATTLE_CRYSTAL_ROOMS_CFGS.fields = {BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD}
+BATTLE_CRYSTAL_ROOMS_CFGS.is_extendable = false
+BATTLE_CRYSTAL_ROOMS_CFGS.extensions = {}
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.name = "id"
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfg.id"
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.number = 1
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.index = 0
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.label = 2
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.has_default_value = false
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.default_value = 0
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.type = 5
+BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.cpp_type = 1
+
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.name = "crystal_num"
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfg.crystal_num"
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.number = 2
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.index = 1
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.label = 2
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.has_default_value = false
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.default_value = 0
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.type = 5
+BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.cpp_type = 1
+
+BATTLE_COLLECT_CRYSTAL_CFG.name = "battle_collect_crystal_cfg"
+BATTLE_COLLECT_CRYSTAL_CFG.full_name = ".ftcfg.battle_collect_crystal_cfg"
+BATTLE_COLLECT_CRYSTAL_CFG.nested_types = {}
+BATTLE_COLLECT_CRYSTAL_CFG.enum_types = {}
+BATTLE_COLLECT_CRYSTAL_CFG.fields = {BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD, BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD}
+BATTLE_COLLECT_CRYSTAL_CFG.is_extendable = false
+BATTLE_COLLECT_CRYSTAL_CFG.extensions = {}
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.name = "items"
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfgs.items"
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.number = 1
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.index = 0
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.label = 3
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.has_default_value = false
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.default_value = {}
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.message_type = BATTLE_COLLECT_CRYSTAL_CFG
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.type = 11
+BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BATTLE_COLLECT_CRYSTAL_CFGS.name = "battle_collect_crystal_cfgs"
+BATTLE_COLLECT_CRYSTAL_CFGS.full_name = ".ftcfg.battle_collect_crystal_cfgs"
+BATTLE_COLLECT_CRYSTAL_CFGS.nested_types = {}
+BATTLE_COLLECT_CRYSTAL_CFGS.enum_types = {}
+BATTLE_COLLECT_CRYSTAL_CFGS.fields = {BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD}
+BATTLE_COLLECT_CRYSTAL_CFGS.is_extendable = false
+BATTLE_COLLECT_CRYSTAL_CFGS.extensions = {}
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.name = "level_id"
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_level_cfg.level_id"
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.number = 1
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.index = 0
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.label = 2
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.has_default_value = false
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.default_value = 0
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.type = 5
+ELITE_LEVEL_CFG_LEVEL_ID_FIELD.cpp_type = 1
+
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.name = "level_min"
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.elite_level_cfg.level_min"
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.number = 2
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.index = 1
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.label = 2
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.has_default_value = false
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.default_value = 0
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.type = 5
+ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.cpp_type = 1
+
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.name = "level_max"
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.full_name = ".ftcfg.elite_level_cfg.level_max"
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.number = 3
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.index = 2
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.label = 2
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.has_default_value = false
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.default_value = 0
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.type = 5
+ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.cpp_type = 1
+
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.name = "fight_power1"
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.full_name = ".ftcfg.elite_level_cfg.fight_power1"
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.number = 4
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.index = 3
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.label = 2
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.has_default_value = false
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.default_value = 0
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.type = 5
+ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.cpp_type = 1
+
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.name = "fight_power2"
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.full_name = ".ftcfg.elite_level_cfg.fight_power2"
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.number = 5
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.index = 4
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.label = 2
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.has_default_value = false
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.default_value = 0
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.type = 5
+ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.cpp_type = 1
+
+ELITE_LEVEL_CFG.name = "elite_level_cfg"
+ELITE_LEVEL_CFG.full_name = ".ftcfg.elite_level_cfg"
+ELITE_LEVEL_CFG.nested_types = {}
+ELITE_LEVEL_CFG.enum_types = {}
+ELITE_LEVEL_CFG.fields = {ELITE_LEVEL_CFG_LEVEL_ID_FIELD, ELITE_LEVEL_CFG_LEVEL_MIN_FIELD, ELITE_LEVEL_CFG_LEVEL_MAX_FIELD, ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD, ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD}
+ELITE_LEVEL_CFG.is_extendable = false
+ELITE_LEVEL_CFG.extensions = {}
+ELITE_LEVEL_CFGS_ITEMS_FIELD.name = "items"
+ELITE_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_level_cfgs.items"
+ELITE_LEVEL_CFGS_ITEMS_FIELD.number = 1
+ELITE_LEVEL_CFGS_ITEMS_FIELD.index = 0
+ELITE_LEVEL_CFGS_ITEMS_FIELD.label = 3
+ELITE_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
+ELITE_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
+ELITE_LEVEL_CFGS_ITEMS_FIELD.message_type = ELITE_LEVEL_CFG
+ELITE_LEVEL_CFGS_ITEMS_FIELD.type = 11
+ELITE_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ELITE_LEVEL_CFGS.name = "elite_level_cfgs"
+ELITE_LEVEL_CFGS.full_name = ".ftcfg.elite_level_cfgs"
+ELITE_LEVEL_CFGS.nested_types = {}
+ELITE_LEVEL_CFGS.enum_types = {}
+ELITE_LEVEL_CFGS.fields = {ELITE_LEVEL_CFGS_ITEMS_FIELD}
+ELITE_LEVEL_CFGS.is_extendable = false
+ELITE_LEVEL_CFGS.extensions = {}
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.name = "level_id"
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.level_id"
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.number = 1
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.index = 0
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.name = "game_id"
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.game_id"
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.number = 2
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.index = 1
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.name = "map_id"
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.map_id"
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.number = 3
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.index = 2
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_NODE_FIELD.name = "node"
+ELITE_COMMON_INFO_CFG_NODE_FIELD.full_name = ".ftcfg.elite_common_info_cfg.node"
+ELITE_COMMON_INFO_CFG_NODE_FIELD.number = 4
+ELITE_COMMON_INFO_CFG_NODE_FIELD.index = 3
+ELITE_COMMON_INFO_CFG_NODE_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_NODE_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_NODE_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_NODE_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_NODE_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_TIME_FIELD.name = "time"
+ELITE_COMMON_INFO_CFG_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.time"
+ELITE_COMMON_INFO_CFG_TIME_FIELD.number = 5
+ELITE_COMMON_INFO_CFG_TIME_FIELD.index = 4
+ELITE_COMMON_INFO_CFG_TIME_FIELD.label = 3
+ELITE_COMMON_INFO_CFG_TIME_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_TIME_FIELD.default_value = {}
+ELITE_COMMON_INFO_CFG_TIME_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_TIME_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.name = "grade"
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.full_name = ".ftcfg.elite_common_info_cfg.grade"
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.number = 6
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.index = 5
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.label = 3
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.default_value = {}
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_GRADE_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.name = "reward_id"
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.reward_id"
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.number = 7
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.index = 6
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.label = 3
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.default_value = {}
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.name = "monster_level"
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.full_name = ".ftcfg.elite_common_info_cfg.monster_level"
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.number = 8
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.index = 7
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.name = "checkpoint_time"
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.checkpoint_time"
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.number = 9
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.index = 8
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.name = "open_time"
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.open_time"
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.number = 10
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.index = 9
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.label = 2
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.default_value = 0
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.type = 5
+ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.cpp_type = 1
+
+ELITE_COMMON_INFO_CFG.name = "elite_common_info_cfg"
+ELITE_COMMON_INFO_CFG.full_name = ".ftcfg.elite_common_info_cfg"
+ELITE_COMMON_INFO_CFG.nested_types = {}
+ELITE_COMMON_INFO_CFG.enum_types = {}
+ELITE_COMMON_INFO_CFG.fields = {ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD, ELITE_COMMON_INFO_CFG_GAME_ID_FIELD, ELITE_COMMON_INFO_CFG_MAP_ID_FIELD, ELITE_COMMON_INFO_CFG_NODE_FIELD, ELITE_COMMON_INFO_CFG_TIME_FIELD, ELITE_COMMON_INFO_CFG_GRADE_FIELD, ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD, ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD, ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD, ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD}
+ELITE_COMMON_INFO_CFG.is_extendable = false
+ELITE_COMMON_INFO_CFG.extensions = {}
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.name = "items"
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_common_info_cfgs.items"
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.number = 1
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.index = 0
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.label = 3
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.has_default_value = false
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.default_value = {}
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.message_type = ELITE_COMMON_INFO_CFG
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.type = 11
+ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ELITE_COMMON_INFO_CFGS.name = "elite_common_info_cfgs"
+ELITE_COMMON_INFO_CFGS.full_name = ".ftcfg.elite_common_info_cfgs"
+ELITE_COMMON_INFO_CFGS.nested_types = {}
+ELITE_COMMON_INFO_CFGS.enum_types = {}
+ELITE_COMMON_INFO_CFGS.fields = {ELITE_COMMON_INFO_CFGS_ITEMS_FIELD}
+ELITE_COMMON_INFO_CFGS.is_extendable = false
+ELITE_COMMON_INFO_CFGS.extensions = {}
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.name = "level_id"
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.level_id"
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.number = 1
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.index = 0
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.label = 2
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.type = 5
+ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.name = "game_id"
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.game_id"
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.number = 2
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.index = 1
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.label = 2
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.type = 5
+ELITE_HELL_INFO_CFG_GAME_ID_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.name = "map_id"
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.map_id"
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.number = 3
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.index = 2
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.label = 2
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.type = 5
+ELITE_HELL_INFO_CFG_MAP_ID_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_NODE_FIELD.name = "node"
+ELITE_HELL_INFO_CFG_NODE_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.node"
+ELITE_HELL_INFO_CFG_NODE_FIELD.number = 4
+ELITE_HELL_INFO_CFG_NODE_FIELD.index = 3
+ELITE_HELL_INFO_CFG_NODE_FIELD.label = 2
+ELITE_HELL_INFO_CFG_NODE_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_NODE_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_NODE_FIELD.type = 5
+ELITE_HELL_INFO_CFG_NODE_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_TIME_FIELD.name = "time"
+ELITE_HELL_INFO_CFG_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.time"
+ELITE_HELL_INFO_CFG_TIME_FIELD.number = 5
+ELITE_HELL_INFO_CFG_TIME_FIELD.index = 4
+ELITE_HELL_INFO_CFG_TIME_FIELD.label = 3
+ELITE_HELL_INFO_CFG_TIME_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_TIME_FIELD.default_value = {}
+ELITE_HELL_INFO_CFG_TIME_FIELD.type = 5
+ELITE_HELL_INFO_CFG_TIME_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_GRADE_FIELD.name = "grade"
+ELITE_HELL_INFO_CFG_GRADE_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.grade"
+ELITE_HELL_INFO_CFG_GRADE_FIELD.number = 6
+ELITE_HELL_INFO_CFG_GRADE_FIELD.index = 5
+ELITE_HELL_INFO_CFG_GRADE_FIELD.label = 3
+ELITE_HELL_INFO_CFG_GRADE_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_GRADE_FIELD.default_value = {}
+ELITE_HELL_INFO_CFG_GRADE_FIELD.type = 5
+ELITE_HELL_INFO_CFG_GRADE_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.name = "reward_id"
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.reward_id"
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.number = 7
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.index = 6
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.label = 3
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.default_value = {}
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.type = 5
+ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.name = "monster_level"
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.monster_level"
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.number = 8
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.index = 7
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.label = 2
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.type = 5
+ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.name = "checkpoint_time"
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.checkpoint_time"
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.number = 9
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.index = 8
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.label = 2
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.type = 5
+ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.name = "open_time"
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.open_time"
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.number = 10
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.index = 9
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.label = 2
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.default_value = 0
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.type = 5
+ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.cpp_type = 1
+
+ELITE_HELL_INFO_CFG.name = "elite_hell_info_cfg"
+ELITE_HELL_INFO_CFG.full_name = ".ftcfg.elite_hell_info_cfg"
+ELITE_HELL_INFO_CFG.nested_types = {}
+ELITE_HELL_INFO_CFG.enum_types = {}
+ELITE_HELL_INFO_CFG.fields = {ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD, ELITE_HELL_INFO_CFG_GAME_ID_FIELD, ELITE_HELL_INFO_CFG_MAP_ID_FIELD, ELITE_HELL_INFO_CFG_NODE_FIELD, ELITE_HELL_INFO_CFG_TIME_FIELD, ELITE_HELL_INFO_CFG_GRADE_FIELD, ELITE_HELL_INFO_CFG_REWARD_ID_FIELD, ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD, ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD, ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD}
+ELITE_HELL_INFO_CFG.is_extendable = false
+ELITE_HELL_INFO_CFG.extensions = {}
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.name = "items"
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_hell_info_cfgs.items"
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.number = 1
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.index = 0
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.label = 3
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.has_default_value = false
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.default_value = {}
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.message_type = ELITE_HELL_INFO_CFG
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.type = 11
+ELITE_HELL_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ELITE_HELL_INFO_CFGS.name = "elite_hell_info_cfgs"
+ELITE_HELL_INFO_CFGS.full_name = ".ftcfg.elite_hell_info_cfgs"
+ELITE_HELL_INFO_CFGS.nested_types = {}
+ELITE_HELL_INFO_CFGS.enum_types = {}
+ELITE_HELL_INFO_CFGS.fields = {ELITE_HELL_INFO_CFGS_ITEMS_FIELD}
+ELITE_HELL_INFO_CFGS.is_extendable = false
+ELITE_HELL_INFO_CFGS.extensions = {}
+ELITE_REWARD_CFG_ID_FIELD.name = "id"
+ELITE_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.elite_reward_cfg.id"
+ELITE_REWARD_CFG_ID_FIELD.number = 1
+ELITE_REWARD_CFG_ID_FIELD.index = 0
+ELITE_REWARD_CFG_ID_FIELD.label = 2
+ELITE_REWARD_CFG_ID_FIELD.has_default_value = false
+ELITE_REWARD_CFG_ID_FIELD.default_value = 0
+ELITE_REWARD_CFG_ID_FIELD.type = 5
+ELITE_REWARD_CFG_ID_FIELD.cpp_type = 1
+
+ELITE_REWARD_CFG_ITEM_ID_FIELD.name = "item_id"
+ELITE_REWARD_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.elite_reward_cfg.item_id"
+ELITE_REWARD_CFG_ITEM_ID_FIELD.number = 2
+ELITE_REWARD_CFG_ITEM_ID_FIELD.index = 1
+ELITE_REWARD_CFG_ITEM_ID_FIELD.label = 3
+ELITE_REWARD_CFG_ITEM_ID_FIELD.has_default_value = false
+ELITE_REWARD_CFG_ITEM_ID_FIELD.default_value = {}
+ELITE_REWARD_CFG_ITEM_ID_FIELD.type = 5
+ELITE_REWARD_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.name = "item_count"
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.elite_reward_cfg.item_count"
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.number = 3
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.index = 2
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.label = 3
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.has_default_value = false
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.default_value = {}
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.type = 5
+ELITE_REWARD_CFG_ITEM_COUNT_FIELD.cpp_type = 1
+
+ELITE_REWARD_CFG.name = "elite_reward_cfg"
+ELITE_REWARD_CFG.full_name = ".ftcfg.elite_reward_cfg"
+ELITE_REWARD_CFG.nested_types = {}
+ELITE_REWARD_CFG.enum_types = {}
+ELITE_REWARD_CFG.fields = {ELITE_REWARD_CFG_ID_FIELD, ELITE_REWARD_CFG_ITEM_ID_FIELD, ELITE_REWARD_CFG_ITEM_COUNT_FIELD}
+ELITE_REWARD_CFG.is_extendable = false
+ELITE_REWARD_CFG.extensions = {}
+ELITE_REWARD_CFGS_ITEMS_FIELD.name = "items"
+ELITE_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_reward_cfgs.items"
+ELITE_REWARD_CFGS_ITEMS_FIELD.number = 1
+ELITE_REWARD_CFGS_ITEMS_FIELD.index = 0
+ELITE_REWARD_CFGS_ITEMS_FIELD.label = 3
+ELITE_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
+ELITE_REWARD_CFGS_ITEMS_FIELD.default_value = {}
+ELITE_REWARD_CFGS_ITEMS_FIELD.message_type = ELITE_REWARD_CFG
+ELITE_REWARD_CFGS_ITEMS_FIELD.type = 11
+ELITE_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ELITE_REWARD_CFGS.name = "elite_reward_cfgs"
+ELITE_REWARD_CFGS.full_name = ".ftcfg.elite_reward_cfgs"
+ELITE_REWARD_CFGS.nested_types = {}
+ELITE_REWARD_CFGS.enum_types = {}
+ELITE_REWARD_CFGS.fields = {ELITE_REWARD_CFGS_ITEMS_FIELD}
+ELITE_REWARD_CFGS.is_extendable = false
+ELITE_REWARD_CFGS.extensions = {}
+SUBSYS_CFG_ID_FIELD.name = "id"
+SUBSYS_CFG_ID_FIELD.full_name = ".ftcfg.subsys_cfg.id"
+SUBSYS_CFG_ID_FIELD.number = 1
+SUBSYS_CFG_ID_FIELD.index = 0
+SUBSYS_CFG_ID_FIELD.label = 2
+SUBSYS_CFG_ID_FIELD.has_default_value = false
+SUBSYS_CFG_ID_FIELD.default_value = 0
+SUBSYS_CFG_ID_FIELD.type = 5
+SUBSYS_CFG_ID_FIELD.cpp_type = 1
+
+SUBSYS_CFG_NAME_FIELD.name = "name"
+SUBSYS_CFG_NAME_FIELD.full_name = ".ftcfg.subsys_cfg.name"
+SUBSYS_CFG_NAME_FIELD.number = 2
+SUBSYS_CFG_NAME_FIELD.index = 1
+SUBSYS_CFG_NAME_FIELD.label = 2
+SUBSYS_CFG_NAME_FIELD.has_default_value = false
+SUBSYS_CFG_NAME_FIELD.default_value = ""
+SUBSYS_CFG_NAME_FIELD.type = 9
+SUBSYS_CFG_NAME_FIELD.cpp_type = 9
+
+SUBSYS_CFG_TITLE_ID_FIELD.name = "title_id"
+SUBSYS_CFG_TITLE_ID_FIELD.full_name = ".ftcfg.subsys_cfg.title_id"
+SUBSYS_CFG_TITLE_ID_FIELD.number = 3
+SUBSYS_CFG_TITLE_ID_FIELD.index = 2
+SUBSYS_CFG_TITLE_ID_FIELD.label = 2
+SUBSYS_CFG_TITLE_ID_FIELD.has_default_value = false
+SUBSYS_CFG_TITLE_ID_FIELD.default_value = 0
+SUBSYS_CFG_TITLE_ID_FIELD.type = 5
+SUBSYS_CFG_TITLE_ID_FIELD.cpp_type = 1
+
+SUBSYS_CFG_DESC_ID_FIELD.name = "desc_id"
+SUBSYS_CFG_DESC_ID_FIELD.full_name = ".ftcfg.subsys_cfg.desc_id"
+SUBSYS_CFG_DESC_ID_FIELD.number = 4
+SUBSYS_CFG_DESC_ID_FIELD.index = 3
+SUBSYS_CFG_DESC_ID_FIELD.label = 2
+SUBSYS_CFG_DESC_ID_FIELD.has_default_value = false
+SUBSYS_CFG_DESC_ID_FIELD.default_value = 0
+SUBSYS_CFG_DESC_ID_FIELD.type = 5
+SUBSYS_CFG_DESC_ID_FIELD.cpp_type = 1
+
+SUBSYS_CFG_UI_STYLE_FIELD.name = "ui_style"
+SUBSYS_CFG_UI_STYLE_FIELD.full_name = ".ftcfg.subsys_cfg.ui_style"
+SUBSYS_CFG_UI_STYLE_FIELD.number = 5
+SUBSYS_CFG_UI_STYLE_FIELD.index = 4
+SUBSYS_CFG_UI_STYLE_FIELD.label = 2
+SUBSYS_CFG_UI_STYLE_FIELD.has_default_value = false
+SUBSYS_CFG_UI_STYLE_FIELD.default_value = 0
+SUBSYS_CFG_UI_STYLE_FIELD.type = 5
+SUBSYS_CFG_UI_STYLE_FIELD.cpp_type = 1
+
+SUBSYS_CFG_NOTES_FIELD.name = "notes"
+SUBSYS_CFG_NOTES_FIELD.full_name = ".ftcfg.subsys_cfg.notes"
+SUBSYS_CFG_NOTES_FIELD.number = 6
+SUBSYS_CFG_NOTES_FIELD.index = 5
+SUBSYS_CFG_NOTES_FIELD.label = 2
+SUBSYS_CFG_NOTES_FIELD.has_default_value = false
+SUBSYS_CFG_NOTES_FIELD.default_value = ""
+SUBSYS_CFG_NOTES_FIELD.type = 9
+SUBSYS_CFG_NOTES_FIELD.cpp_type = 9
+
+SUBSYS_CFG.name = "subsys_cfg"
+SUBSYS_CFG.full_name = ".ftcfg.subsys_cfg"
+SUBSYS_CFG.nested_types = {}
+SUBSYS_CFG.enum_types = {}
+SUBSYS_CFG.fields = {SUBSYS_CFG_ID_FIELD, SUBSYS_CFG_NAME_FIELD, SUBSYS_CFG_TITLE_ID_FIELD, SUBSYS_CFG_DESC_ID_FIELD, SUBSYS_CFG_UI_STYLE_FIELD, SUBSYS_CFG_NOTES_FIELD}
+SUBSYS_CFG.is_extendable = false
+SUBSYS_CFG.extensions = {}
+SUBSYS_CFGS_ITEMS_FIELD.name = "items"
+SUBSYS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.subsys_cfgs.items"
+SUBSYS_CFGS_ITEMS_FIELD.number = 1
+SUBSYS_CFGS_ITEMS_FIELD.index = 0
+SUBSYS_CFGS_ITEMS_FIELD.label = 3
+SUBSYS_CFGS_ITEMS_FIELD.has_default_value = false
+SUBSYS_CFGS_ITEMS_FIELD.default_value = {}
+SUBSYS_CFGS_ITEMS_FIELD.message_type = SUBSYS_CFG
+SUBSYS_CFGS_ITEMS_FIELD.type = 11
+SUBSYS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SUBSYS_CFGS.name = "subsys_cfgs"
+SUBSYS_CFGS.full_name = ".ftcfg.subsys_cfgs"
+SUBSYS_CFGS.nested_types = {}
+SUBSYS_CFGS.enum_types = {}
+SUBSYS_CFGS.fields = {SUBSYS_CFGS_ITEMS_FIELD}
+SUBSYS_CFGS.is_extendable = false
+SUBSYS_CFGS.extensions = {}
+BAG_ROUTINE_CFG_ID_FIELD.name = "id"
+BAG_ROUTINE_CFG_ID_FIELD.full_name = ".ftcfg.bag_routine_cfg.id"
+BAG_ROUTINE_CFG_ID_FIELD.number = 1
+BAG_ROUTINE_CFG_ID_FIELD.index = 0
+BAG_ROUTINE_CFG_ID_FIELD.label = 2
+BAG_ROUTINE_CFG_ID_FIELD.has_default_value = false
+BAG_ROUTINE_CFG_ID_FIELD.default_value = 0
+BAG_ROUTINE_CFG_ID_FIELD.type = 13
+BAG_ROUTINE_CFG_ID_FIELD.cpp_type = 3
+
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.name = "bag_type"
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_type"
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.number = 2
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.index = 1
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.label = 2
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.has_default_value = false
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.default_value = 0
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.type = 13
+BAG_ROUTINE_CFG_BAG_TYPE_FIELD.cpp_type = 3
+
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.name = "bag_initial"
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_initial"
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.number = 3
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.index = 2
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.label = 2
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.has_default_value = false
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.default_value = 0
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.type = 13
+BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.cpp_type = 3
+
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.name = "bag_max"
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_max"
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.number = 4
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.index = 3
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.label = 2
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.has_default_value = false
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.default_value = 0
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.type = 13
+BAG_ROUTINE_CFG_BAG_MAX_FIELD.cpp_type = 3
+
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.name = "bag_openlevel"
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_openlevel"
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.number = 5
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.index = 4
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.label = 2
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.has_default_value = false
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.default_value = 0
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.type = 5
+BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.cpp_type = 1
+
+BAG_ROUTINE_CFG.name = "bag_routine_cfg"
+BAG_ROUTINE_CFG.full_name = ".ftcfg.bag_routine_cfg"
+BAG_ROUTINE_CFG.nested_types = {}
+BAG_ROUTINE_CFG.enum_types = {}
+BAG_ROUTINE_CFG.fields = {BAG_ROUTINE_CFG_ID_FIELD, BAG_ROUTINE_CFG_BAG_TYPE_FIELD, BAG_ROUTINE_CFG_BAG_INITIAL_FIELD, BAG_ROUTINE_CFG_BAG_MAX_FIELD, BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD}
+BAG_ROUTINE_CFG.is_extendable = false
+BAG_ROUTINE_CFG.extensions = {}
+BAG_ROUTINE_CFGS_ITEMS_FIELD.name = "items"
+BAG_ROUTINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.bag_routine_cfgs.items"
+BAG_ROUTINE_CFGS_ITEMS_FIELD.number = 1
+BAG_ROUTINE_CFGS_ITEMS_FIELD.index = 0
+BAG_ROUTINE_CFGS_ITEMS_FIELD.label = 3
+BAG_ROUTINE_CFGS_ITEMS_FIELD.has_default_value = false
+BAG_ROUTINE_CFGS_ITEMS_FIELD.default_value = {}
+BAG_ROUTINE_CFGS_ITEMS_FIELD.message_type = BAG_ROUTINE_CFG
+BAG_ROUTINE_CFGS_ITEMS_FIELD.type = 11
+BAG_ROUTINE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+BAG_ROUTINE_CFGS.name = "bag_routine_cfgs"
+BAG_ROUTINE_CFGS.full_name = ".ftcfg.bag_routine_cfgs"
+BAG_ROUTINE_CFGS.nested_types = {}
+BAG_ROUTINE_CFGS.enum_types = {}
+BAG_ROUTINE_CFGS.fields = {BAG_ROUTINE_CFGS_ITEMS_FIELD}
+BAG_ROUTINE_CFGS.is_extendable = false
+BAG_ROUTINE_CFGS.extensions = {}
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.name = "unlock_count"
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.full_name = ".ftcfg.depot_unlock_cfg.unlock_count"
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.number = 1
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.index = 0
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.label = 2
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.has_default_value = false
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.default_value = 0
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.type = 13
+DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.cpp_type = 3
+
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.name = "currency_type"
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.full_name = ".ftcfg.depot_unlock_cfg.currency_type"
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.number = 2
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.index = 1
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.label = 2
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.has_default_value = false
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.default_value = 0
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.type = 13
+DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.cpp_type = 3
+
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.name = "currency_count"
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.full_name = ".ftcfg.depot_unlock_cfg.currency_count"
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.number = 3
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.index = 2
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.label = 2
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.has_default_value = false
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.default_value = 0
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.type = 5
+DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.cpp_type = 1
+
+DEPOT_UNLOCK_CFG.name = "depot_unlock_cfg"
+DEPOT_UNLOCK_CFG.full_name = ".ftcfg.depot_unlock_cfg"
+DEPOT_UNLOCK_CFG.nested_types = {}
+DEPOT_UNLOCK_CFG.enum_types = {}
+DEPOT_UNLOCK_CFG.fields = {DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD, DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD, DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD}
+DEPOT_UNLOCK_CFG.is_extendable = false
+DEPOT_UNLOCK_CFG.extensions = {}
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.name = "items"
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.depot_unlock_cfgs.items"
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.number = 1
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.index = 0
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.label = 3
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.has_default_value = false
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.default_value = {}
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.message_type = DEPOT_UNLOCK_CFG
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.type = 11
+DEPOT_UNLOCK_CFGS_ITEMS_FIELD.cpp_type = 10
+
+DEPOT_UNLOCK_CFGS.name = "depot_unlock_cfgs"
+DEPOT_UNLOCK_CFGS.full_name = ".ftcfg.depot_unlock_cfgs"
+DEPOT_UNLOCK_CFGS.nested_types = {}
+DEPOT_UNLOCK_CFGS.enum_types = {}
+DEPOT_UNLOCK_CFGS.fields = {DEPOT_UNLOCK_CFGS_ITEMS_FIELD}
+DEPOT_UNLOCK_CFGS.is_extendable = false
+DEPOT_UNLOCK_CFGS.extensions = {}
+ROLE_PARTS_CFG_ID_FIELD.name = "id"
+ROLE_PARTS_CFG_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.id"
+ROLE_PARTS_CFG_ID_FIELD.number = 1
+ROLE_PARTS_CFG_ID_FIELD.index = 0
+ROLE_PARTS_CFG_ID_FIELD.label = 2
+ROLE_PARTS_CFG_ID_FIELD.has_default_value = false
+ROLE_PARTS_CFG_ID_FIELD.default_value = 0
+ROLE_PARTS_CFG_ID_FIELD.type = 5
+ROLE_PARTS_CFG_ID_FIELD.cpp_type = 1
+
+ROLE_PARTS_CFG_NAME_ID_FIELD.name = "name_id"
+ROLE_PARTS_CFG_NAME_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.name_id"
+ROLE_PARTS_CFG_NAME_ID_FIELD.number = 2
+ROLE_PARTS_CFG_NAME_ID_FIELD.index = 1
+ROLE_PARTS_CFG_NAME_ID_FIELD.label = 2
+ROLE_PARTS_CFG_NAME_ID_FIELD.has_default_value = false
+ROLE_PARTS_CFG_NAME_ID_FIELD.default_value = 0
+ROLE_PARTS_CFG_NAME_ID_FIELD.type = 5
+ROLE_PARTS_CFG_NAME_ID_FIELD.cpp_type = 1
+
+ROLE_PARTS_CFG_SLOT_FIELD.name = "slot"
+ROLE_PARTS_CFG_SLOT_FIELD.full_name = ".ftcfg.role_parts_cfg.slot"
+ROLE_PARTS_CFG_SLOT_FIELD.number = 3
+ROLE_PARTS_CFG_SLOT_FIELD.index = 2
+ROLE_PARTS_CFG_SLOT_FIELD.label = 2
+ROLE_PARTS_CFG_SLOT_FIELD.has_default_value = false
+ROLE_PARTS_CFG_SLOT_FIELD.default_value = 0
+ROLE_PARTS_CFG_SLOT_FIELD.type = 5
+ROLE_PARTS_CFG_SLOT_FIELD.cpp_type = 1
+
+ROLE_PARTS_CFG_RES_ID_FIELD.name = "res_id"
+ROLE_PARTS_CFG_RES_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.res_id"
+ROLE_PARTS_CFG_RES_ID_FIELD.number = 4
+ROLE_PARTS_CFG_RES_ID_FIELD.index = 3
+ROLE_PARTS_CFG_RES_ID_FIELD.label = 2
+ROLE_PARTS_CFG_RES_ID_FIELD.has_default_value = false
+ROLE_PARTS_CFG_RES_ID_FIELD.default_value = 0
+ROLE_PARTS_CFG_RES_ID_FIELD.type = 5
+ROLE_PARTS_CFG_RES_ID_FIELD.cpp_type = 1
+
+ROLE_PARTS_CFG.name = "role_parts_cfg"
+ROLE_PARTS_CFG.full_name = ".ftcfg.role_parts_cfg"
+ROLE_PARTS_CFG.nested_types = {}
+ROLE_PARTS_CFG.enum_types = {}
+ROLE_PARTS_CFG.fields = {ROLE_PARTS_CFG_ID_FIELD, ROLE_PARTS_CFG_NAME_ID_FIELD, ROLE_PARTS_CFG_SLOT_FIELD, ROLE_PARTS_CFG_RES_ID_FIELD}
+ROLE_PARTS_CFG.is_extendable = false
+ROLE_PARTS_CFG.extensions = {}
+ROLE_PARTS_CFGS_ITEMS_FIELD.name = "items"
+ROLE_PARTS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.role_parts_cfgs.items"
+ROLE_PARTS_CFGS_ITEMS_FIELD.number = 1
+ROLE_PARTS_CFGS_ITEMS_FIELD.index = 0
+ROLE_PARTS_CFGS_ITEMS_FIELD.label = 3
+ROLE_PARTS_CFGS_ITEMS_FIELD.has_default_value = false
+ROLE_PARTS_CFGS_ITEMS_FIELD.default_value = {}
+ROLE_PARTS_CFGS_ITEMS_FIELD.message_type = ROLE_PARTS_CFG
+ROLE_PARTS_CFGS_ITEMS_FIELD.type = 11
+ROLE_PARTS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ROLE_PARTS_CFGS.name = "role_parts_cfgs"
+ROLE_PARTS_CFGS.full_name = ".ftcfg.role_parts_cfgs"
+ROLE_PARTS_CFGS.nested_types = {}
+ROLE_PARTS_CFGS.enum_types = {}
+ROLE_PARTS_CFGS.fields = {ROLE_PARTS_CFGS_ITEMS_FIELD}
+ROLE_PARTS_CFGS.is_extendable = false
+ROLE_PARTS_CFGS.extensions = {}
+SUPPRESS_CFG_SCENE_ID_FIELD.name = "scene_id"
+SUPPRESS_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.suppress_cfg.scene_id"
+SUPPRESS_CFG_SCENE_ID_FIELD.number = 1
+SUPPRESS_CFG_SCENE_ID_FIELD.index = 0
+SUPPRESS_CFG_SCENE_ID_FIELD.label = 2
+SUPPRESS_CFG_SCENE_ID_FIELD.has_default_value = false
+SUPPRESS_CFG_SCENE_ID_FIELD.default_value = 0
+SUPPRESS_CFG_SCENE_ID_FIELD.type = 5
+SUPPRESS_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+SUPPRESS_CFG_FIT_LVL_FIELD.name = "fit_lvl"
+SUPPRESS_CFG_FIT_LVL_FIELD.full_name = ".ftcfg.suppress_cfg.fit_lvl"
+SUPPRESS_CFG_FIT_LVL_FIELD.number = 2
+SUPPRESS_CFG_FIT_LVL_FIELD.index = 1
+SUPPRESS_CFG_FIT_LVL_FIELD.label = 3
+SUPPRESS_CFG_FIT_LVL_FIELD.has_default_value = false
+SUPPRESS_CFG_FIT_LVL_FIELD.default_value = {}
+SUPPRESS_CFG_FIT_LVL_FIELD.type = 5
+SUPPRESS_CFG_FIT_LVL_FIELD.cpp_type = 1
+
+SUPPRESS_CFG_GROUP_COUNT_FIELD.name = "group_count"
+SUPPRESS_CFG_GROUP_COUNT_FIELD.full_name = ".ftcfg.suppress_cfg.group_count"
+SUPPRESS_CFG_GROUP_COUNT_FIELD.number = 3
+SUPPRESS_CFG_GROUP_COUNT_FIELD.index = 2
+SUPPRESS_CFG_GROUP_COUNT_FIELD.label = 3
+SUPPRESS_CFG_GROUP_COUNT_FIELD.has_default_value = false
+SUPPRESS_CFG_GROUP_COUNT_FIELD.default_value = {}
+SUPPRESS_CFG_GROUP_COUNT_FIELD.type = 5
+SUPPRESS_CFG_GROUP_COUNT_FIELD.cpp_type = 1
+
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.name = "kill_bos_chest"
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.full_name = ".ftcfg.suppress_cfg.kill_bos_chest"
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.number = 4
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.index = 3
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.label = 3
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.has_default_value = false
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.default_value = {}
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.type = 5
+SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.cpp_type = 1
+
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.name = "boss_map_signsid"
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.full_name = ".ftcfg.suppress_cfg.boss_map_signsid"
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.number = 5
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.index = 4
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.label = 3
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.has_default_value = false
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.default_value = {}
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.type = 5
+SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.cpp_type = 1
+
+SUPPRESS_CFG.name = "suppress_cfg"
+SUPPRESS_CFG.full_name = ".ftcfg.suppress_cfg"
+SUPPRESS_CFG.nested_types = {}
+SUPPRESS_CFG.enum_types = {}
+SUPPRESS_CFG.fields = {SUPPRESS_CFG_SCENE_ID_FIELD, SUPPRESS_CFG_FIT_LVL_FIELD, SUPPRESS_CFG_GROUP_COUNT_FIELD, SUPPRESS_CFG_KILL_BOS_CHEST_FIELD, SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD}
+SUPPRESS_CFG.is_extendable = false
+SUPPRESS_CFG.extensions = {}
+SUPPRESS_CFGS_ITEMS_FIELD.name = "items"
+SUPPRESS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.suppress_cfgs.items"
+SUPPRESS_CFGS_ITEMS_FIELD.number = 1
+SUPPRESS_CFGS_ITEMS_FIELD.index = 0
+SUPPRESS_CFGS_ITEMS_FIELD.label = 3
+SUPPRESS_CFGS_ITEMS_FIELD.has_default_value = false
+SUPPRESS_CFGS_ITEMS_FIELD.default_value = {}
+SUPPRESS_CFGS_ITEMS_FIELD.message_type = SUPPRESS_CFG
+SUPPRESS_CFGS_ITEMS_FIELD.type = 11
+SUPPRESS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SUPPRESS_CFGS.name = "suppress_cfgs"
+SUPPRESS_CFGS.full_name = ".ftcfg.suppress_cfgs"
+SUPPRESS_CFGS.nested_types = {}
+SUPPRESS_CFGS.enum_types = {}
+SUPPRESS_CFGS.fields = {SUPPRESS_CFGS_ITEMS_FIELD}
+SUPPRESS_CFGS.is_extendable = false
+SUPPRESS_CFGS.extensions = {}
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.name = "scene_id"
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.suppress_group_cfg.scene_id"
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.number = 1
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.index = 0
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.label = 2
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.has_default_value = false
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.default_value = 0
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.type = 5
+SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.name = "refresh_num"
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.full_name = ".ftcfg.suppress_group_cfg.refresh_num"
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.number = 2
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.index = 1
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.label = 2
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.has_default_value = false
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.default_value = 0
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.type = 5
+SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.cpp_type = 1
+
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.name = "monster_map_signsid"
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.full_name = ".ftcfg.suppress_group_cfg.monster_map_signsid"
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.number = 3
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.index = 2
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.label = 3
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.has_default_value = false
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.default_value = {}
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.type = 5
+SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.cpp_type = 1
+
+SUPPRESS_GROUP_CFG.name = "suppress_group_cfg"
+SUPPRESS_GROUP_CFG.full_name = ".ftcfg.suppress_group_cfg"
+SUPPRESS_GROUP_CFG.nested_types = {}
+SUPPRESS_GROUP_CFG.enum_types = {}
+SUPPRESS_GROUP_CFG.fields = {SUPPRESS_GROUP_CFG_SCENE_ID_FIELD, SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD, SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD}
+SUPPRESS_GROUP_CFG.is_extendable = false
+SUPPRESS_GROUP_CFG.extensions = {}
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.name = "items"
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.suppress_group_cfgs.items"
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.number = 1
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.index = 0
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.label = 3
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.default_value = {}
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.message_type = SUPPRESS_GROUP_CFG
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.type = 11
+SUPPRESS_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SUPPRESS_GROUP_CFGS.name = "suppress_group_cfgs"
+SUPPRESS_GROUP_CFGS.full_name = ".ftcfg.suppress_group_cfgs"
+SUPPRESS_GROUP_CFGS.nested_types = {}
+SUPPRESS_GROUP_CFGS.enum_types = {}
+SUPPRESS_GROUP_CFGS.fields = {SUPPRESS_GROUP_CFGS_ITEMS_FIELD}
+SUPPRESS_GROUP_CFGS.is_extendable = false
+SUPPRESS_GROUP_CFGS.extensions = {}
+UI_CONTRIBUTION_CFG_ID_FIELD.name = "id"
+UI_CONTRIBUTION_CFG_ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.id"
+UI_CONTRIBUTION_CFG_ID_FIELD.number = 1
+UI_CONTRIBUTION_CFG_ID_FIELD.index = 0
+UI_CONTRIBUTION_CFG_ID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_ID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_ID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_ID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_ID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.name = "titleid"
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.titleid"
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.number = 2
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.index = 1
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_TITLEID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_TYPE_FIELD.name = "type"
+UI_CONTRIBUTION_CFG_TYPE_FIELD.full_name = ".ftcfg.ui_contribution_cfg.type"
+UI_CONTRIBUTION_CFG_TYPE_FIELD.number = 3
+UI_CONTRIBUTION_CFG_TYPE_FIELD.index = 2
+UI_CONTRIBUTION_CFG_TYPE_FIELD.label = 2
+UI_CONTRIBUTION_CFG_TYPE_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_TYPE_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_TYPE_FIELD.type = 5
+UI_CONTRIBUTION_CFG_TYPE_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.name = "imageid"
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.imageid"
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.number = 4
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.index = 3
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_IMAGEID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.name = "subtitle_1id"
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.subtitle_1id"
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.number = 5
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.index = 4
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.name = "subtitle_2id"
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.subtitle_2id"
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.number = 6
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.index = 5
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.name = "atlasid"
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.atlasid"
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.number = 7
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.index = 6
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_ATLASID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.name = "iconname"
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.full_name = ".ftcfg.ui_contribution_cfg.iconname"
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.number = 8
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.index = 7
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.label = 2
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.default_value = ""
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.type = 9
+UI_CONTRIBUTION_CFG_ICONNAME_FIELD.cpp_type = 9
+
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.name = "btntextid"
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.btntextid"
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.number = 9
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.index = 8
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.name = "tipsid"
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.tipsid"
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.number = 10
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.index = 9
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.label = 2
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.default_value = 0
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.type = 5
+UI_CONTRIBUTION_CFG_TIPSID_FIELD.cpp_type = 1
+
+UI_CONTRIBUTION_CFG.name = "ui_contribution_cfg"
+UI_CONTRIBUTION_CFG.full_name = ".ftcfg.ui_contribution_cfg"
+UI_CONTRIBUTION_CFG.nested_types = {}
+UI_CONTRIBUTION_CFG.enum_types = {}
+UI_CONTRIBUTION_CFG.fields = {UI_CONTRIBUTION_CFG_ID_FIELD, UI_CONTRIBUTION_CFG_TITLEID_FIELD, UI_CONTRIBUTION_CFG_TYPE_FIELD, UI_CONTRIBUTION_CFG_IMAGEID_FIELD, UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD, UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD, UI_CONTRIBUTION_CFG_ATLASID_FIELD, UI_CONTRIBUTION_CFG_ICONNAME_FIELD, UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD, UI_CONTRIBUTION_CFG_TIPSID_FIELD}
+UI_CONTRIBUTION_CFG.is_extendable = false
+UI_CONTRIBUTION_CFG.extensions = {}
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.name = "items"
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.ui_contribution_cfgs.items"
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.number = 1
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.index = 0
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.label = 3
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.has_default_value = false
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.default_value = {}
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.message_type = UI_CONTRIBUTION_CFG
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.type = 11
+UI_CONTRIBUTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+UI_CONTRIBUTION_CFGS.name = "ui_contribution_cfgs"
+UI_CONTRIBUTION_CFGS.full_name = ".ftcfg.ui_contribution_cfgs"
+UI_CONTRIBUTION_CFGS.nested_types = {}
+UI_CONTRIBUTION_CFGS.enum_types = {}
+UI_CONTRIBUTION_CFGS.fields = {UI_CONTRIBUTION_CFGS_ITEMS_FIELD}
+UI_CONTRIBUTION_CFGS.is_extendable = false
+UI_CONTRIBUTION_CFGS.extensions = {}
+ACTIVITY_DUNGEON_CFG_ID_FIELD.name = "id"
+ACTIVITY_DUNGEON_CFG_ID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.id"
+ACTIVITY_DUNGEON_CFG_ID_FIELD.number = 1
+ACTIVITY_DUNGEON_CFG_ID_FIELD.index = 0
+ACTIVITY_DUNGEON_CFG_ID_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_ID_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_ID_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_ID_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_ID_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.name = "resouce_name"
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.resouce_name"
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.number = 2
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.index = 1
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.default_value = ""
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.type = 9
+ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.cpp_type = 9
+
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.name = "type"
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.type"
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.number = 3
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.index = 2
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_TYPE_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.level_limit"
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.number = 4
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.index = 3
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.name = "map_id"
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_id"
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.number = 5
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.index = 4
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.name = "map_name"
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_name"
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.number = 6
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.index = 5
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.default_value = ""
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.type = 9
+ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.cpp_type = 9
+
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.name = "map_imgid"
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_imgid"
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.number = 7
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.index = 6
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.name = "recommend_fightvalue"
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.recommend_fightvalue"
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.number = 8
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.index = 7
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.name = "low_fightvalue"
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.low_fightvalue"
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.number = 9
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.index = 8
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.name = "advanced_item"
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.advanced_item"
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.number = 10
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.index = 9
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.type = 13
+ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.cpp_type = 3
+
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.name = "normal_item"
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.normal_item"
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.number = 11
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.index = 10
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.type = 13
+ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.cpp_type = 3
+
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.name = "times"
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.times"
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.number = 12
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.index = 11
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_TIMES_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.name = "isonlycaptain"
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.isonlycaptain"
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.number = 13
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.index = 12
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.name = "wait_time"
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.wait_time"
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.number = 14
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.index = 13
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.name = "alonerewards"
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.alonerewards"
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.number = 15
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.index = 14
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.label = 3
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.type = 13
+ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.cpp_type = 3
+
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.name = "teamrewards"
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.teamrewards"
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.number = 16
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.index = 15
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.label = 3
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.type = 13
+ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.cpp_type = 3
+
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.name = "max_timer"
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.max_timer"
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.number = 17
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.index = 16
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.name = "max_wave"
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.max_wave"
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.number = 18
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.index = 17
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.label = 2
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.default_value = 0
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.type = 5
+ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.cpp_type = 1
+
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.name = "money_posx"
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posx"
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.number = 19
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.index = 18
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.label = 3
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.type = 2
+ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.cpp_type = 6
+
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.name = "money_posy"
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posy"
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.number = 20
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.index = 19
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.label = 3
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.type = 2
+ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.cpp_type = 6
+
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.name = "money_posz"
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posz"
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.number = 21
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.index = 20
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.label = 3
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.type = 2
+ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.cpp_type = 6
+
+ACTIVITY_DUNGEON_CFG.name = "activity_dungeon_cfg"
+ACTIVITY_DUNGEON_CFG.full_name = ".ftcfg.activity_dungeon_cfg"
+ACTIVITY_DUNGEON_CFG.nested_types = {}
+ACTIVITY_DUNGEON_CFG.enum_types = {}
+ACTIVITY_DUNGEON_CFG.fields = {ACTIVITY_DUNGEON_CFG_ID_FIELD, ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD, ACTIVITY_DUNGEON_CFG_TYPE_FIELD, ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD, ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD, ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD, ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD, ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD, ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD, ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD, ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD, ACTIVITY_DUNGEON_CFG_TIMES_FIELD, ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD, ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD, ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD, ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD, ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD, ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD}
+ACTIVITY_DUNGEON_CFG.is_extendable = false
+ACTIVITY_DUNGEON_CFG.extensions = {}
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.name = "items"
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_dungeon_cfgs.items"
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.number = 1
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.index = 0
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.label = 3
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.message_type = ACTIVITY_DUNGEON_CFG
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.type = 11
+ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVITY_DUNGEON_CFGS.name = "activity_dungeon_cfgs"
+ACTIVITY_DUNGEON_CFGS.full_name = ".ftcfg.activity_dungeon_cfgs"
+ACTIVITY_DUNGEON_CFGS.nested_types = {}
+ACTIVITY_DUNGEON_CFGS.enum_types = {}
+ACTIVITY_DUNGEON_CFGS.fields = {ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD}
+ACTIVITY_DUNGEON_CFGS.is_extendable = false
+ACTIVITY_DUNGEON_CFGS.extensions = {}
+RESOURCE_COMPUND_CFG_ID_FIELD.name = "id"
+RESOURCE_COMPUND_CFG_ID_FIELD.full_name = ".ftcfg.resource_compund_cfg.id"
+RESOURCE_COMPUND_CFG_ID_FIELD.number = 1
+RESOURCE_COMPUND_CFG_ID_FIELD.index = 0
+RESOURCE_COMPUND_CFG_ID_FIELD.label = 2
+RESOURCE_COMPUND_CFG_ID_FIELD.has_default_value = false
+RESOURCE_COMPUND_CFG_ID_FIELD.default_value = 0
+RESOURCE_COMPUND_CFG_ID_FIELD.type = 13
+RESOURCE_COMPUND_CFG_ID_FIELD.cpp_type = 3
+
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.name = "need_item_num"
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.full_name = ".ftcfg.resource_compund_cfg.need_item_num"
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.number = 2
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.index = 1
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.label = 2
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.has_default_value = false
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.default_value = 0
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.type = 5
+RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.cpp_type = 1
+
+RESOURCE_COMPUND_CFG.name = "resource_compund_cfg"
+RESOURCE_COMPUND_CFG.full_name = ".ftcfg.resource_compund_cfg"
+RESOURCE_COMPUND_CFG.nested_types = {}
+RESOURCE_COMPUND_CFG.enum_types = {}
+RESOURCE_COMPUND_CFG.fields = {RESOURCE_COMPUND_CFG_ID_FIELD, RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD}
+RESOURCE_COMPUND_CFG.is_extendable = false
+RESOURCE_COMPUND_CFG.extensions = {}
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.name = "items"
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.full_name = ".ftcfg.resource_compund_cfgs.items"
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.number = 1
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.index = 0
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.label = 3
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.has_default_value = false
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.default_value = {}
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.message_type = RESOURCE_COMPUND_CFG
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.type = 11
+RESOURCE_COMPUND_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RESOURCE_COMPUND_CFGS.name = "resource_compund_cfgs"
+RESOURCE_COMPUND_CFGS.full_name = ".ftcfg.resource_compund_cfgs"
+RESOURCE_COMPUND_CFGS.nested_types = {}
+RESOURCE_COMPUND_CFGS.enum_types = {}
+RESOURCE_COMPUND_CFGS.fields = {RESOURCE_COMPUND_CFGS_ITEMS_FIELD}
+RESOURCE_COMPUND_CFGS.is_extendable = false
+RESOURCE_COMPUND_CFGS.extensions = {}
+ROUTE_MARK_CFG_ID_FIELD.name = "id"
+ROUTE_MARK_CFG_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.id"
+ROUTE_MARK_CFG_ID_FIELD.number = 1
+ROUTE_MARK_CFG_ID_FIELD.index = 0
+ROUTE_MARK_CFG_ID_FIELD.label = 2
+ROUTE_MARK_CFG_ID_FIELD.has_default_value = false
+ROUTE_MARK_CFG_ID_FIELD.default_value = 0
+ROUTE_MARK_CFG_ID_FIELD.type = 5
+ROUTE_MARK_CFG_ID_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG_MODEL_ID_FIELD.name = "model_id"
+ROUTE_MARK_CFG_MODEL_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.model_id"
+ROUTE_MARK_CFG_MODEL_ID_FIELD.number = 2
+ROUTE_MARK_CFG_MODEL_ID_FIELD.index = 1
+ROUTE_MARK_CFG_MODEL_ID_FIELD.label = 2
+ROUTE_MARK_CFG_MODEL_ID_FIELD.has_default_value = false
+ROUTE_MARK_CFG_MODEL_ID_FIELD.default_value = 0
+ROUTE_MARK_CFG_MODEL_ID_FIELD.type = 5
+ROUTE_MARK_CFG_MODEL_ID_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG_SCENE_ID_FIELD.name = "scene_id"
+ROUTE_MARK_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.scene_id"
+ROUTE_MARK_CFG_SCENE_ID_FIELD.number = 3
+ROUTE_MARK_CFG_SCENE_ID_FIELD.index = 2
+ROUTE_MARK_CFG_SCENE_ID_FIELD.label = 2
+ROUTE_MARK_CFG_SCENE_ID_FIELD.has_default_value = false
+ROUTE_MARK_CFG_SCENE_ID_FIELD.default_value = 0
+ROUTE_MARK_CFG_SCENE_ID_FIELD.type = 5
+ROUTE_MARK_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG_POS_X_FIELD.name = "pos_x"
+ROUTE_MARK_CFG_POS_X_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_x"
+ROUTE_MARK_CFG_POS_X_FIELD.number = 4
+ROUTE_MARK_CFG_POS_X_FIELD.index = 3
+ROUTE_MARK_CFG_POS_X_FIELD.label = 2
+ROUTE_MARK_CFG_POS_X_FIELD.has_default_value = false
+ROUTE_MARK_CFG_POS_X_FIELD.default_value = 0
+ROUTE_MARK_CFG_POS_X_FIELD.type = 5
+ROUTE_MARK_CFG_POS_X_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG_POS_Y_FIELD.name = "pos_y"
+ROUTE_MARK_CFG_POS_Y_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_y"
+ROUTE_MARK_CFG_POS_Y_FIELD.number = 5
+ROUTE_MARK_CFG_POS_Y_FIELD.index = 4
+ROUTE_MARK_CFG_POS_Y_FIELD.label = 2
+ROUTE_MARK_CFG_POS_Y_FIELD.has_default_value = false
+ROUTE_MARK_CFG_POS_Y_FIELD.default_value = 0
+ROUTE_MARK_CFG_POS_Y_FIELD.type = 5
+ROUTE_MARK_CFG_POS_Y_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG_POS_Z_FIELD.name = "pos_z"
+ROUTE_MARK_CFG_POS_Z_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_z"
+ROUTE_MARK_CFG_POS_Z_FIELD.number = 6
+ROUTE_MARK_CFG_POS_Z_FIELD.index = 5
+ROUTE_MARK_CFG_POS_Z_FIELD.label = 2
+ROUTE_MARK_CFG_POS_Z_FIELD.has_default_value = false
+ROUTE_MARK_CFG_POS_Z_FIELD.default_value = 0
+ROUTE_MARK_CFG_POS_Z_FIELD.type = 5
+ROUTE_MARK_CFG_POS_Z_FIELD.cpp_type = 1
+
+ROUTE_MARK_CFG.name = "route_mark_cfg"
+ROUTE_MARK_CFG.full_name = ".ftcfg.route_mark_cfg"
+ROUTE_MARK_CFG.nested_types = {}
+ROUTE_MARK_CFG.enum_types = {}
+ROUTE_MARK_CFG.fields = {ROUTE_MARK_CFG_ID_FIELD, ROUTE_MARK_CFG_MODEL_ID_FIELD, ROUTE_MARK_CFG_SCENE_ID_FIELD, ROUTE_MARK_CFG_POS_X_FIELD, ROUTE_MARK_CFG_POS_Y_FIELD, ROUTE_MARK_CFG_POS_Z_FIELD}
+ROUTE_MARK_CFG.is_extendable = false
+ROUTE_MARK_CFG.extensions = {}
+ROUTE_MARK_CFGS_ITEMS_FIELD.name = "items"
+ROUTE_MARK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.route_mark_cfgs.items"
+ROUTE_MARK_CFGS_ITEMS_FIELD.number = 1
+ROUTE_MARK_CFGS_ITEMS_FIELD.index = 0
+ROUTE_MARK_CFGS_ITEMS_FIELD.label = 3
+ROUTE_MARK_CFGS_ITEMS_FIELD.has_default_value = false
+ROUTE_MARK_CFGS_ITEMS_FIELD.default_value = {}
+ROUTE_MARK_CFGS_ITEMS_FIELD.message_type = ROUTE_MARK_CFG
+ROUTE_MARK_CFGS_ITEMS_FIELD.type = 11
+ROUTE_MARK_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ROUTE_MARK_CFGS.name = "route_mark_cfgs"
+ROUTE_MARK_CFGS.full_name = ".ftcfg.route_mark_cfgs"
+ROUTE_MARK_CFGS.nested_types = {}
+ROUTE_MARK_CFGS.enum_types = {}
+ROUTE_MARK_CFGS.fields = {ROUTE_MARK_CFGS_ITEMS_FIELD}
+ROUTE_MARK_CFGS.is_extendable = false
+ROUTE_MARK_CFGS.extensions = {}
+JUMP_CFG_ID_FIELD.name = "id"
+JUMP_CFG_ID_FIELD.full_name = ".ftcfg.jump_cfg.id"
+JUMP_CFG_ID_FIELD.number = 1
+JUMP_CFG_ID_FIELD.index = 0
+JUMP_CFG_ID_FIELD.label = 2
+JUMP_CFG_ID_FIELD.has_default_value = false
+JUMP_CFG_ID_FIELD.default_value = 0
+JUMP_CFG_ID_FIELD.type = 5
+JUMP_CFG_ID_FIELD.cpp_type = 1
+
+JUMP_CFG_WAY_POINTS_FIELD.name = "way_points"
+JUMP_CFG_WAY_POINTS_FIELD.full_name = ".ftcfg.jump_cfg.way_points"
+JUMP_CFG_WAY_POINTS_FIELD.number = 2
+JUMP_CFG_WAY_POINTS_FIELD.index = 1
+JUMP_CFG_WAY_POINTS_FIELD.label = 3
+JUMP_CFG_WAY_POINTS_FIELD.has_default_value = false
+JUMP_CFG_WAY_POINTS_FIELD.default_value = {}
+JUMP_CFG_WAY_POINTS_FIELD.type = 2
+JUMP_CFG_WAY_POINTS_FIELD.cpp_type = 6
+
+JUMP_CFG_JUMP_ACTION_ID_FIELD.name = "jump_action_id"
+JUMP_CFG_JUMP_ACTION_ID_FIELD.full_name = ".ftcfg.jump_cfg.jump_action_id"
+JUMP_CFG_JUMP_ACTION_ID_FIELD.number = 3
+JUMP_CFG_JUMP_ACTION_ID_FIELD.index = 2
+JUMP_CFG_JUMP_ACTION_ID_FIELD.label = 3
+JUMP_CFG_JUMP_ACTION_ID_FIELD.has_default_value = false
+JUMP_CFG_JUMP_ACTION_ID_FIELD.default_value = {}
+JUMP_CFG_JUMP_ACTION_ID_FIELD.type = 5
+JUMP_CFG_JUMP_ACTION_ID_FIELD.cpp_type = 1
+
+JUMP_CFG.name = "jump_cfg"
+JUMP_CFG.full_name = ".ftcfg.jump_cfg"
+JUMP_CFG.nested_types = {}
+JUMP_CFG.enum_types = {}
+JUMP_CFG.fields = {JUMP_CFG_ID_FIELD, JUMP_CFG_WAY_POINTS_FIELD, JUMP_CFG_JUMP_ACTION_ID_FIELD}
+JUMP_CFG.is_extendable = false
+JUMP_CFG.extensions = {}
+JUMP_CFGS_ITEMS_FIELD.name = "items"
+JUMP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jump_cfgs.items"
+JUMP_CFGS_ITEMS_FIELD.number = 1
+JUMP_CFGS_ITEMS_FIELD.index = 0
+JUMP_CFGS_ITEMS_FIELD.label = 3
+JUMP_CFGS_ITEMS_FIELD.has_default_value = false
+JUMP_CFGS_ITEMS_FIELD.default_value = {}
+JUMP_CFGS_ITEMS_FIELD.message_type = JUMP_CFG
+JUMP_CFGS_ITEMS_FIELD.type = 11
+JUMP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+JUMP_CFGS.name = "jump_cfgs"
+JUMP_CFGS.full_name = ".ftcfg.jump_cfgs"
+JUMP_CFGS.nested_types = {}
+JUMP_CFGS.enum_types = {}
+JUMP_CFGS.fields = {JUMP_CFGS_ITEMS_FIELD}
+JUMP_CFGS.is_extendable = false
+JUMP_CFGS.extensions = {}
+JUMP_ACTION_CFG_ID_FIELD.name = "id"
+JUMP_ACTION_CFG_ID_FIELD.full_name = ".ftcfg.jump_action_cfg.id"
+JUMP_ACTION_CFG_ID_FIELD.number = 1
+JUMP_ACTION_CFG_ID_FIELD.index = 0
+JUMP_ACTION_CFG_ID_FIELD.label = 2
+JUMP_ACTION_CFG_ID_FIELD.has_default_value = false
+JUMP_ACTION_CFG_ID_FIELD.default_value = 0
+JUMP_ACTION_CFG_ID_FIELD.type = 5
+JUMP_ACTION_CFG_ID_FIELD.cpp_type = 1
+
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.name = "animation_name"
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.full_name = ".ftcfg.jump_action_cfg.animation_name"
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.number = 2
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.index = 1
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.label = 2
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.has_default_value = false
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.default_value = ""
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.type = 9
+JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.cpp_type = 9
+
+JUMP_ACTION_CFG_SPLITES_FIELD.name = "splites"
+JUMP_ACTION_CFG_SPLITES_FIELD.full_name = ".ftcfg.jump_action_cfg.splites"
+JUMP_ACTION_CFG_SPLITES_FIELD.number = 3
+JUMP_ACTION_CFG_SPLITES_FIELD.index = 2
+JUMP_ACTION_CFG_SPLITES_FIELD.label = 3
+JUMP_ACTION_CFG_SPLITES_FIELD.has_default_value = false
+JUMP_ACTION_CFG_SPLITES_FIELD.default_value = {}
+JUMP_ACTION_CFG_SPLITES_FIELD.type = 2
+JUMP_ACTION_CFG_SPLITES_FIELD.cpp_type = 6
+
+JUMP_ACTION_CFG_DURATION_FIELD.name = "duration"
+JUMP_ACTION_CFG_DURATION_FIELD.full_name = ".ftcfg.jump_action_cfg.duration"
+JUMP_ACTION_CFG_DURATION_FIELD.number = 4
+JUMP_ACTION_CFG_DURATION_FIELD.index = 3
+JUMP_ACTION_CFG_DURATION_FIELD.label = 2
+JUMP_ACTION_CFG_DURATION_FIELD.has_default_value = false
+JUMP_ACTION_CFG_DURATION_FIELD.default_value = 0.0
+JUMP_ACTION_CFG_DURATION_FIELD.type = 2
+JUMP_ACTION_CFG_DURATION_FIELD.cpp_type = 6
+
+JUMP_ACTION_CFG.name = "jump_action_cfg"
+JUMP_ACTION_CFG.full_name = ".ftcfg.jump_action_cfg"
+JUMP_ACTION_CFG.nested_types = {}
+JUMP_ACTION_CFG.enum_types = {}
+JUMP_ACTION_CFG.fields = {JUMP_ACTION_CFG_ID_FIELD, JUMP_ACTION_CFG_ANIMATION_NAME_FIELD, JUMP_ACTION_CFG_SPLITES_FIELD, JUMP_ACTION_CFG_DURATION_FIELD}
+JUMP_ACTION_CFG.is_extendable = false
+JUMP_ACTION_CFG.extensions = {}
+JUMP_ACTION_CFGS_ITEMS_FIELD.name = "items"
+JUMP_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jump_action_cfgs.items"
+JUMP_ACTION_CFGS_ITEMS_FIELD.number = 1
+JUMP_ACTION_CFGS_ITEMS_FIELD.index = 0
+JUMP_ACTION_CFGS_ITEMS_FIELD.label = 3
+JUMP_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
+JUMP_ACTION_CFGS_ITEMS_FIELD.default_value = {}
+JUMP_ACTION_CFGS_ITEMS_FIELD.message_type = JUMP_ACTION_CFG
+JUMP_ACTION_CFGS_ITEMS_FIELD.type = 11
+JUMP_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+JUMP_ACTION_CFGS.name = "jump_action_cfgs"
+JUMP_ACTION_CFGS.full_name = ".ftcfg.jump_action_cfgs"
+JUMP_ACTION_CFGS.nested_types = {}
+JUMP_ACTION_CFGS.enum_types = {}
+JUMP_ACTION_CFGS.fields = {JUMP_ACTION_CFGS_ITEMS_FIELD}
+JUMP_ACTION_CFGS.is_extendable = false
+JUMP_ACTION_CFGS.extensions = {}
+MAGIC_ATT_CFG_ID_FIELD.name = "id"
+MAGIC_ATT_CFG_ID_FIELD.full_name = ".ftcfg.magic_att_cfg.id"
+MAGIC_ATT_CFG_ID_FIELD.number = 1
+MAGIC_ATT_CFG_ID_FIELD.index = 0
+MAGIC_ATT_CFG_ID_FIELD.label = 2
+MAGIC_ATT_CFG_ID_FIELD.has_default_value = false
+MAGIC_ATT_CFG_ID_FIELD.default_value = 0
+MAGIC_ATT_CFG_ID_FIELD.type = 5
+MAGIC_ATT_CFG_ID_FIELD.cpp_type = 1
+
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.magic_type"
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.number = 2
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.index = 1
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.label = 2
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.has_default_value = false
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.default_value = 0
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.type = 5
+MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.cpp_type = 1
+
+MAGIC_ATT_CFG_RANGE_FIELD.name = "range"
+MAGIC_ATT_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_att_cfg.range"
+MAGIC_ATT_CFG_RANGE_FIELD.number = 3
+MAGIC_ATT_CFG_RANGE_FIELD.index = 2
+MAGIC_ATT_CFG_RANGE_FIELD.label = 2
+MAGIC_ATT_CFG_RANGE_FIELD.has_default_value = false
+MAGIC_ATT_CFG_RANGE_FIELD.default_value = 0
+MAGIC_ATT_CFG_RANGE_FIELD.type = 5
+MAGIC_ATT_CFG_RANGE_FIELD.cpp_type = 1
+
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.name = "prop_type"
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.prop_type"
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.number = 4
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.index = 3
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.label = 3
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.has_default_value = false
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.default_value = {}
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.type = 14
+MAGIC_ATT_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.name = "att_type"
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.att_type"
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.number = 5
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.index = 4
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.label = 3
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.has_default_value = false
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.default_value = {}
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.type = 14
+MAGIC_ATT_CFG_ATT_TYPE_FIELD.cpp_type = 8
+
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.name = "att_value"
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_att_cfg.att_value"
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.number = 6
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.index = 5
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.label = 3
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.has_default_value = false
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.default_value = {}
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.type = 2
+MAGIC_ATT_CFG_ATT_VALUE_FIELD.cpp_type = 6
+
+MAGIC_ATT_CFG_NAME_FIELD.name = "name"
+MAGIC_ATT_CFG_NAME_FIELD.full_name = ".ftcfg.magic_att_cfg.name"
+MAGIC_ATT_CFG_NAME_FIELD.number = 7
+MAGIC_ATT_CFG_NAME_FIELD.index = 6
+MAGIC_ATT_CFG_NAME_FIELD.label = 2
+MAGIC_ATT_CFG_NAME_FIELD.has_default_value = false
+MAGIC_ATT_CFG_NAME_FIELD.default_value = ""
+MAGIC_ATT_CFG_NAME_FIELD.type = 9
+MAGIC_ATT_CFG_NAME_FIELD.cpp_type = 9
+
+MAGIC_ATT_CFG_DESC_FIELD.name = "desc"
+MAGIC_ATT_CFG_DESC_FIELD.full_name = ".ftcfg.magic_att_cfg.desc"
+MAGIC_ATT_CFG_DESC_FIELD.number = 8
+MAGIC_ATT_CFG_DESC_FIELD.index = 7
+MAGIC_ATT_CFG_DESC_FIELD.label = 2
+MAGIC_ATT_CFG_DESC_FIELD.has_default_value = false
+MAGIC_ATT_CFG_DESC_FIELD.default_value = ""
+MAGIC_ATT_CFG_DESC_FIELD.type = 9
+MAGIC_ATT_CFG_DESC_FIELD.cpp_type = 9
+
+MAGIC_ATT_CFG_ICON_FIELD.name = "icon"
+MAGIC_ATT_CFG_ICON_FIELD.full_name = ".ftcfg.magic_att_cfg.icon"
+MAGIC_ATT_CFG_ICON_FIELD.number = 9
+MAGIC_ATT_CFG_ICON_FIELD.index = 8
+MAGIC_ATT_CFG_ICON_FIELD.label = 2
+MAGIC_ATT_CFG_ICON_FIELD.has_default_value = false
+MAGIC_ATT_CFG_ICON_FIELD.default_value = 0
+MAGIC_ATT_CFG_ICON_FIELD.type = 5
+MAGIC_ATT_CFG_ICON_FIELD.cpp_type = 1
+
+MAGIC_ATT_CFG.name = "magic_att_cfg"
+MAGIC_ATT_CFG.full_name = ".ftcfg.magic_att_cfg"
+MAGIC_ATT_CFG.nested_types = {}
+MAGIC_ATT_CFG.enum_types = {}
+MAGIC_ATT_CFG.fields = {MAGIC_ATT_CFG_ID_FIELD, MAGIC_ATT_CFG_MAGIC_TYPE_FIELD, MAGIC_ATT_CFG_RANGE_FIELD, MAGIC_ATT_CFG_PROP_TYPE_FIELD, MAGIC_ATT_CFG_ATT_TYPE_FIELD, MAGIC_ATT_CFG_ATT_VALUE_FIELD, MAGIC_ATT_CFG_NAME_FIELD, MAGIC_ATT_CFG_DESC_FIELD, MAGIC_ATT_CFG_ICON_FIELD}
+MAGIC_ATT_CFG.is_extendable = false
+MAGIC_ATT_CFG.extensions = {}
+MAGIC_ATT_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_ATT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_att_cfgs.items"
+MAGIC_ATT_CFGS_ITEMS_FIELD.number = 1
+MAGIC_ATT_CFGS_ITEMS_FIELD.index = 0
+MAGIC_ATT_CFGS_ITEMS_FIELD.label = 3
+MAGIC_ATT_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_ATT_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_ATT_CFGS_ITEMS_FIELD.message_type = MAGIC_ATT_CFG
+MAGIC_ATT_CFGS_ITEMS_FIELD.type = 11
+MAGIC_ATT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_ATT_CFGS.name = "magic_att_cfgs"
+MAGIC_ATT_CFGS.full_name = ".ftcfg.magic_att_cfgs"
+MAGIC_ATT_CFGS.nested_types = {}
+MAGIC_ATT_CFGS.enum_types = {}
+MAGIC_ATT_CFGS.fields = {MAGIC_ATT_CFGS_ITEMS_FIELD}
+MAGIC_ATT_CFGS.is_extendable = false
+MAGIC_ATT_CFGS.extensions = {}
+MAGIC_OSTIOLE_CFG_ID_FIELD.name = "id"
+MAGIC_OSTIOLE_CFG_ID_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.id"
+MAGIC_OSTIOLE_CFG_ID_FIELD.number = 1
+MAGIC_OSTIOLE_CFG_ID_FIELD.index = 0
+MAGIC_OSTIOLE_CFG_ID_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_ID_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_ID_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_ID_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_ID_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_POS_FIELD.name = "pos"
+MAGIC_OSTIOLE_CFG_POS_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.pos"
+MAGIC_OSTIOLE_CFG_POS_FIELD.number = 2
+MAGIC_OSTIOLE_CFG_POS_FIELD.index = 1
+MAGIC_OSTIOLE_CFG_POS_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_POS_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_POS_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_POS_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_POS_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.magic_type"
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.number = 3
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.index = 2
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.name = "player_level"
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.player_level"
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.number = 4
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.index = 3
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.name = "range"
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.range"
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.number = 5
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.index = 4
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_RANGE_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.name = "item_id"
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.item_id"
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.number = 6
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.index = 5
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.name = "item_num"
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.item_num"
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.number = 7
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.index = 6
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.name = "max_beatific"
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.max_beatific"
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.number = 8
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.index = 7
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.label = 2
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.default_value = 0
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.type = 5
+MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.cpp_type = 1
+
+MAGIC_OSTIOLE_CFG.name = "magic_ostiole_cfg"
+MAGIC_OSTIOLE_CFG.full_name = ".ftcfg.magic_ostiole_cfg"
+MAGIC_OSTIOLE_CFG.nested_types = {}
+MAGIC_OSTIOLE_CFG.enum_types = {}
+MAGIC_OSTIOLE_CFG.fields = {MAGIC_OSTIOLE_CFG_ID_FIELD, MAGIC_OSTIOLE_CFG_POS_FIELD, MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD, MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD, MAGIC_OSTIOLE_CFG_RANGE_FIELD, MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD, MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD, MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD}
+MAGIC_OSTIOLE_CFG.is_extendable = false
+MAGIC_OSTIOLE_CFG.extensions = {}
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_ostiole_cfgs.items"
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.number = 1
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.index = 0
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.label = 3
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.message_type = MAGIC_OSTIOLE_CFG
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.type = 11
+MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_OSTIOLE_CFGS.name = "magic_ostiole_cfgs"
+MAGIC_OSTIOLE_CFGS.full_name = ".ftcfg.magic_ostiole_cfgs"
+MAGIC_OSTIOLE_CFGS.nested_types = {}
+MAGIC_OSTIOLE_CFGS.enum_types = {}
+MAGIC_OSTIOLE_CFGS.fields = {MAGIC_OSTIOLE_CFGS_ITEMS_FIELD}
+MAGIC_OSTIOLE_CFGS.is_extendable = false
+MAGIC_OSTIOLE_CFGS.extensions = {}
+MAGIC_LEVELUP_CFG_ID_FIELD.name = "id"
+MAGIC_LEVELUP_CFG_ID_FIELD.full_name = ".ftcfg.magic_levelup_cfg.id"
+MAGIC_LEVELUP_CFG_ID_FIELD.number = 1
+MAGIC_LEVELUP_CFG_ID_FIELD.index = 0
+MAGIC_LEVELUP_CFG_ID_FIELD.label = 2
+MAGIC_LEVELUP_CFG_ID_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_ID_FIELD.default_value = 0
+MAGIC_LEVELUP_CFG_ID_FIELD.type = 5
+MAGIC_LEVELUP_CFG_ID_FIELD.cpp_type = 1
+
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.name = "magic_level"
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.full_name = ".ftcfg.magic_levelup_cfg.magic_level"
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.number = 2
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.index = 1
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.label = 2
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.default_value = 0
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.type = 5
+MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.cpp_type = 1
+
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.name = "prop_type"
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.prop_type"
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.number = 3
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.index = 2
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.label = 3
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.default_value = {}
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.type = 14
+MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.name = "att_type"
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.att_type"
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.number = 4
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.index = 3
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.label = 3
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.default_value = {}
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.type = 14
+MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.cpp_type = 8
+
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.name = "att_value"
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.att_value"
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.number = 5
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.index = 4
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.label = 3
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.default_value = {}
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.type = 2
+MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.cpp_type = 6
+
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.name = "item_id"
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_levelup_cfg.item_id"
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.number = 6
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.index = 5
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.label = 2
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.default_value = 0
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.type = 5
+MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.cpp_type = 1
+
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.name = "item_num"
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_levelup_cfg.item_num"
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.number = 7
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.index = 6
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.label = 2
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.default_value = 0
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.type = 5
+MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.cpp_type = 1
+
+MAGIC_LEVELUP_CFG_RANGE_FIELD.name = "range"
+MAGIC_LEVELUP_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.range"
+MAGIC_LEVELUP_CFG_RANGE_FIELD.number = 8
+MAGIC_LEVELUP_CFG_RANGE_FIELD.index = 7
+MAGIC_LEVELUP_CFG_RANGE_FIELD.label = 2
+MAGIC_LEVELUP_CFG_RANGE_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFG_RANGE_FIELD.default_value = 0
+MAGIC_LEVELUP_CFG_RANGE_FIELD.type = 5
+MAGIC_LEVELUP_CFG_RANGE_FIELD.cpp_type = 1
+
+MAGIC_LEVELUP_CFG.name = "magic_levelup_cfg"
+MAGIC_LEVELUP_CFG.full_name = ".ftcfg.magic_levelup_cfg"
+MAGIC_LEVELUP_CFG.nested_types = {}
+MAGIC_LEVELUP_CFG.enum_types = {}
+MAGIC_LEVELUP_CFG.fields = {MAGIC_LEVELUP_CFG_ID_FIELD, MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD, MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD, MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD, MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD, MAGIC_LEVELUP_CFG_ITEM_ID_FIELD, MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD, MAGIC_LEVELUP_CFG_RANGE_FIELD}
+MAGIC_LEVELUP_CFG.is_extendable = false
+MAGIC_LEVELUP_CFG.extensions = {}
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_levelup_cfgs.items"
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.number = 1
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.index = 0
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.label = 3
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.message_type = MAGIC_LEVELUP_CFG
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.type = 11
+MAGIC_LEVELUP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_LEVELUP_CFGS.name = "magic_levelup_cfgs"
+MAGIC_LEVELUP_CFGS.full_name = ".ftcfg.magic_levelup_cfgs"
+MAGIC_LEVELUP_CFGS.nested_types = {}
+MAGIC_LEVELUP_CFGS.enum_types = {}
+MAGIC_LEVELUP_CFGS.fields = {MAGIC_LEVELUP_CFGS_ITEMS_FIELD}
+MAGIC_LEVELUP_CFGS.is_extendable = false
+MAGIC_LEVELUP_CFGS.extensions = {}
+MAGIC_COMBINATION_CFG_ID_FIELD.name = "id"
+MAGIC_COMBINATION_CFG_ID_FIELD.full_name = ".ftcfg.magic_combination_cfg.id"
+MAGIC_COMBINATION_CFG_ID_FIELD.number = 1
+MAGIC_COMBINATION_CFG_ID_FIELD.index = 0
+MAGIC_COMBINATION_CFG_ID_FIELD.label = 2
+MAGIC_COMBINATION_CFG_ID_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_ID_FIELD.default_value = 0
+MAGIC_COMBINATION_CFG_ID_FIELD.type = 5
+MAGIC_COMBINATION_CFG_ID_FIELD.cpp_type = 1
+
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.name = "combination_level"
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.full_name = ".ftcfg.magic_combination_cfg.combination_level"
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.number = 2
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.index = 1
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.label = 2
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.default_value = 0
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.type = 5
+MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.cpp_type = 1
+
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.name = "magic_ids"
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.full_name = ".ftcfg.magic_combination_cfg.magic_ids"
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.number = 3
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.index = 2
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.label = 3
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.default_value = {}
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.type = 5
+MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.cpp_type = 1
+
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.name = "magic_num"
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.full_name = ".ftcfg.magic_combination_cfg.magic_num"
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.number = 4
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.index = 3
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.label = 3
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.default_value = {}
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.type = 5
+MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.cpp_type = 1
+
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.name = "prop_type"
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_combination_cfg.prop_type"
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.number = 5
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.index = 4
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.label = 2
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.default_value = nil
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.type = 14
+MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.name = "att_type"
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_combination_cfg.att_type"
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.number = 6
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.index = 5
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.label = 2
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.default_value = nil
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.type = 14
+MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.cpp_type = 8
+
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.name = "att_value"
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_combination_cfg.att_value"
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.number = 7
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.index = 6
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.label = 2
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.default_value = 0.0
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.type = 2
+MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.cpp_type = 6
+
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.name = "mg_name"
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.full_name = ".ftcfg.magic_combination_cfg.mg_name"
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.number = 8
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.index = 7
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.label = 2
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.default_value = ""
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.type = 9
+MAGIC_COMBINATION_CFG_MG_NAME_FIELD.cpp_type = 9
+
+MAGIC_COMBINATION_CFG.name = "magic_combination_cfg"
+MAGIC_COMBINATION_CFG.full_name = ".ftcfg.magic_combination_cfg"
+MAGIC_COMBINATION_CFG.nested_types = {}
+MAGIC_COMBINATION_CFG.enum_types = {}
+MAGIC_COMBINATION_CFG.fields = {MAGIC_COMBINATION_CFG_ID_FIELD, MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD, MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD, MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD, MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD, MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD, MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD, MAGIC_COMBINATION_CFG_MG_NAME_FIELD}
+MAGIC_COMBINATION_CFG.is_extendable = false
+MAGIC_COMBINATION_CFG.extensions = {}
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_combination_cfgs.items"
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.number = 1
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.index = 0
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.label = 3
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.message_type = MAGIC_COMBINATION_CFG
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.type = 11
+MAGIC_COMBINATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_COMBINATION_CFGS.name = "magic_combination_cfgs"
+MAGIC_COMBINATION_CFGS.full_name = ".ftcfg.magic_combination_cfgs"
+MAGIC_COMBINATION_CFGS.nested_types = {}
+MAGIC_COMBINATION_CFGS.enum_types = {}
+MAGIC_COMBINATION_CFGS.fields = {MAGIC_COMBINATION_CFGS_ITEMS_FIELD}
+MAGIC_COMBINATION_CFGS.is_extendable = false
+MAGIC_COMBINATION_CFGS.extensions = {}
+CONVOY_BIAOCHE_CFG_ID_FIELD.name = "id"
+CONVOY_BIAOCHE_CFG_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.id"
+CONVOY_BIAOCHE_CFG_ID_FIELD.number = 1
+CONVOY_BIAOCHE_CFG_ID_FIELD.index = 0
+CONVOY_BIAOCHE_CFG_ID_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_ID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_ID_FIELD.default_value = 0
+CONVOY_BIAOCHE_CFG_ID_FIELD.type = 5
+CONVOY_BIAOCHE_CFG_ID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.activity_type"
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.number = 2
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.index = 1
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.type = 14
+CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
+
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.name = "first_start_time"
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.first_start_time"
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.number = 3
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.index = 2
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.default_value = ""
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.type = 9
+CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.cpp_type = 9
+
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.name = "first_end_time"
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.first_end_time"
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.number = 4
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.index = 3
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.default_value = ""
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.type = 9
+CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.cpp_type = 9
+
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.name = "second_start_time"
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.second_start_time"
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.number = 5
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.index = 4
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.default_value = ""
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.type = 9
+CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.cpp_type = 9
+
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.name = "second_end_time"
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.second_end_time"
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.number = 6
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.index = 5
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.default_value = ""
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.type = 9
+CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.cpp_type = 9
+
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.name = "scene_id"
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.scene_id"
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.number = 7
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.index = 6
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.label = 3
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.default_value = {}
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.type = 5
+CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.name = "week_loop"
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.week_loop"
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.number = 8
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.index = 7
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.label = 2
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.default_value = 0
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.type = 5
+CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_CFG.name = "convoy_biaoche_cfg"
+CONVOY_BIAOCHE_CFG.full_name = ".ftcfg.convoy_biaoche_cfg"
+CONVOY_BIAOCHE_CFG.nested_types = {}
+CONVOY_BIAOCHE_CFG.enum_types = {}
+CONVOY_BIAOCHE_CFG.fields = {CONVOY_BIAOCHE_CFG_ID_FIELD, CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD, CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD, CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD, CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD, CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD, CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD, CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD}
+CONVOY_BIAOCHE_CFG.is_extendable = false
+CONVOY_BIAOCHE_CFG.extensions = {}
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.name = "items"
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.convoy_biaoche_cfgs.items"
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.number = 1
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.index = 0
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.label = 3
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.has_default_value = false
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.default_value = {}
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.message_type = CONVOY_BIAOCHE_CFG
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.type = 11
+CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CONVOY_BIAOCHE_CFGS.name = "convoy_biaoche_cfgs"
+CONVOY_BIAOCHE_CFGS.full_name = ".ftcfg.convoy_biaoche_cfgs"
+CONVOY_BIAOCHE_CFGS.nested_types = {}
+CONVOY_BIAOCHE_CFGS.enum_types = {}
+CONVOY_BIAOCHE_CFGS.fields = {CONVOY_BIAOCHE_CFGS_ITEMS_FIELD}
+CONVOY_BIAOCHE_CFGS.is_extendable = false
+CONVOY_BIAOCHE_CFGS.extensions = {}
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.name = "id"
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.id"
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.number = 1
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.index = 0
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.name = "level_min"
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.level_min"
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.number = 2
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.index = 1
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.name = "level_max"
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.level_max"
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.number = 3
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.index = 2
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.name = "mission_rate"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_rate"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.number = 4
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.index = 3
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.name = "person_mission_id"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_mission_id"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.number = 5
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.index = 4
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.name = "team_mission_id"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_mission_id"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.number = 6
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.index = 5
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.name = "mission_npc_distance"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_npc_distance"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.number = 7
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.index = 6
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.default_value = 0.0
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.type = 1
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.cpp_type = 5
+
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.name = "mission_need_itemid"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_need_itemid"
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.number = 8
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.index = 7
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.name = "escort_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.escort_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.number = 9
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.index = 8
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.default_value = 0.0
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.type = 1
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.cpp_type = 5
+
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.name = "escort_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.escort_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.number = 10
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.index = 9
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.name = "ride_limit"
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.ride_limit"
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.number = 11
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.index = 10
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.default_value = 0.0
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.type = 1
+CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.cpp_type = 5
+
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.name = "node_stay_time"
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.node_stay_time"
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.number = 12
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.index = 11
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.name = "same_camp_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.same_camp_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.number = 13
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.index = 12
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.default_value = 0.0
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.type = 1
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.cpp_type = 5
+
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.name = "same_camp_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.same_camp_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.number = 14
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.index = 13
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.name = "robber_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.robber_distance_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.number = 15
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.index = 14
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.default_value = 0.0
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.type = 1
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.cpp_type = 5
+
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.name = "robber_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.robber_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.number = 16
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.index = 15
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.name = "complete_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.complete_time_limit"
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.number = 17
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.index = 16
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.name = "person_camp_reward"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_camp_reward"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.number = 18
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.index = 17
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.name = "person_enemy_reward"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_enemy_reward"
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.number = 19
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.index = 18
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.name = "team_camp_reward"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_camp_reward"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.number = 20
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.index = 19
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.name = "team_enemy_reward"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_enemy_reward"
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.number = 21
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.index = 20
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.name = "gold_limit"
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.gold_limit"
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.number = 22
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.index = 21
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.name = "silver_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.silver_limit"
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.number = 23
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.index = 22
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.label = 2
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.default_value = 0
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.name = "free_pos"
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.free_pos"
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.number = 24
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.index = 23
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.name = "alliance_pos"
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.alliance_pos"
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.number = 25
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.index = 24
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.type = 5
+CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.cpp_type = 1
+
+CONVOY_BIAOCHE_SCENE_CFG.name = "convoy_biaoche_scene_cfg"
+CONVOY_BIAOCHE_SCENE_CFG.full_name = ".ftcfg.convoy_biaoche_scene_cfg"
+CONVOY_BIAOCHE_SCENE_CFG.nested_types = {}
+CONVOY_BIAOCHE_SCENE_CFG.enum_types = {}
+CONVOY_BIAOCHE_SCENE_CFG.fields = {CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD, CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD}
+CONVOY_BIAOCHE_SCENE_CFG.is_extendable = false
+CONVOY_BIAOCHE_SCENE_CFG.extensions = {}
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.name = "items"
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfgs.items"
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.number = 1
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.index = 0
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.label = 3
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.has_default_value = false
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.default_value = {}
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.message_type = CONVOY_BIAOCHE_SCENE_CFG
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.type = 11
+CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CONVOY_BIAOCHE_SCENE_CFGS.name = "convoy_biaoche_scene_cfgs"
+CONVOY_BIAOCHE_SCENE_CFGS.full_name = ".ftcfg.convoy_biaoche_scene_cfgs"
+CONVOY_BIAOCHE_SCENE_CFGS.nested_types = {}
+CONVOY_BIAOCHE_SCENE_CFGS.enum_types = {}
+CONVOY_BIAOCHE_SCENE_CFGS.fields = {CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD}
+CONVOY_BIAOCHE_SCENE_CFGS.is_extendable = false
+CONVOY_BIAOCHE_SCENE_CFGS.extensions = {}
+ACTIVITY_INFO_CFG_ID_FIELD.name = "id"
+ACTIVITY_INFO_CFG_ID_FIELD.full_name = ".ftcfg.activity_info_cfg.id"
+ACTIVITY_INFO_CFG_ID_FIELD.number = 1
+ACTIVITY_INFO_CFG_ID_FIELD.index = 0
+ACTIVITY_INFO_CFG_ID_FIELD.label = 2
+ACTIVITY_INFO_CFG_ID_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_ID_FIELD.default_value = 0
+ACTIVITY_INFO_CFG_ID_FIELD.type = 5
+ACTIVITY_INFO_CFG_ID_FIELD.cpp_type = 1
+
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.activity_info_cfg.activity_type"
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.number = 2
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.index = 1
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.label = 2
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.type = 14
+ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
+
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.name = "func_type"
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.full_name = ".ftcfg.activity_info_cfg.func_type"
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.number = 3
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.index = 2
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.label = 2
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.default_value = nil
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.type = 14
+ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.cpp_type = 8
+
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.name = "entry_time"
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.entry_time"
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.number = 4
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.index = 3
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.label = 2
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.default_value = ""
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.type = 9
+ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.name = "entry_end_time"
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.entry_end_time"
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.number = 5
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.index = 4
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.label = 2
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.default_value = ""
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.type = 9
+ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_INFO_CFG_START_TIME_FIELD.name = "start_time"
+ACTIVITY_INFO_CFG_START_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.start_time"
+ACTIVITY_INFO_CFG_START_TIME_FIELD.number = 6
+ACTIVITY_INFO_CFG_START_TIME_FIELD.index = 5
+ACTIVITY_INFO_CFG_START_TIME_FIELD.label = 2
+ACTIVITY_INFO_CFG_START_TIME_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_START_TIME_FIELD.default_value = ""
+ACTIVITY_INFO_CFG_START_TIME_FIELD.type = 9
+ACTIVITY_INFO_CFG_START_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_INFO_CFG_END_TIME_FIELD.name = "end_time"
+ACTIVITY_INFO_CFG_END_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.end_time"
+ACTIVITY_INFO_CFG_END_TIME_FIELD.number = 7
+ACTIVITY_INFO_CFG_END_TIME_FIELD.index = 6
+ACTIVITY_INFO_CFG_END_TIME_FIELD.label = 2
+ACTIVITY_INFO_CFG_END_TIME_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_END_TIME_FIELD.default_value = ""
+ACTIVITY_INFO_CFG_END_TIME_FIELD.type = 9
+ACTIVITY_INFO_CFG_END_TIME_FIELD.cpp_type = 9
+
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.activity_info_cfg.level_limit"
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.number = 8
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.index = 7
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.label = 2
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.default_value = 0
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.type = 5
+ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
+
+ACTIVITY_INFO_CFG_TIMES_FIELD.name = "times"
+ACTIVITY_INFO_CFG_TIMES_FIELD.full_name = ".ftcfg.activity_info_cfg.times"
+ACTIVITY_INFO_CFG_TIMES_FIELD.number = 9
+ACTIVITY_INFO_CFG_TIMES_FIELD.index = 8
+ACTIVITY_INFO_CFG_TIMES_FIELD.label = 2
+ACTIVITY_INFO_CFG_TIMES_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_TIMES_FIELD.default_value = 0
+ACTIVITY_INFO_CFG_TIMES_FIELD.type = 5
+ACTIVITY_INFO_CFG_TIMES_FIELD.cpp_type = 1
+
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.name = "week_loop"
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.activity_info_cfg.week_loop"
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.number = 10
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.index = 9
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.label = 2
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.has_default_value = false
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.default_value = 0
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.type = 5
+ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.cpp_type = 1
+
+ACTIVITY_INFO_CFG.name = "activity_info_cfg"
+ACTIVITY_INFO_CFG.full_name = ".ftcfg.activity_info_cfg"
+ACTIVITY_INFO_CFG.nested_types = {}
+ACTIVITY_INFO_CFG.enum_types = {}
+ACTIVITY_INFO_CFG.fields = {ACTIVITY_INFO_CFG_ID_FIELD, ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD, ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD, ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD, ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD, ACTIVITY_INFO_CFG_START_TIME_FIELD, ACTIVITY_INFO_CFG_END_TIME_FIELD, ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD, ACTIVITY_INFO_CFG_TIMES_FIELD, ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD}
+ACTIVITY_INFO_CFG.is_extendable = false
+ACTIVITY_INFO_CFG.extensions = {}
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.name = "items"
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_info_cfgs.items"
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.number = 1
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.index = 0
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.label = 3
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.message_type = ACTIVITY_INFO_CFG
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.type = 11
+ACTIVITY_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVITY_INFO_CFGS.name = "activity_info_cfgs"
+ACTIVITY_INFO_CFGS.full_name = ".ftcfg.activity_info_cfgs"
+ACTIVITY_INFO_CFGS.nested_types = {}
+ACTIVITY_INFO_CFGS.enum_types = {}
+ACTIVITY_INFO_CFGS.fields = {ACTIVITY_INFO_CFGS_ITEMS_FIELD}
+ACTIVITY_INFO_CFGS.is_extendable = false
+ACTIVITY_INFO_CFGS.extensions = {}
+ACTIVITY_ROOMS_CFG_ID_FIELD.name = "id"
+ACTIVITY_ROOMS_CFG_ID_FIELD.full_name = ".ftcfg.activity_rooms_cfg.id"
+ACTIVITY_ROOMS_CFG_ID_FIELD.number = 1
+ACTIVITY_ROOMS_CFG_ID_FIELD.index = 0
+ACTIVITY_ROOMS_CFG_ID_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_ID_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_ID_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_ID_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_ID_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.name = "area_id"
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.full_name = ".ftcfg.activity_rooms_cfg.area_id"
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.number = 2
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.index = 1
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.activity_rooms_cfg.red_num"
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.number = 3
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.index = 2
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.activity_rooms_cfg.blue_num"
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.number = 4
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.index = 3
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.activity_rooms_cfg.min_level"
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.number = 5
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.index = 4
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.activity_rooms_cfg.max_level"
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.number = 6
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.index = 5
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
+ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
+
+ACTIVITY_ROOMS_CFG.name = "activity_rooms_cfg"
+ACTIVITY_ROOMS_CFG.full_name = ".ftcfg.activity_rooms_cfg"
+ACTIVITY_ROOMS_CFG.nested_types = {}
+ACTIVITY_ROOMS_CFG.enum_types = {}
+ACTIVITY_ROOMS_CFG.fields = {ACTIVITY_ROOMS_CFG_ID_FIELD, ACTIVITY_ROOMS_CFG_AREA_ID_FIELD, ACTIVITY_ROOMS_CFG_RED_NUM_FIELD, ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD, ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD, ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD}
+ACTIVITY_ROOMS_CFG.is_extendable = false
+ACTIVITY_ROOMS_CFG.extensions = {}
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.name = "items"
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_rooms_cfgs.items"
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.number = 1
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.index = 0
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.label = 3
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.message_type = ACTIVITY_ROOMS_CFG
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.type = 11
+ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ACTIVITY_ROOMS_CFGS.name = "activity_rooms_cfgs"
+ACTIVITY_ROOMS_CFGS.full_name = ".ftcfg.activity_rooms_cfgs"
+ACTIVITY_ROOMS_CFGS.nested_types = {}
+ACTIVITY_ROOMS_CFGS.enum_types = {}
+ACTIVITY_ROOMS_CFGS.fields = {ACTIVITY_ROOMS_CFGS_ITEMS_FIELD}
+ACTIVITY_ROOMS_CFGS.is_extendable = false
+ACTIVITY_ROOMS_CFGS.extensions = {}
+GROW_POINT_CFG_ID_FIELD.name = "id"
+GROW_POINT_CFG_ID_FIELD.full_name = ".ftcfg.grow_point_cfg.id"
+GROW_POINT_CFG_ID_FIELD.number = 1
+GROW_POINT_CFG_ID_FIELD.index = 0
+GROW_POINT_CFG_ID_FIELD.label = 2
+GROW_POINT_CFG_ID_FIELD.has_default_value = false
+GROW_POINT_CFG_ID_FIELD.default_value = 0
+GROW_POINT_CFG_ID_FIELD.type = 5
+GROW_POINT_CFG_ID_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_NAME_FIELD.name = "name"
+GROW_POINT_CFG_NAME_FIELD.full_name = ".ftcfg.grow_point_cfg.name"
+GROW_POINT_CFG_NAME_FIELD.number = 2
+GROW_POINT_CFG_NAME_FIELD.index = 1
+GROW_POINT_CFG_NAME_FIELD.label = 2
+GROW_POINT_CFG_NAME_FIELD.has_default_value = false
+GROW_POINT_CFG_NAME_FIELD.default_value = 0
+GROW_POINT_CFG_NAME_FIELD.type = 5
+GROW_POINT_CFG_NAME_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_MODULE_FIELD.name = "module"
+GROW_POINT_CFG_MODULE_FIELD.full_name = ".ftcfg.grow_point_cfg.module"
+GROW_POINT_CFG_MODULE_FIELD.number = 3
+GROW_POINT_CFG_MODULE_FIELD.index = 2
+GROW_POINT_CFG_MODULE_FIELD.label = 2
+GROW_POINT_CFG_MODULE_FIELD.has_default_value = false
+GROW_POINT_CFG_MODULE_FIELD.default_value = 0
+GROW_POINT_CFG_MODULE_FIELD.type = 5
+GROW_POINT_CFG_MODULE_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_DESC_FIELD.name = "desc"
+GROW_POINT_CFG_DESC_FIELD.full_name = ".ftcfg.grow_point_cfg.desc"
+GROW_POINT_CFG_DESC_FIELD.number = 4
+GROW_POINT_CFG_DESC_FIELD.index = 3
+GROW_POINT_CFG_DESC_FIELD.label = 2
+GROW_POINT_CFG_DESC_FIELD.has_default_value = false
+GROW_POINT_CFG_DESC_FIELD.default_value = 0
+GROW_POINT_CFG_DESC_FIELD.type = 5
+GROW_POINT_CFG_DESC_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_MAP_ID_FIELD.name = "map_id"
+GROW_POINT_CFG_MAP_ID_FIELD.full_name = ".ftcfg.grow_point_cfg.map_id"
+GROW_POINT_CFG_MAP_ID_FIELD.number = 5
+GROW_POINT_CFG_MAP_ID_FIELD.index = 4
+GROW_POINT_CFG_MAP_ID_FIELD.label = 2
+GROW_POINT_CFG_MAP_ID_FIELD.has_default_value = false
+GROW_POINT_CFG_MAP_ID_FIELD.default_value = 0
+GROW_POINT_CFG_MAP_ID_FIELD.type = 5
+GROW_POINT_CFG_MAP_ID_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_POS_X_FIELD.name = "pos_x"
+GROW_POINT_CFG_POS_X_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_x"
+GROW_POINT_CFG_POS_X_FIELD.number = 6
+GROW_POINT_CFG_POS_X_FIELD.index = 5
+GROW_POINT_CFG_POS_X_FIELD.label = 2
+GROW_POINT_CFG_POS_X_FIELD.has_default_value = false
+GROW_POINT_CFG_POS_X_FIELD.default_value = 0.0
+GROW_POINT_CFG_POS_X_FIELD.type = 2
+GROW_POINT_CFG_POS_X_FIELD.cpp_type = 6
+
+GROW_POINT_CFG_POS_Y_FIELD.name = "pos_y"
+GROW_POINT_CFG_POS_Y_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_y"
+GROW_POINT_CFG_POS_Y_FIELD.number = 7
+GROW_POINT_CFG_POS_Y_FIELD.index = 6
+GROW_POINT_CFG_POS_Y_FIELD.label = 2
+GROW_POINT_CFG_POS_Y_FIELD.has_default_value = false
+GROW_POINT_CFG_POS_Y_FIELD.default_value = 0.0
+GROW_POINT_CFG_POS_Y_FIELD.type = 2
+GROW_POINT_CFG_POS_Y_FIELD.cpp_type = 6
+
+GROW_POINT_CFG_POS_Z_FIELD.name = "pos_z"
+GROW_POINT_CFG_POS_Z_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_z"
+GROW_POINT_CFG_POS_Z_FIELD.number = 8
+GROW_POINT_CFG_POS_Z_FIELD.index = 7
+GROW_POINT_CFG_POS_Z_FIELD.label = 2
+GROW_POINT_CFG_POS_Z_FIELD.has_default_value = false
+GROW_POINT_CFG_POS_Z_FIELD.default_value = 0.0
+GROW_POINT_CFG_POS_Z_FIELD.type = 2
+GROW_POINT_CFG_POS_Z_FIELD.cpp_type = 6
+
+GROW_POINT_CFG_MAX_COUNT_FIELD.name = "max_count"
+GROW_POINT_CFG_MAX_COUNT_FIELD.full_name = ".ftcfg.grow_point_cfg.max_count"
+GROW_POINT_CFG_MAX_COUNT_FIELD.number = 9
+GROW_POINT_CFG_MAX_COUNT_FIELD.index = 8
+GROW_POINT_CFG_MAX_COUNT_FIELD.label = 2
+GROW_POINT_CFG_MAX_COUNT_FIELD.has_default_value = false
+GROW_POINT_CFG_MAX_COUNT_FIELD.default_value = 0
+GROW_POINT_CFG_MAX_COUNT_FIELD.type = 5
+GROW_POINT_CFG_MAX_COUNT_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_SHOW_COUNT_FIELD.name = "show_count"
+GROW_POINT_CFG_SHOW_COUNT_FIELD.full_name = ".ftcfg.grow_point_cfg.show_count"
+GROW_POINT_CFG_SHOW_COUNT_FIELD.number = 10
+GROW_POINT_CFG_SHOW_COUNT_FIELD.index = 9
+GROW_POINT_CFG_SHOW_COUNT_FIELD.label = 2
+GROW_POINT_CFG_SHOW_COUNT_FIELD.has_default_value = false
+GROW_POINT_CFG_SHOW_COUNT_FIELD.default_value = false
+GROW_POINT_CFG_SHOW_COUNT_FIELD.type = 8
+GROW_POINT_CFG_SHOW_COUNT_FIELD.cpp_type = 7
+
+GROW_POINT_CFG_QUALITY_FIELD.name = "quality"
+GROW_POINT_CFG_QUALITY_FIELD.full_name = ".ftcfg.grow_point_cfg.quality"
+GROW_POINT_CFG_QUALITY_FIELD.number = 11
+GROW_POINT_CFG_QUALITY_FIELD.index = 10
+GROW_POINT_CFG_QUALITY_FIELD.label = 2
+GROW_POINT_CFG_QUALITY_FIELD.has_default_value = false
+GROW_POINT_CFG_QUALITY_FIELD.default_value = 0
+GROW_POINT_CFG_QUALITY_FIELD.type = 5
+GROW_POINT_CFG_QUALITY_FIELD.cpp_type = 1
+
+GROW_POINT_CFG_SKILL_INDEX_FIELD.name = "skill_index"
+GROW_POINT_CFG_SKILL_INDEX_FIELD.full_name = ".ftcfg.grow_point_cfg.skill_index"
+GROW_POINT_CFG_SKILL_INDEX_FIELD.number = 12
+GROW_POINT_CFG_SKILL_INDEX_FIELD.index = 11
+GROW_POINT_CFG_SKILL_INDEX_FIELD.label = 2
+GROW_POINT_CFG_SKILL_INDEX_FIELD.has_default_value = false
+GROW_POINT_CFG_SKILL_INDEX_FIELD.default_value = 0
+GROW_POINT_CFG_SKILL_INDEX_FIELD.type = 5
+GROW_POINT_CFG_SKILL_INDEX_FIELD.cpp_type = 1
+
+GROW_POINT_CFG.name = "grow_point_cfg"
+GROW_POINT_CFG.full_name = ".ftcfg.grow_point_cfg"
+GROW_POINT_CFG.nested_types = {}
+GROW_POINT_CFG.enum_types = {}
+GROW_POINT_CFG.fields = {GROW_POINT_CFG_ID_FIELD, GROW_POINT_CFG_NAME_FIELD, GROW_POINT_CFG_MODULE_FIELD, GROW_POINT_CFG_DESC_FIELD, GROW_POINT_CFG_MAP_ID_FIELD, GROW_POINT_CFG_POS_X_FIELD, GROW_POINT_CFG_POS_Y_FIELD, GROW_POINT_CFG_POS_Z_FIELD, GROW_POINT_CFG_MAX_COUNT_FIELD, GROW_POINT_CFG_SHOW_COUNT_FIELD, GROW_POINT_CFG_QUALITY_FIELD, GROW_POINT_CFG_SKILL_INDEX_FIELD}
+GROW_POINT_CFG.is_extendable = false
+GROW_POINT_CFG.extensions = {}
+GROW_POINT_CFGS_ITEMS_FIELD.name = "items"
+GROW_POINT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.grow_point_cfgs.items"
+GROW_POINT_CFGS_ITEMS_FIELD.number = 1
+GROW_POINT_CFGS_ITEMS_FIELD.index = 0
+GROW_POINT_CFGS_ITEMS_FIELD.label = 3
+GROW_POINT_CFGS_ITEMS_FIELD.has_default_value = false
+GROW_POINT_CFGS_ITEMS_FIELD.default_value = {}
+GROW_POINT_CFGS_ITEMS_FIELD.message_type = GROW_POINT_CFG
+GROW_POINT_CFGS_ITEMS_FIELD.type = 11
+GROW_POINT_CFGS_ITEMS_FIELD.cpp_type = 10
+
+GROW_POINT_CFGS.name = "grow_point_cfgs"
+GROW_POINT_CFGS.full_name = ".ftcfg.grow_point_cfgs"
+GROW_POINT_CFGS.nested_types = {}
+GROW_POINT_CFGS.enum_types = {}
+GROW_POINT_CFGS.fields = {GROW_POINT_CFGS_ITEMS_FIELD}
+GROW_POINT_CFGS.is_extendable = false
+GROW_POINT_CFGS.extensions = {}
+ERRORCODE_NOTIFY_CFG_ID_FIELD.name = "id"
+ERRORCODE_NOTIFY_CFG_ID_FIELD.full_name = ".ftcfg.errorcode_notify_cfg.id"
+ERRORCODE_NOTIFY_CFG_ID_FIELD.number = 1
+ERRORCODE_NOTIFY_CFG_ID_FIELD.index = 0
+ERRORCODE_NOTIFY_CFG_ID_FIELD.label = 2
+ERRORCODE_NOTIFY_CFG_ID_FIELD.has_default_value = false
+ERRORCODE_NOTIFY_CFG_ID_FIELD.default_value = 0
+ERRORCODE_NOTIFY_CFG_ID_FIELD.type = 5
+ERRORCODE_NOTIFY_CFG_ID_FIELD.cpp_type = 1
+
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.name = "content"
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.full_name = ".ftcfg.errorcode_notify_cfg.content"
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.number = 2
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.index = 1
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.label = 2
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.has_default_value = false
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.default_value = ""
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.type = 9
+ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.cpp_type = 9
+
+ERRORCODE_NOTIFY_CFG.name = "errorcode_notify_cfg"
+ERRORCODE_NOTIFY_CFG.full_name = ".ftcfg.errorcode_notify_cfg"
+ERRORCODE_NOTIFY_CFG.nested_types = {}
+ERRORCODE_NOTIFY_CFG.enum_types = {}
+ERRORCODE_NOTIFY_CFG.fields = {ERRORCODE_NOTIFY_CFG_ID_FIELD, ERRORCODE_NOTIFY_CFG_CONTENT_FIELD}
+ERRORCODE_NOTIFY_CFG.is_extendable = false
+ERRORCODE_NOTIFY_CFG.extensions = {}
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.name = "items"
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.errorcode_notify_cfgs.items"
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.number = 1
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.index = 0
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.label = 3
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.has_default_value = false
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.default_value = {}
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.message_type = ERRORCODE_NOTIFY_CFG
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.type = 11
+ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.cpp_type = 10
+
+ERRORCODE_NOTIFY_CFGS.name = "errorcode_notify_cfgs"
+ERRORCODE_NOTIFY_CFGS.full_name = ".ftcfg.errorcode_notify_cfgs"
+ERRORCODE_NOTIFY_CFGS.nested_types = {}
+ERRORCODE_NOTIFY_CFGS.enum_types = {}
+ERRORCODE_NOTIFY_CFGS.fields = {ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD}
+ERRORCODE_NOTIFY_CFGS.is_extendable = false
+ERRORCODE_NOTIFY_CFGS.extensions = {}
+OPEN_RULES_DATA_CFG_ID_FIELD.name = "id"
+OPEN_RULES_DATA_CFG_ID_FIELD.full_name = ".ftcfg.open_rules_data_cfg.id"
+OPEN_RULES_DATA_CFG_ID_FIELD.number = 1
+OPEN_RULES_DATA_CFG_ID_FIELD.index = 0
+OPEN_RULES_DATA_CFG_ID_FIELD.label = 2
+OPEN_RULES_DATA_CFG_ID_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_ID_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_ID_FIELD.type = 5
+OPEN_RULES_DATA_CFG_ID_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.name = "open_rules_type"
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.full_name = ".ftcfg.open_rules_data_cfg.open_rules_type"
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.number = 2
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.index = 1
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.label = 2
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.type = 5
+OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.name = "limit_type"
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.full_name = ".ftcfg.open_rules_data_cfg.limit_type"
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.number = 3
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.index = 2
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.label = 2
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.type = 5
+OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.name = "limit_day"
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.full_name = ".ftcfg.open_rules_data_cfg.limit_day"
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.number = 4
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.index = 3
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.label = 2
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.type = 5
+OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.name = "begin_hour"
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.full_name = ".ftcfg.open_rules_data_cfg.begin_hour"
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.number = 5
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.index = 4
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.label = 2
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.type = 5
+OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.name = "begin_min"
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.full_name = ".ftcfg.open_rules_data_cfg.begin_min"
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.number = 6
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.index = 5
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.label = 2
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.type = 5
+OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.name = "end_hour"
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.full_name = ".ftcfg.open_rules_data_cfg.end_hour"
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.number = 7
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.index = 6
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.label = 2
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.type = 5
+OPEN_RULES_DATA_CFG_END_HOUR_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.name = "end_min"
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.full_name = ".ftcfg.open_rules_data_cfg.end_min"
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.number = 8
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.index = 7
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.label = 2
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.default_value = 0
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.type = 5
+OPEN_RULES_DATA_CFG_END_MIN_FIELD.cpp_type = 1
+
+OPEN_RULES_DATA_CFG.name = "open_rules_data_cfg"
+OPEN_RULES_DATA_CFG.full_name = ".ftcfg.open_rules_data_cfg"
+OPEN_RULES_DATA_CFG.nested_types = {}
+OPEN_RULES_DATA_CFG.enum_types = {}
+OPEN_RULES_DATA_CFG.fields = {OPEN_RULES_DATA_CFG_ID_FIELD, OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD, OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD, OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD, OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD, OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD, OPEN_RULES_DATA_CFG_END_HOUR_FIELD, OPEN_RULES_DATA_CFG_END_MIN_FIELD}
+OPEN_RULES_DATA_CFG.is_extendable = false
+OPEN_RULES_DATA_CFG.extensions = {}
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.name = "items"
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.open_rules_data_cfgs.items"
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.number = 1
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.index = 0
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.label = 3
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.has_default_value = false
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.default_value = {}
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.message_type = OPEN_RULES_DATA_CFG
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.type = 11
+OPEN_RULES_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
+
+OPEN_RULES_DATA_CFGS.name = "open_rules_data_cfgs"
+OPEN_RULES_DATA_CFGS.full_name = ".ftcfg.open_rules_data_cfgs"
+OPEN_RULES_DATA_CFGS.nested_types = {}
+OPEN_RULES_DATA_CFGS.enum_types = {}
+OPEN_RULES_DATA_CFGS.fields = {OPEN_RULES_DATA_CFGS_ITEMS_FIELD}
+OPEN_RULES_DATA_CFGS.is_extendable = false
+OPEN_RULES_DATA_CFGS.extensions = {}
+CAMPBOSS_CFG_ID_FIELD.name = "id"
+CAMPBOSS_CFG_ID_FIELD.full_name = ".ftcfg.campboss_cfg.id"
+CAMPBOSS_CFG_ID_FIELD.number = 1
+CAMPBOSS_CFG_ID_FIELD.index = 0
+CAMPBOSS_CFG_ID_FIELD.label = 2
+CAMPBOSS_CFG_ID_FIELD.has_default_value = false
+CAMPBOSS_CFG_ID_FIELD.default_value = 0
+CAMPBOSS_CFG_ID_FIELD.type = 5
+CAMPBOSS_CFG_ID_FIELD.cpp_type = 1
+
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.name = "need_level"
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.campboss_cfg.need_level"
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.number = 2
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.index = 1
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.label = 2
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.has_default_value = false
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.default_value = 0
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.type = 5
+CAMPBOSS_CFG_NEED_LEVEL_FIELD.cpp_type = 1
+
+CAMPBOSS_CFG_SCENE_ID_FIELD.name = "scene_id"
+CAMPBOSS_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.campboss_cfg.scene_id"
+CAMPBOSS_CFG_SCENE_ID_FIELD.number = 3
+CAMPBOSS_CFG_SCENE_ID_FIELD.index = 2
+CAMPBOSS_CFG_SCENE_ID_FIELD.label = 2
+CAMPBOSS_CFG_SCENE_ID_FIELD.has_default_value = false
+CAMPBOSS_CFG_SCENE_ID_FIELD.default_value = 0
+CAMPBOSS_CFG_SCENE_ID_FIELD.type = 5
+CAMPBOSS_CFG_SCENE_ID_FIELD.cpp_type = 1
+
+CAMPBOSS_CFG_MAP_ID_FIELD.name = "map_id"
+CAMPBOSS_CFG_MAP_ID_FIELD.full_name = ".ftcfg.campboss_cfg.map_id"
+CAMPBOSS_CFG_MAP_ID_FIELD.number = 4
+CAMPBOSS_CFG_MAP_ID_FIELD.index = 3
+CAMPBOSS_CFG_MAP_ID_FIELD.label = 2
+CAMPBOSS_CFG_MAP_ID_FIELD.has_default_value = false
+CAMPBOSS_CFG_MAP_ID_FIELD.default_value = 0
+CAMPBOSS_CFG_MAP_ID_FIELD.type = 5
+CAMPBOSS_CFG_MAP_ID_FIELD.cpp_type = 1
+
+CAMPBOSS_CFG_X_POINT_FIELD.name = "x_point"
+CAMPBOSS_CFG_X_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.x_point"
+CAMPBOSS_CFG_X_POINT_FIELD.number = 5
+CAMPBOSS_CFG_X_POINT_FIELD.index = 4
+CAMPBOSS_CFG_X_POINT_FIELD.label = 2
+CAMPBOSS_CFG_X_POINT_FIELD.has_default_value = false
+CAMPBOSS_CFG_X_POINT_FIELD.default_value = 0.0
+CAMPBOSS_CFG_X_POINT_FIELD.type = 2
+CAMPBOSS_CFG_X_POINT_FIELD.cpp_type = 6
+
+CAMPBOSS_CFG_Y_POINT_FIELD.name = "y_point"
+CAMPBOSS_CFG_Y_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.y_point"
+CAMPBOSS_CFG_Y_POINT_FIELD.number = 6
+CAMPBOSS_CFG_Y_POINT_FIELD.index = 5
+CAMPBOSS_CFG_Y_POINT_FIELD.label = 2
+CAMPBOSS_CFG_Y_POINT_FIELD.has_default_value = false
+CAMPBOSS_CFG_Y_POINT_FIELD.default_value = 0.0
+CAMPBOSS_CFG_Y_POINT_FIELD.type = 2
+CAMPBOSS_CFG_Y_POINT_FIELD.cpp_type = 6
+
+CAMPBOSS_CFG_Z_POINT_FIELD.name = "z_point"
+CAMPBOSS_CFG_Z_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.z_point"
+CAMPBOSS_CFG_Z_POINT_FIELD.number = 7
+CAMPBOSS_CFG_Z_POINT_FIELD.index = 6
+CAMPBOSS_CFG_Z_POINT_FIELD.label = 2
+CAMPBOSS_CFG_Z_POINT_FIELD.has_default_value = false
+CAMPBOSS_CFG_Z_POINT_FIELD.default_value = 0.0
+CAMPBOSS_CFG_Z_POINT_FIELD.type = 2
+CAMPBOSS_CFG_Z_POINT_FIELD.cpp_type = 6
+
+CAMPBOSS_CFG.name = "campboss_cfg"
+CAMPBOSS_CFG.full_name = ".ftcfg.campboss_cfg"
+CAMPBOSS_CFG.nested_types = {}
+CAMPBOSS_CFG.enum_types = {}
+CAMPBOSS_CFG.fields = {CAMPBOSS_CFG_ID_FIELD, CAMPBOSS_CFG_NEED_LEVEL_FIELD, CAMPBOSS_CFG_SCENE_ID_FIELD, CAMPBOSS_CFG_MAP_ID_FIELD, CAMPBOSS_CFG_X_POINT_FIELD, CAMPBOSS_CFG_Y_POINT_FIELD, CAMPBOSS_CFG_Z_POINT_FIELD}
+CAMPBOSS_CFG.is_extendable = false
+CAMPBOSS_CFG.extensions = {}
+CAMPBOSS_CFGS_ITEMS_FIELD.name = "items"
+CAMPBOSS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.campboss_cfgs.items"
+CAMPBOSS_CFGS_ITEMS_FIELD.number = 1
+CAMPBOSS_CFGS_ITEMS_FIELD.index = 0
+CAMPBOSS_CFGS_ITEMS_FIELD.label = 3
+CAMPBOSS_CFGS_ITEMS_FIELD.has_default_value = false
+CAMPBOSS_CFGS_ITEMS_FIELD.default_value = {}
+CAMPBOSS_CFGS_ITEMS_FIELD.message_type = CAMPBOSS_CFG
+CAMPBOSS_CFGS_ITEMS_FIELD.type = 11
+CAMPBOSS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CAMPBOSS_CFGS.name = "campboss_cfgs"
+CAMPBOSS_CFGS.full_name = ".ftcfg.campboss_cfgs"
+CAMPBOSS_CFGS.nested_types = {}
+CAMPBOSS_CFGS.enum_types = {}
+CAMPBOSS_CFGS.fields = {CAMPBOSS_CFGS_ITEMS_FIELD}
+CAMPBOSS_CFGS.is_extendable = false
+CAMPBOSS_CFGS.extensions = {}
+TIPS_CFG_ID_FIELD.name = "id"
+TIPS_CFG_ID_FIELD.full_name = ".ftcfg.tips_cfg.id"
+TIPS_CFG_ID_FIELD.number = 1
+TIPS_CFG_ID_FIELD.index = 0
+TIPS_CFG_ID_FIELD.label = 2
+TIPS_CFG_ID_FIELD.has_default_value = false
+TIPS_CFG_ID_FIELD.default_value = 0
+TIPS_CFG_ID_FIELD.type = 5
+TIPS_CFG_ID_FIELD.cpp_type = 1
+
+TIPS_CFG_TYPE_FIELD.name = "type"
+TIPS_CFG_TYPE_FIELD.full_name = ".ftcfg.tips_cfg.type"
+TIPS_CFG_TYPE_FIELD.number = 2
+TIPS_CFG_TYPE_FIELD.index = 1
+TIPS_CFG_TYPE_FIELD.label = 2
+TIPS_CFG_TYPE_FIELD.has_default_value = false
+TIPS_CFG_TYPE_FIELD.default_value = nil
+TIPS_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ESYSTEMCHATTYPE
+TIPS_CFG_TYPE_FIELD.type = 14
+TIPS_CFG_TYPE_FIELD.cpp_type = 8
+
+TIPS_CFG_CONTENT_FIELD.name = "content"
+TIPS_CFG_CONTENT_FIELD.full_name = ".ftcfg.tips_cfg.content"
+TIPS_CFG_CONTENT_FIELD.number = 3
+TIPS_CFG_CONTENT_FIELD.index = 2
+TIPS_CFG_CONTENT_FIELD.label = 2
+TIPS_CFG_CONTENT_FIELD.has_default_value = false
+TIPS_CFG_CONTENT_FIELD.default_value = ""
+TIPS_CFG_CONTENT_FIELD.type = 9
+TIPS_CFG_CONTENT_FIELD.cpp_type = 9
+
+TIPS_CFG.name = "tips_cfg"
+TIPS_CFG.full_name = ".ftcfg.tips_cfg"
+TIPS_CFG.nested_types = {}
+TIPS_CFG.enum_types = {}
+TIPS_CFG.fields = {TIPS_CFG_ID_FIELD, TIPS_CFG_TYPE_FIELD, TIPS_CFG_CONTENT_FIELD}
+TIPS_CFG.is_extendable = false
+TIPS_CFG.extensions = {}
+TIPS_CFGS_ITEMS_FIELD.name = "items"
+TIPS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.tips_cfgs.items"
+TIPS_CFGS_ITEMS_FIELD.number = 1
+TIPS_CFGS_ITEMS_FIELD.index = 0
+TIPS_CFGS_ITEMS_FIELD.label = 3
+TIPS_CFGS_ITEMS_FIELD.has_default_value = false
+TIPS_CFGS_ITEMS_FIELD.default_value = {}
+TIPS_CFGS_ITEMS_FIELD.message_type = TIPS_CFG
+TIPS_CFGS_ITEMS_FIELD.type = 11
+TIPS_CFGS_ITEMS_FIELD.cpp_type = 10
+
+TIPS_CFGS.name = "tips_cfgs"
+TIPS_CFGS.full_name = ".ftcfg.tips_cfgs"
+TIPS_CFGS.nested_types = {}
+TIPS_CFGS.enum_types = {}
+TIPS_CFGS.fields = {TIPS_CFGS_ITEMS_FIELD}
+TIPS_CFGS.is_extendable = false
+TIPS_CFGS.extensions = {}
+CAMP_RELATION_CFG_ID_FIELD.name = "id"
+CAMP_RELATION_CFG_ID_FIELD.full_name = ".ftcfg.camp_relation_cfg.id"
+CAMP_RELATION_CFG_ID_FIELD.number = 1
+CAMP_RELATION_CFG_ID_FIELD.index = 0
+CAMP_RELATION_CFG_ID_FIELD.label = 2
+CAMP_RELATION_CFG_ID_FIELD.has_default_value = false
+CAMP_RELATION_CFG_ID_FIELD.default_value = 0
+CAMP_RELATION_CFG_ID_FIELD.type = 5
+CAMP_RELATION_CFG_ID_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_SCRIP_FIELD.name = "scrip"
+CAMP_RELATION_CFG_SCRIP_FIELD.full_name = ".ftcfg.camp_relation_cfg.scrip"
+CAMP_RELATION_CFG_SCRIP_FIELD.number = 2
+CAMP_RELATION_CFG_SCRIP_FIELD.index = 1
+CAMP_RELATION_CFG_SCRIP_FIELD.label = 2
+CAMP_RELATION_CFG_SCRIP_FIELD.has_default_value = false
+CAMP_RELATION_CFG_SCRIP_FIELD.default_value = ""
+CAMP_RELATION_CFG_SCRIP_FIELD.type = 9
+CAMP_RELATION_CFG_SCRIP_FIELD.cpp_type = 9
+
+CAMP_RELATION_CFG_TYPE_FIELD.name = "type"
+CAMP_RELATION_CFG_TYPE_FIELD.full_name = ".ftcfg.camp_relation_cfg.type"
+CAMP_RELATION_CFG_TYPE_FIELD.number = 3
+CAMP_RELATION_CFG_TYPE_FIELD.index = 2
+CAMP_RELATION_CFG_TYPE_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.name = "type_scrip"
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.full_name = ".ftcfg.camp_relation_cfg.type_scrip"
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.number = 4
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.index = 3
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.default_value = ""
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.type = 9
+CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.cpp_type = 9
+
+CAMP_RELATION_CFG_TYPE0_FIELD.name = "type0"
+CAMP_RELATION_CFG_TYPE0_FIELD.full_name = ".ftcfg.camp_relation_cfg.type0"
+CAMP_RELATION_CFG_TYPE0_FIELD.number = 5
+CAMP_RELATION_CFG_TYPE0_FIELD.index = 4
+CAMP_RELATION_CFG_TYPE0_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE0_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE0_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE0_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE0_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE1_FIELD.name = "type1"
+CAMP_RELATION_CFG_TYPE1_FIELD.full_name = ".ftcfg.camp_relation_cfg.type1"
+CAMP_RELATION_CFG_TYPE1_FIELD.number = 6
+CAMP_RELATION_CFG_TYPE1_FIELD.index = 5
+CAMP_RELATION_CFG_TYPE1_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE1_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE1_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE1_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE1_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE2_FIELD.name = "type2"
+CAMP_RELATION_CFG_TYPE2_FIELD.full_name = ".ftcfg.camp_relation_cfg.type2"
+CAMP_RELATION_CFG_TYPE2_FIELD.number = 7
+CAMP_RELATION_CFG_TYPE2_FIELD.index = 6
+CAMP_RELATION_CFG_TYPE2_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE2_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE2_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE2_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE2_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE3_FIELD.name = "type3"
+CAMP_RELATION_CFG_TYPE3_FIELD.full_name = ".ftcfg.camp_relation_cfg.type3"
+CAMP_RELATION_CFG_TYPE3_FIELD.number = 8
+CAMP_RELATION_CFG_TYPE3_FIELD.index = 7
+CAMP_RELATION_CFG_TYPE3_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE3_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE3_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE3_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE3_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE4_FIELD.name = "type4"
+CAMP_RELATION_CFG_TYPE4_FIELD.full_name = ".ftcfg.camp_relation_cfg.type4"
+CAMP_RELATION_CFG_TYPE4_FIELD.number = 9
+CAMP_RELATION_CFG_TYPE4_FIELD.index = 8
+CAMP_RELATION_CFG_TYPE4_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE4_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE4_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE4_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE4_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE5_FIELD.name = "type5"
+CAMP_RELATION_CFG_TYPE5_FIELD.full_name = ".ftcfg.camp_relation_cfg.type5"
+CAMP_RELATION_CFG_TYPE5_FIELD.number = 10
+CAMP_RELATION_CFG_TYPE5_FIELD.index = 9
+CAMP_RELATION_CFG_TYPE5_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE5_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE5_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE5_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE5_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE6_FIELD.name = "type6"
+CAMP_RELATION_CFG_TYPE6_FIELD.full_name = ".ftcfg.camp_relation_cfg.type6"
+CAMP_RELATION_CFG_TYPE6_FIELD.number = 11
+CAMP_RELATION_CFG_TYPE6_FIELD.index = 10
+CAMP_RELATION_CFG_TYPE6_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE6_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE6_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE6_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE6_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE7_FIELD.name = "type7"
+CAMP_RELATION_CFG_TYPE7_FIELD.full_name = ".ftcfg.camp_relation_cfg.type7"
+CAMP_RELATION_CFG_TYPE7_FIELD.number = 12
+CAMP_RELATION_CFG_TYPE7_FIELD.index = 11
+CAMP_RELATION_CFG_TYPE7_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE7_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE7_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE7_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE7_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE8_FIELD.name = "type8"
+CAMP_RELATION_CFG_TYPE8_FIELD.full_name = ".ftcfg.camp_relation_cfg.type8"
+CAMP_RELATION_CFG_TYPE8_FIELD.number = 13
+CAMP_RELATION_CFG_TYPE8_FIELD.index = 12
+CAMP_RELATION_CFG_TYPE8_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE8_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE8_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE8_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE8_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE9_FIELD.name = "type9"
+CAMP_RELATION_CFG_TYPE9_FIELD.full_name = ".ftcfg.camp_relation_cfg.type9"
+CAMP_RELATION_CFG_TYPE9_FIELD.number = 14
+CAMP_RELATION_CFG_TYPE9_FIELD.index = 13
+CAMP_RELATION_CFG_TYPE9_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE9_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE9_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE9_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE9_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE10_FIELD.name = "type10"
+CAMP_RELATION_CFG_TYPE10_FIELD.full_name = ".ftcfg.camp_relation_cfg.type10"
+CAMP_RELATION_CFG_TYPE10_FIELD.number = 15
+CAMP_RELATION_CFG_TYPE10_FIELD.index = 14
+CAMP_RELATION_CFG_TYPE10_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE10_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE10_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE10_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE10_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE11_FIELD.name = "type11"
+CAMP_RELATION_CFG_TYPE11_FIELD.full_name = ".ftcfg.camp_relation_cfg.type11"
+CAMP_RELATION_CFG_TYPE11_FIELD.number = 16
+CAMP_RELATION_CFG_TYPE11_FIELD.index = 15
+CAMP_RELATION_CFG_TYPE11_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE11_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE11_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE11_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE11_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE12_FIELD.name = "type12"
+CAMP_RELATION_CFG_TYPE12_FIELD.full_name = ".ftcfg.camp_relation_cfg.type12"
+CAMP_RELATION_CFG_TYPE12_FIELD.number = 17
+CAMP_RELATION_CFG_TYPE12_FIELD.index = 16
+CAMP_RELATION_CFG_TYPE12_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE12_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE12_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE12_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE12_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE13_FIELD.name = "type13"
+CAMP_RELATION_CFG_TYPE13_FIELD.full_name = ".ftcfg.camp_relation_cfg.type13"
+CAMP_RELATION_CFG_TYPE13_FIELD.number = 18
+CAMP_RELATION_CFG_TYPE13_FIELD.index = 17
+CAMP_RELATION_CFG_TYPE13_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE13_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE13_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE13_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE13_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE14_FIELD.name = "type14"
+CAMP_RELATION_CFG_TYPE14_FIELD.full_name = ".ftcfg.camp_relation_cfg.type14"
+CAMP_RELATION_CFG_TYPE14_FIELD.number = 19
+CAMP_RELATION_CFG_TYPE14_FIELD.index = 18
+CAMP_RELATION_CFG_TYPE14_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE14_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE14_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE14_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE14_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG_TYPE15_FIELD.name = "type15"
+CAMP_RELATION_CFG_TYPE15_FIELD.full_name = ".ftcfg.camp_relation_cfg.type15"
+CAMP_RELATION_CFG_TYPE15_FIELD.number = 20
+CAMP_RELATION_CFG_TYPE15_FIELD.index = 19
+CAMP_RELATION_CFG_TYPE15_FIELD.label = 2
+CAMP_RELATION_CFG_TYPE15_FIELD.has_default_value = false
+CAMP_RELATION_CFG_TYPE15_FIELD.default_value = 0
+CAMP_RELATION_CFG_TYPE15_FIELD.type = 5
+CAMP_RELATION_CFG_TYPE15_FIELD.cpp_type = 1
+
+CAMP_RELATION_CFG.name = "camp_relation_cfg"
+CAMP_RELATION_CFG.full_name = ".ftcfg.camp_relation_cfg"
+CAMP_RELATION_CFG.nested_types = {}
+CAMP_RELATION_CFG.enum_types = {}
+CAMP_RELATION_CFG.fields = {CAMP_RELATION_CFG_ID_FIELD, CAMP_RELATION_CFG_SCRIP_FIELD, CAMP_RELATION_CFG_TYPE_FIELD, CAMP_RELATION_CFG_TYPE_SCRIP_FIELD, CAMP_RELATION_CFG_TYPE0_FIELD, CAMP_RELATION_CFG_TYPE1_FIELD, CAMP_RELATION_CFG_TYPE2_FIELD, CAMP_RELATION_CFG_TYPE3_FIELD, CAMP_RELATION_CFG_TYPE4_FIELD, CAMP_RELATION_CFG_TYPE5_FIELD, CAMP_RELATION_CFG_TYPE6_FIELD, CAMP_RELATION_CFG_TYPE7_FIELD, CAMP_RELATION_CFG_TYPE8_FIELD, CAMP_RELATION_CFG_TYPE9_FIELD, CAMP_RELATION_CFG_TYPE10_FIELD, CAMP_RELATION_CFG_TYPE11_FIELD, CAMP_RELATION_CFG_TYPE12_FIELD, CAMP_RELATION_CFG_TYPE13_FIELD, CAMP_RELATION_CFG_TYPE14_FIELD, CAMP_RELATION_CFG_TYPE15_FIELD}
+CAMP_RELATION_CFG.is_extendable = false
+CAMP_RELATION_CFG.extensions = {}
+CAMP_RELATION_CFGS_ITEMS_FIELD.name = "items"
+CAMP_RELATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.camp_relation_cfgs.items"
+CAMP_RELATION_CFGS_ITEMS_FIELD.number = 1
+CAMP_RELATION_CFGS_ITEMS_FIELD.index = 0
+CAMP_RELATION_CFGS_ITEMS_FIELD.label = 3
+CAMP_RELATION_CFGS_ITEMS_FIELD.has_default_value = false
+CAMP_RELATION_CFGS_ITEMS_FIELD.default_value = {}
+CAMP_RELATION_CFGS_ITEMS_FIELD.message_type = CAMP_RELATION_CFG
+CAMP_RELATION_CFGS_ITEMS_FIELD.type = 11
+CAMP_RELATION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CAMP_RELATION_CFGS.name = "camp_relation_cfgs"
+CAMP_RELATION_CFGS.full_name = ".ftcfg.camp_relation_cfgs"
+CAMP_RELATION_CFGS.nested_types = {}
+CAMP_RELATION_CFGS.enum_types = {}
+CAMP_RELATION_CFGS.fields = {CAMP_RELATION_CFGS_ITEMS_FIELD}
+CAMP_RELATION_CFGS.is_extendable = false
+CAMP_RELATION_CFGS.extensions = {}
+CAMP_CHANGE_COST_CFG_ID_FIELD.name = "id"
+CAMP_CHANGE_COST_CFG_ID_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.id"
+CAMP_CHANGE_COST_CFG_ID_FIELD.number = 1
+CAMP_CHANGE_COST_CFG_ID_FIELD.index = 0
+CAMP_CHANGE_COST_CFG_ID_FIELD.label = 2
+CAMP_CHANGE_COST_CFG_ID_FIELD.has_default_value = false
+CAMP_CHANGE_COST_CFG_ID_FIELD.default_value = 0
+CAMP_CHANGE_COST_CFG_ID_FIELD.type = 5
+CAMP_CHANGE_COST_CFG_ID_FIELD.cpp_type = 1
+
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.name = "coin_type"
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.coin_type"
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.number = 2
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.index = 1
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.label = 3
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.has_default_value = false
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.default_value = {}
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.type = 5
+CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.cpp_type = 1
+
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.name = "coin_num"
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.coin_num"
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.number = 3
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.index = 2
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.label = 3
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.has_default_value = false
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.default_value = {}
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.type = 5
+CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.cpp_type = 1
+
+CAMP_CHANGE_COST_CFG.name = "camp_change_cost_cfg"
+CAMP_CHANGE_COST_CFG.full_name = ".ftcfg.camp_change_cost_cfg"
+CAMP_CHANGE_COST_CFG.nested_types = {}
+CAMP_CHANGE_COST_CFG.enum_types = {}
+CAMP_CHANGE_COST_CFG.fields = {CAMP_CHANGE_COST_CFG_ID_FIELD, CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD, CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD}
+CAMP_CHANGE_COST_CFG.is_extendable = false
+CAMP_CHANGE_COST_CFG.extensions = {}
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.name = "items"
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.camp_change_cost_cfgs.items"
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.number = 1
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.index = 0
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.label = 3
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.has_default_value = false
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.default_value = {}
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.message_type = CAMP_CHANGE_COST_CFG
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.type = 11
+CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.cpp_type = 10
+
+CAMP_CHANGE_COST_CFGS.name = "camp_change_cost_cfgs"
+CAMP_CHANGE_COST_CFGS.full_name = ".ftcfg.camp_change_cost_cfgs"
+CAMP_CHANGE_COST_CFGS.nested_types = {}
+CAMP_CHANGE_COST_CFGS.enum_types = {}
+CAMP_CHANGE_COST_CFGS.fields = {CAMP_CHANGE_COST_CFGS_ITEMS_FIELD}
+CAMP_CHANGE_COST_CFGS.is_extendable = false
+CAMP_CHANGE_COST_CFGS.extensions = {}
+RANDOMMAN_CFG_NAME0_FIELD.name = "name0"
+RANDOMMAN_CFG_NAME0_FIELD.full_name = ".ftcfg.randomman_cfg.name0"
+RANDOMMAN_CFG_NAME0_FIELD.number = 1
+RANDOMMAN_CFG_NAME0_FIELD.index = 0
+RANDOMMAN_CFG_NAME0_FIELD.label = 2
+RANDOMMAN_CFG_NAME0_FIELD.has_default_value = false
+RANDOMMAN_CFG_NAME0_FIELD.default_value = ""
+RANDOMMAN_CFG_NAME0_FIELD.type = 9
+RANDOMMAN_CFG_NAME0_FIELD.cpp_type = 9
+
+RANDOMMAN_CFG_NAME1_FIELD.name = "name1"
+RANDOMMAN_CFG_NAME1_FIELD.full_name = ".ftcfg.randomman_cfg.name1"
+RANDOMMAN_CFG_NAME1_FIELD.number = 2
+RANDOMMAN_CFG_NAME1_FIELD.index = 1
+RANDOMMAN_CFG_NAME1_FIELD.label = 2
+RANDOMMAN_CFG_NAME1_FIELD.has_default_value = false
+RANDOMMAN_CFG_NAME1_FIELD.default_value = ""
+RANDOMMAN_CFG_NAME1_FIELD.type = 9
+RANDOMMAN_CFG_NAME1_FIELD.cpp_type = 9
+
+RANDOMMAN_CFG.name = "randomman_cfg"
+RANDOMMAN_CFG.full_name = ".ftcfg.randomman_cfg"
+RANDOMMAN_CFG.nested_types = {}
+RANDOMMAN_CFG.enum_types = {}
+RANDOMMAN_CFG.fields = {RANDOMMAN_CFG_NAME0_FIELD, RANDOMMAN_CFG_NAME1_FIELD}
+RANDOMMAN_CFG.is_extendable = false
+RANDOMMAN_CFG.extensions = {}
+RANDOMMAN_CFGS_ITEMS_FIELD.name = "items"
+RANDOMMAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.randomman_cfgs.items"
+RANDOMMAN_CFGS_ITEMS_FIELD.number = 1
+RANDOMMAN_CFGS_ITEMS_FIELD.index = 0
+RANDOMMAN_CFGS_ITEMS_FIELD.label = 3
+RANDOMMAN_CFGS_ITEMS_FIELD.has_default_value = false
+RANDOMMAN_CFGS_ITEMS_FIELD.default_value = {}
+RANDOMMAN_CFGS_ITEMS_FIELD.message_type = RANDOMMAN_CFG
+RANDOMMAN_CFGS_ITEMS_FIELD.type = 11
+RANDOMMAN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RANDOMMAN_CFGS.name = "randomman_cfgs"
+RANDOMMAN_CFGS.full_name = ".ftcfg.randomman_cfgs"
+RANDOMMAN_CFGS.nested_types = {}
+RANDOMMAN_CFGS.enum_types = {}
+RANDOMMAN_CFGS.fields = {RANDOMMAN_CFGS_ITEMS_FIELD}
+RANDOMMAN_CFGS.is_extendable = false
+RANDOMMAN_CFGS.extensions = {}
+RANDOMWOMAN_CFG_NAME0_FIELD.name = "name0"
+RANDOMWOMAN_CFG_NAME0_FIELD.full_name = ".ftcfg.randomwoman_cfg.name0"
+RANDOMWOMAN_CFG_NAME0_FIELD.number = 1
+RANDOMWOMAN_CFG_NAME0_FIELD.index = 0
+RANDOMWOMAN_CFG_NAME0_FIELD.label = 2
+RANDOMWOMAN_CFG_NAME0_FIELD.has_default_value = false
+RANDOMWOMAN_CFG_NAME0_FIELD.default_value = ""
+RANDOMWOMAN_CFG_NAME0_FIELD.type = 9
+RANDOMWOMAN_CFG_NAME0_FIELD.cpp_type = 9
+
+RANDOMWOMAN_CFG_NAME1_FIELD.name = "name1"
+RANDOMWOMAN_CFG_NAME1_FIELD.full_name = ".ftcfg.randomwoman_cfg.name1"
+RANDOMWOMAN_CFG_NAME1_FIELD.number = 2
+RANDOMWOMAN_CFG_NAME1_FIELD.index = 1
+RANDOMWOMAN_CFG_NAME1_FIELD.label = 2
+RANDOMWOMAN_CFG_NAME1_FIELD.has_default_value = false
+RANDOMWOMAN_CFG_NAME1_FIELD.default_value = ""
+RANDOMWOMAN_CFG_NAME1_FIELD.type = 9
+RANDOMWOMAN_CFG_NAME1_FIELD.cpp_type = 9
+
+RANDOMWOMAN_CFG.name = "randomwoman_cfg"
+RANDOMWOMAN_CFG.full_name = ".ftcfg.randomwoman_cfg"
+RANDOMWOMAN_CFG.nested_types = {}
+RANDOMWOMAN_CFG.enum_types = {}
+RANDOMWOMAN_CFG.fields = {RANDOMWOMAN_CFG_NAME0_FIELD, RANDOMWOMAN_CFG_NAME1_FIELD}
+RANDOMWOMAN_CFG.is_extendable = false
+RANDOMWOMAN_CFG.extensions = {}
+RANDOMWOMAN_CFGS_ITEMS_FIELD.name = "items"
+RANDOMWOMAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.randomwoman_cfgs.items"
+RANDOMWOMAN_CFGS_ITEMS_FIELD.number = 1
+RANDOMWOMAN_CFGS_ITEMS_FIELD.index = 0
+RANDOMWOMAN_CFGS_ITEMS_FIELD.label = 3
+RANDOMWOMAN_CFGS_ITEMS_FIELD.has_default_value = false
+RANDOMWOMAN_CFGS_ITEMS_FIELD.default_value = {}
+RANDOMWOMAN_CFGS_ITEMS_FIELD.message_type = RANDOMWOMAN_CFG
+RANDOMWOMAN_CFGS_ITEMS_FIELD.type = 11
+RANDOMWOMAN_CFGS_ITEMS_FIELD.cpp_type = 10
+
+RANDOMWOMAN_CFGS.name = "randomwoman_cfgs"
+RANDOMWOMAN_CFGS.full_name = ".ftcfg.randomwoman_cfgs"
+RANDOMWOMAN_CFGS.nested_types = {}
+RANDOMWOMAN_CFGS.enum_types = {}
+RANDOMWOMAN_CFGS.fields = {RANDOMWOMAN_CFGS_ITEMS_FIELD}
+RANDOMWOMAN_CFGS.is_extendable = false
+RANDOMWOMAN_CFGS.extensions = {}
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.star_level"
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
+SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
+
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.name = "level"
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.level"
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.number = 2
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.index = 1
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.default_value = 0
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.type = 13
+SOUL_BASE_ATTR_CFG_LEVEL_FIELD.cpp_type = 3
+
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.fight_power"
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.number = 3
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.index = 2
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
+SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
+
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.name = "attack"
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.attack"
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.number = 4
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.index = 3
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_ATTACK_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.name = "defense"
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defense"
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.number = 5
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.index = 4
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.name = "maxHp"
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.maxHp"
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.number = 6
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.index = 5
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_MAXHP_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.name = "criticalRate"
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.criticalRate"
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.number = 7
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.index = 6
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.name = "criticalPowerRate"
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.criticalPowerRate"
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.number = 8
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.index = 7
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.name = "hitRate"
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.hitRate"
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.number = 9
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.index = 8
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_HITRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.name = "defyBlockRate"
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defyBlockRate"
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.number = 10
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.index = 9
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.name = "maud"
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.maud"
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.number = 11
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.index = 10
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_MAUD_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_MIND_FIELD.name = "mind"
+SOUL_BASE_ATTR_CFG_MIND_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.mind"
+SOUL_BASE_ATTR_CFG_MIND_FIELD.number = 12
+SOUL_BASE_ATTR_CFG_MIND_FIELD.index = 11
+SOUL_BASE_ATTR_CFG_MIND_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_MIND_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_MIND_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_MIND_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_MIND_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.name = "constitution"
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.constitution"
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.number = 13
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.index = 12
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.name = "blockRate"
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.blockRate"
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.number = 14
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.index = 13
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.name = "dodgeRate"
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.dodgeRate"
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.number = 15
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.index = 14
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.name = "antiCriticalRate"
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.antiCriticalRate"
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.number = 16
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.index = 15
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.name = "antiCriticalPowerRate"
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.antiCriticalPowerRate"
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.number = 17
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.index = 16
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.name = "hpHitReturn"
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.hpHitReturn"
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.number = 18
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.index = 17
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.name = "intensity"
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.intensity"
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.number = 19
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.index = 18
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.name = "defyDefenseRate"
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defyDefenseRate"
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.number = 20
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.index = 19
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.name = "deadlyRate"
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.deadlyRate"
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.number = 21
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.index = 20
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.label = 2
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.default_value = 0.0
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.type = 2
+SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.cpp_type = 6
+
+SOUL_BASE_ATTR_CFG.name = "soul_base_attr_cfg"
+SOUL_BASE_ATTR_CFG.full_name = ".ftcfg.soul_base_attr_cfg"
+SOUL_BASE_ATTR_CFG.nested_types = {}
+SOUL_BASE_ATTR_CFG.enum_types = {}
+SOUL_BASE_ATTR_CFG.fields = {SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_BASE_ATTR_CFG_LEVEL_FIELD, SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD, SOUL_BASE_ATTR_CFG_ATTACK_FIELD, SOUL_BASE_ATTR_CFG_DEFENSE_FIELD, SOUL_BASE_ATTR_CFG_MAXHP_FIELD, SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD, SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD, SOUL_BASE_ATTR_CFG_HITRATE_FIELD, SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD, SOUL_BASE_ATTR_CFG_MAUD_FIELD, SOUL_BASE_ATTR_CFG_MIND_FIELD, SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD, SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD, SOUL_BASE_ATTR_CFG_DODGERATE_FIELD, SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD, SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD, SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD, SOUL_BASE_ATTR_CFG_INTENSITY_FIELD, SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD, SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD}
+SOUL_BASE_ATTR_CFG.is_extendable = false
+SOUL_BASE_ATTR_CFG.extensions = {}
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.name = "items"
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_base_attr_cfgs.items"
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.number = 1
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.index = 0
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.label = 3
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_BASE_ATTR_CFG
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.type = 11
+SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_BASE_ATTR_CFGS.name = "soul_base_attr_cfgs"
+SOUL_BASE_ATTR_CFGS.full_name = ".ftcfg.soul_base_attr_cfgs"
+SOUL_BASE_ATTR_CFGS.nested_types = {}
+SOUL_BASE_ATTR_CFGS.enum_types = {}
+SOUL_BASE_ATTR_CFGS.fields = {SOUL_BASE_ATTR_CFGS_ITEMS_FIELD}
+SOUL_BASE_ATTR_CFGS.is_extendable = false
+SOUL_BASE_ATTR_CFGS.extensions = {}
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.star_level"
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
+SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
+
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.name = "level"
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.level"
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.number = 2
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.index = 1
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.label = 2
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.has_default_value = false
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.default_value = 0
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.type = 13
+SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.cpp_type = 3
+
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.fight_power"
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.number = 3
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.index = 2
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
+SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
+
+SOUL_MAGIC_ATTR_CFG.name = "soul_magic_attr_cfg"
+SOUL_MAGIC_ATTR_CFG.full_name = ".ftcfg.soul_magic_attr_cfg"
+SOUL_MAGIC_ATTR_CFG.nested_types = {}
+SOUL_MAGIC_ATTR_CFG.enum_types = {}
+SOUL_MAGIC_ATTR_CFG.fields = {SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD, SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD}
+SOUL_MAGIC_ATTR_CFG.is_extendable = false
+SOUL_MAGIC_ATTR_CFG.extensions = {}
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.name = "items"
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_magic_attr_cfgs.items"
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.number = 1
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.index = 0
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.label = 3
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_MAGIC_ATTR_CFG
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.type = 11
+SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_MAGIC_ATTR_CFGS.name = "soul_magic_attr_cfgs"
+SOUL_MAGIC_ATTR_CFGS.full_name = ".ftcfg.soul_magic_attr_cfgs"
+SOUL_MAGIC_ATTR_CFGS.nested_types = {}
+SOUL_MAGIC_ATTR_CFGS.enum_types = {}
+SOUL_MAGIC_ATTR_CFGS.fields = {SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD}
+SOUL_MAGIC_ATTR_CFGS.is_extendable = false
+SOUL_MAGIC_ATTR_CFGS.extensions = {}
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.star_level"
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
+SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
+
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.name = "suitid"
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suitid"
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.number = 2
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.index = 1
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_SUITID_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.name = "suitname"
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suitname"
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.number = 3
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.index = 2
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.default_value = ""
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.type = 9
+SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.cpp_type = 9
+
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.name = "suit_num"
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_num"
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.number = 4
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.index = 3
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.name = "prop_type"
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.prop_type"
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.number = 5
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.index = 4
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.default_value = nil
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.type = 14
+SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.cpp_type = 8
+
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.name = "suit_type"
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_type"
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.number = 6
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.index = 5
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.default_value = nil
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.type = 14
+SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.cpp_type = 8
+
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.fight_power"
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.number = 7
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.index = 6
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.name = "suit_data"
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_data"
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.number = 8
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.index = 7
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.default_value = 0.0
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.type = 2
+SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.cpp_type = 6
+
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.name = "suit_cion"
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_cion"
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.number = 9
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.index = 8
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.name = "suit_two_num"
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_two_num"
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.number = 10
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.index = 9
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.name = "suit_skill"
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_skill"
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.number = 11
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.index = 10
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.name = "fight_power_two"
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.fight_power_two"
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.number = 12
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.index = 11
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.label = 2
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.default_value = 0
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.type = 5
+SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.cpp_type = 1
+
+SOUL_SUIT_ATTR_CFG.name = "soul_suit_attr_cfg"
+SOUL_SUIT_ATTR_CFG.full_name = ".ftcfg.soul_suit_attr_cfg"
+SOUL_SUIT_ATTR_CFG.nested_types = {}
+SOUL_SUIT_ATTR_CFG.enum_types = {}
+SOUL_SUIT_ATTR_CFG.fields = {SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_SUIT_ATTR_CFG_SUITID_FIELD, SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD, SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD, SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD, SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD}
+SOUL_SUIT_ATTR_CFG.is_extendable = false
+SOUL_SUIT_ATTR_CFG.extensions = {}
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.name = "items"
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_suit_attr_cfgs.items"
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.number = 1
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.index = 0
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.label = 3
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_SUIT_ATTR_CFG
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.type = 11
+SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_SUIT_ATTR_CFGS.name = "soul_suit_attr_cfgs"
+SOUL_SUIT_ATTR_CFGS.full_name = ".ftcfg.soul_suit_attr_cfgs"
+SOUL_SUIT_ATTR_CFGS.nested_types = {}
+SOUL_SUIT_ATTR_CFGS.enum_types = {}
+SOUL_SUIT_ATTR_CFGS.fields = {SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD}
+SOUL_SUIT_ATTR_CFGS.is_extendable = false
+SOUL_SUIT_ATTR_CFGS.extensions = {}
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.name = "star_level"
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_level_up_cfg.star_level"
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.number = 1
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.index = 0
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.type = 13
+SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.cpp_type = 3
+
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.name = "exp_one"
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_one"
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.number = 2
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.index = 1
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.name = "exp_two"
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_two"
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.number = 3
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.index = 2
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.name = "exp_three"
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_three"
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.number = 4
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.index = 3
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.name = "exp_four"
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_four"
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.number = 5
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.index = 4
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.name = "exp_five"
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_five"
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.number = 6
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.index = 5
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.name = "exp_six"
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_six"
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.number = 7
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.index = 6
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.name = "exp_seven"
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_seven"
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.number = 8
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.index = 7
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.name = "exp_eight"
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_eight"
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.number = 9
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.index = 8
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.name = "exp_nine"
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_nine"
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.number = 10
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.index = 9
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.name = "exp_ten"
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_ten"
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.number = 11
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.index = 10
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.name = "exp_change"
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_change"
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.number = 12
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.index = 11
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.label = 2
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.default_value = 0
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.type = 5
+SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.cpp_type = 1
+
+SOUL_LEVEL_UP_CFG.name = "soul_level_up_cfg"
+SOUL_LEVEL_UP_CFG.full_name = ".ftcfg.soul_level_up_cfg"
+SOUL_LEVEL_UP_CFG.nested_types = {}
+SOUL_LEVEL_UP_CFG.enum_types = {}
+SOUL_LEVEL_UP_CFG.fields = {SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD, SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD, SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD, SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD, SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD, SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD, SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD, SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD, SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD, SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD, SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD, SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD}
+SOUL_LEVEL_UP_CFG.is_extendable = false
+SOUL_LEVEL_UP_CFG.extensions = {}
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.name = "items"
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_level_up_cfgs.items"
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.number = 1
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.index = 0
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.label = 3
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.message_type = SOUL_LEVEL_UP_CFG
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.type = 11
+SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_LEVEL_UP_CFGS.name = "soul_level_up_cfgs"
+SOUL_LEVEL_UP_CFGS.full_name = ".ftcfg.soul_level_up_cfgs"
+SOUL_LEVEL_UP_CFGS.nested_types = {}
+SOUL_LEVEL_UP_CFGS.enum_types = {}
+SOUL_LEVEL_UP_CFGS.fields = {SOUL_LEVEL_UP_CFGS_ITEMS_FIELD}
+SOUL_LEVEL_UP_CFGS.is_extendable = false
+SOUL_LEVEL_UP_CFGS.extensions = {}
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.name = "magic_id"
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.magic_id"
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.number = 1
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.index = 0
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.default_value = 0
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.type = 5
+SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.cpp_type = 1
+
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.name = "magic_name"
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.magic_name"
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.number = 2
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.index = 1
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.default_value = ""
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.type = 9
+SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.cpp_type = 9
+
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.name = "quality"
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.quality"
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.number = 3
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.index = 2
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.default_value = nil
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.type = 14
+SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.cpp_type = 8
+
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.name = "proptype"
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.proptype"
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.number = 4
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.index = 3
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.default_value = nil
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.type = 14
+SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.cpp_type = 8
+
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.name = "type"
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.type"
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.number = 5
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.index = 4
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.default_value = nil
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.type = 14
+SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.cpp_type = 8
+
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.name = "min_data"
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.min_data"
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.number = 6
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.index = 5
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.default_value = 0.0
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.type = 2
+SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.cpp_type = 6
+
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.name = "max_data"
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.max_data"
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.number = 7
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.index = 6
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.default_value = 0.0
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.type = 2
+SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.cpp_type = 6
+
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.name = "max_add"
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.max_add"
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.number = 8
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.index = 7
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.default_value = 0.0
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.type = 2
+SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.cpp_type = 6
+
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.name = "success_ratio"
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.success_ratio"
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.number = 9
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.index = 8
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.default_value = 0.0
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.type = 2
+SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.cpp_type = 6
+
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.name = "icon"
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.icon"
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.number = 10
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.index = 9
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.label = 2
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.default_value = 0
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.type = 5
+SOUL_MAGIC_ROCK_CFG_ICON_FIELD.cpp_type = 1
+
+SOUL_MAGIC_ROCK_CFG.name = "soul_magic_rock_cfg"
+SOUL_MAGIC_ROCK_CFG.full_name = ".ftcfg.soul_magic_rock_cfg"
+SOUL_MAGIC_ROCK_CFG.nested_types = {}
+SOUL_MAGIC_ROCK_CFG.enum_types = {}
+SOUL_MAGIC_ROCK_CFG.fields = {SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD, SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD, SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD, SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD, SOUL_MAGIC_ROCK_CFG_TYPE_FIELD, SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD, SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD, SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD, SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD, SOUL_MAGIC_ROCK_CFG_ICON_FIELD}
+SOUL_MAGIC_ROCK_CFG.is_extendable = false
+SOUL_MAGIC_ROCK_CFG.extensions = {}
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.name = "items"
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_magic_rock_cfgs.items"
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.number = 1
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.index = 0
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.label = 3
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.message_type = SOUL_MAGIC_ROCK_CFG
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.type = 11
+SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_MAGIC_ROCK_CFGS.name = "soul_magic_rock_cfgs"
+SOUL_MAGIC_ROCK_CFGS.full_name = ".ftcfg.soul_magic_rock_cfgs"
+SOUL_MAGIC_ROCK_CFGS.nested_types = {}
+SOUL_MAGIC_ROCK_CFGS.enum_types = {}
+SOUL_MAGIC_ROCK_CFGS.fields = {SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD}
+SOUL_MAGIC_ROCK_CFGS.is_extendable = false
+SOUL_MAGIC_ROCK_CFGS.extensions = {}
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.name = "refine_id"
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.refine_id"
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.number = 1
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.index = 0
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.name = "level"
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.level"
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.number = 2
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.index = 1
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.type = 13
+SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.cpp_type = 3
+
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.name = "count"
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.count"
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.number = 3
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.index = 2
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_COUNT_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.name = "icon"
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.icon"
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.number = 4
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.index = 3
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_ICON_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.name = "name"
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.name"
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.number = 5
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.index = 4
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_NAME_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.name = "desc"
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.desc"
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.number = 6
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.index = 5
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_DESC_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.name = "position"
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.position"
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.number = 7
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.index = 6
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.label = 2
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.default_value = 0
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.type = 5
+SOUL_REFINE_ROCK_CFG_POSITION_FIELD.cpp_type = 1
+
+SOUL_REFINE_ROCK_CFG.name = "soul_refine_rock_cfg"
+SOUL_REFINE_ROCK_CFG.full_name = ".ftcfg.soul_refine_rock_cfg"
+SOUL_REFINE_ROCK_CFG.nested_types = {}
+SOUL_REFINE_ROCK_CFG.enum_types = {}
+SOUL_REFINE_ROCK_CFG.fields = {SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD, SOUL_REFINE_ROCK_CFG_LEVEL_FIELD, SOUL_REFINE_ROCK_CFG_COUNT_FIELD, SOUL_REFINE_ROCK_CFG_ICON_FIELD, SOUL_REFINE_ROCK_CFG_NAME_FIELD, SOUL_REFINE_ROCK_CFG_DESC_FIELD, SOUL_REFINE_ROCK_CFG_POSITION_FIELD}
+SOUL_REFINE_ROCK_CFG.is_extendable = false
+SOUL_REFINE_ROCK_CFG.extensions = {}
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.name = "items"
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_refine_rock_cfgs.items"
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.number = 1
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.index = 0
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.label = 3
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.has_default_value = false
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.default_value = {}
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.message_type = SOUL_REFINE_ROCK_CFG
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.type = 11
+SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.cpp_type = 10
+
+SOUL_REFINE_ROCK_CFGS.name = "soul_refine_rock_cfgs"
+SOUL_REFINE_ROCK_CFGS.full_name = ".ftcfg.soul_refine_rock_cfgs"
+SOUL_REFINE_ROCK_CFGS.nested_types = {}
+SOUL_REFINE_ROCK_CFGS.enum_types = {}
+SOUL_REFINE_ROCK_CFGS.fields = {SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD}
+SOUL_REFINE_ROCK_CFGS.is_extendable = false
+SOUL_REFINE_ROCK_CFGS.extensions = {}
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.name = "level_id"
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.wizard_task_cfg.level_id"
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.number = 1
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.index = 0
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.label = 2
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.has_default_value = false
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.default_value = 0
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.type = 5
+WIZARD_TASK_CFG_LEVEL_ID_FIELD.cpp_type = 1
+
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.name = "level_min"
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.wizard_task_cfg.level_min"
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.number = 2
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.index = 1
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.label = 2
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.has_default_value = false
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.default_value = 0
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.type = 5
+WIZARD_TASK_CFG_LEVEL_MIN_FIELD.cpp_type = 1
+
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.name = "use_item_id"
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.full_name = ".ftcfg.wizard_task_cfg.use_item_id"
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.number = 3
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.index = 2
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.label = 2
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.has_default_value = false
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.default_value = 0
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.type = 5
+WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.cpp_type = 1
+
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.name = "use_item_num"
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.full_name = ".ftcfg.wizard_task_cfg.use_item_num"
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.number = 4
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.index = 3
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.label = 2
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.has_default_value = false
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.default_value = 0
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.type = 5
+WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.cpp_type = 1
+
+WIZARD_TASK_CFG.name = "wizard_task_cfg"
+WIZARD_TASK_CFG.full_name = ".ftcfg.wizard_task_cfg"
+WIZARD_TASK_CFG.nested_types = {}
+WIZARD_TASK_CFG.enum_types = {}
+WIZARD_TASK_CFG.fields = {WIZARD_TASK_CFG_LEVEL_ID_FIELD, WIZARD_TASK_CFG_LEVEL_MIN_FIELD, WIZARD_TASK_CFG_USE_ITEM_ID_FIELD, WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD}
+WIZARD_TASK_CFG.is_extendable = false
+WIZARD_TASK_CFG.extensions = {}
+WIZARD_TASK_CFGS_ITEMS_FIELD.name = "items"
+WIZARD_TASK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_task_cfgs.items"
+WIZARD_TASK_CFGS_ITEMS_FIELD.number = 1
+WIZARD_TASK_CFGS_ITEMS_FIELD.index = 0
+WIZARD_TASK_CFGS_ITEMS_FIELD.label = 3
+WIZARD_TASK_CFGS_ITEMS_FIELD.has_default_value = false
+WIZARD_TASK_CFGS_ITEMS_FIELD.default_value = {}
+WIZARD_TASK_CFGS_ITEMS_FIELD.message_type = WIZARD_TASK_CFG
+WIZARD_TASK_CFGS_ITEMS_FIELD.type = 11
+WIZARD_TASK_CFGS_ITEMS_FIELD.cpp_type = 10
+
+WIZARD_TASK_CFGS.name = "wizard_task_cfgs"
+WIZARD_TASK_CFGS.full_name = ".ftcfg.wizard_task_cfgs"
+WIZARD_TASK_CFGS.nested_types = {}
+WIZARD_TASK_CFGS.enum_types = {}
+WIZARD_TASK_CFGS.fields = {WIZARD_TASK_CFGS_ITEMS_FIELD}
+WIZARD_TASK_CFGS.is_extendable = false
+WIZARD_TASK_CFGS.extensions = {}
+WIZARD_LEVEL_CFG_ID_FIELD.name = "id"
+WIZARD_LEVEL_CFG_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.id"
+WIZARD_LEVEL_CFG_ID_FIELD.number = 1
+WIZARD_LEVEL_CFG_ID_FIELD.index = 0
+WIZARD_LEVEL_CFG_ID_FIELD.label = 2
+WIZARD_LEVEL_CFG_ID_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_ID_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_ID_FIELD.type = 5
+WIZARD_LEVEL_CFG_ID_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.name = "legendary"
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.full_name = ".ftcfg.wizard_level_cfg.legendary"
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.number = 2
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.index = 1
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.label = 2
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.type = 5
+WIZARD_LEVEL_CFG_LEGENDARY_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.name = "icon_id"
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.icon_id"
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.number = 3
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.index = 2
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.label = 2
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.type = 5
+WIZARD_LEVEL_CFG_ICON_ID_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG_NAME_FIELD.name = "name"
+WIZARD_LEVEL_CFG_NAME_FIELD.full_name = ".ftcfg.wizard_level_cfg.name"
+WIZARD_LEVEL_CFG_NAME_FIELD.number = 4
+WIZARD_LEVEL_CFG_NAME_FIELD.index = 3
+WIZARD_LEVEL_CFG_NAME_FIELD.label = 2
+WIZARD_LEVEL_CFG_NAME_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_NAME_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_NAME_FIELD.type = 5
+WIZARD_LEVEL_CFG_NAME_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.name = "reward_id"
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.reward_id"
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.number = 5
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.index = 4
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.label = 2
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.type = 5
+WIZARD_LEVEL_CFG_REWARD_ID_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.name = "del_legendary"
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.full_name = ".ftcfg.wizard_level_cfg.del_legendary"
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.number = 6
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.index = 5
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.label = 2
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.has_default_value = false
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.default_value = 0
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.type = 5
+WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.cpp_type = 1
+
+WIZARD_LEVEL_CFG.name = "wizard_level_cfg"
+WIZARD_LEVEL_CFG.full_name = ".ftcfg.wizard_level_cfg"
+WIZARD_LEVEL_CFG.nested_types = {}
+WIZARD_LEVEL_CFG.enum_types = {}
+WIZARD_LEVEL_CFG.fields = {WIZARD_LEVEL_CFG_ID_FIELD, WIZARD_LEVEL_CFG_LEGENDARY_FIELD, WIZARD_LEVEL_CFG_ICON_ID_FIELD, WIZARD_LEVEL_CFG_NAME_FIELD, WIZARD_LEVEL_CFG_REWARD_ID_FIELD, WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD}
+WIZARD_LEVEL_CFG.is_extendable = false
+WIZARD_LEVEL_CFG.extensions = {}
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.name = "items"
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_level_cfgs.items"
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.number = 1
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.index = 0
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.label = 3
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.message_type = WIZARD_LEVEL_CFG
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.type = 11
+WIZARD_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+WIZARD_LEVEL_CFGS.name = "wizard_level_cfgs"
+WIZARD_LEVEL_CFGS.full_name = ".ftcfg.wizard_level_cfgs"
+WIZARD_LEVEL_CFGS.nested_types = {}
+WIZARD_LEVEL_CFGS.enum_types = {}
+WIZARD_LEVEL_CFGS.fields = {WIZARD_LEVEL_CFGS_ITEMS_FIELD}
+WIZARD_LEVEL_CFGS.is_extendable = false
+WIZARD_LEVEL_CFGS.extensions = {}
+WIZARD_BASE_CFG_ID_FIELD.name = "id"
+WIZARD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.wizard_base_cfg.id"
+WIZARD_BASE_CFG_ID_FIELD.number = 1
+WIZARD_BASE_CFG_ID_FIELD.index = 0
+WIZARD_BASE_CFG_ID_FIELD.label = 2
+WIZARD_BASE_CFG_ID_FIELD.has_default_value = false
+WIZARD_BASE_CFG_ID_FIELD.default_value = 0
+WIZARD_BASE_CFG_ID_FIELD.type = 5
+WIZARD_BASE_CFG_ID_FIELD.cpp_type = 1
+
+WIZARD_BASE_CFG_DATA_FIELD.name = "data"
+WIZARD_BASE_CFG_DATA_FIELD.full_name = ".ftcfg.wizard_base_cfg.data"
+WIZARD_BASE_CFG_DATA_FIELD.number = 2
+WIZARD_BASE_CFG_DATA_FIELD.index = 1
+WIZARD_BASE_CFG_DATA_FIELD.label = 2
+WIZARD_BASE_CFG_DATA_FIELD.has_default_value = false
+WIZARD_BASE_CFG_DATA_FIELD.default_value = 0.0
+WIZARD_BASE_CFG_DATA_FIELD.type = 1
+WIZARD_BASE_CFG_DATA_FIELD.cpp_type = 5
+
+WIZARD_BASE_CFG.name = "wizard_base_cfg"
+WIZARD_BASE_CFG.full_name = ".ftcfg.wizard_base_cfg"
+WIZARD_BASE_CFG.nested_types = {}
+WIZARD_BASE_CFG.enum_types = {}
+WIZARD_BASE_CFG.fields = {WIZARD_BASE_CFG_ID_FIELD, WIZARD_BASE_CFG_DATA_FIELD}
+WIZARD_BASE_CFG.is_extendable = false
+WIZARD_BASE_CFG.extensions = {}
+WIZARD_BASE_CFGS_ITEMS_FIELD.name = "items"
+WIZARD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_base_cfgs.items"
+WIZARD_BASE_CFGS_ITEMS_FIELD.number = 1
+WIZARD_BASE_CFGS_ITEMS_FIELD.index = 0
+WIZARD_BASE_CFGS_ITEMS_FIELD.label = 3
+WIZARD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
+WIZARD_BASE_CFGS_ITEMS_FIELD.default_value = {}
+WIZARD_BASE_CFGS_ITEMS_FIELD.message_type = WIZARD_BASE_CFG
+WIZARD_BASE_CFGS_ITEMS_FIELD.type = 11
+WIZARD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+WIZARD_BASE_CFGS.name = "wizard_base_cfgs"
+WIZARD_BASE_CFGS.full_name = ".ftcfg.wizard_base_cfgs"
+WIZARD_BASE_CFGS.nested_types = {}
+WIZARD_BASE_CFGS.enum_types = {}
+WIZARD_BASE_CFGS.fields = {WIZARD_BASE_CFGS_ITEMS_FIELD}
+WIZARD_BASE_CFGS.is_extendable = false
+WIZARD_BASE_CFGS.extensions = {}
+MAGIC_DIVINE_CFG_ID_FIELD.name = "id"
+MAGIC_DIVINE_CFG_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.id"
+MAGIC_DIVINE_CFG_ID_FIELD.number = 1
+MAGIC_DIVINE_CFG_ID_FIELD.index = 0
+MAGIC_DIVINE_CFG_ID_FIELD.label = 2
+MAGIC_DIVINE_CFG_ID_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_ID_FIELD.default_value = 0
+MAGIC_DIVINE_CFG_ID_FIELD.type = 5
+MAGIC_DIVINE_CFG_ID_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.name = "prop_id"
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.prop_id"
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.number = 2
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.index = 1
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.label = 3
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.default_value = {}
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.type = 5
+MAGIC_DIVINE_CFG_PROP_ID_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.name = "prop_num"
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.full_name = ".ftcfg.magic_divine_cfg.prop_num"
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.number = 3
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.index = 2
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.label = 3
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.default_value = {}
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.type = 5
+MAGIC_DIVINE_CFG_PROP_NUM_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.name = "week_day"
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.full_name = ".ftcfg.magic_divine_cfg.week_day"
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.number = 4
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.index = 3
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.label = 2
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.default_value = 0
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.type = 5
+MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_TIMES_FIELD.name = "times"
+MAGIC_DIVINE_CFG_TIMES_FIELD.full_name = ".ftcfg.magic_divine_cfg.times"
+MAGIC_DIVINE_CFG_TIMES_FIELD.number = 5
+MAGIC_DIVINE_CFG_TIMES_FIELD.index = 4
+MAGIC_DIVINE_CFG_TIMES_FIELD.label = 3
+MAGIC_DIVINE_CFG_TIMES_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_TIMES_FIELD.default_value = {}
+MAGIC_DIVINE_CFG_TIMES_FIELD.type = 5
+MAGIC_DIVINE_CFG_TIMES_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.name = "section_id"
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.section_id"
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.number = 6
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.index = 5
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.label = 2
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.default_value = 0
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.type = 5
+MAGIC_DIVINE_CFG_SECTION_ID_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG_LEVEL_FIELD.name = "level"
+MAGIC_DIVINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.magic_divine_cfg.level"
+MAGIC_DIVINE_CFG_LEVEL_FIELD.number = 7
+MAGIC_DIVINE_CFG_LEVEL_FIELD.index = 6
+MAGIC_DIVINE_CFG_LEVEL_FIELD.label = 2
+MAGIC_DIVINE_CFG_LEVEL_FIELD.has_default_value = false
+MAGIC_DIVINE_CFG_LEVEL_FIELD.default_value = 0
+MAGIC_DIVINE_CFG_LEVEL_FIELD.type = 5
+MAGIC_DIVINE_CFG_LEVEL_FIELD.cpp_type = 1
+
+MAGIC_DIVINE_CFG.name = "magic_divine_cfg"
+MAGIC_DIVINE_CFG.full_name = ".ftcfg.magic_divine_cfg"
+MAGIC_DIVINE_CFG.nested_types = {}
+MAGIC_DIVINE_CFG.enum_types = {}
+MAGIC_DIVINE_CFG.fields = {MAGIC_DIVINE_CFG_ID_FIELD, MAGIC_DIVINE_CFG_PROP_ID_FIELD, MAGIC_DIVINE_CFG_PROP_NUM_FIELD, MAGIC_DIVINE_CFG_WEEK_DAY_FIELD, MAGIC_DIVINE_CFG_TIMES_FIELD, MAGIC_DIVINE_CFG_SECTION_ID_FIELD, MAGIC_DIVINE_CFG_LEVEL_FIELD}
+MAGIC_DIVINE_CFG.is_extendable = false
+MAGIC_DIVINE_CFG.extensions = {}
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_divine_cfgs.items"
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.number = 1
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.index = 0
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.label = 3
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.message_type = MAGIC_DIVINE_CFG
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.type = 11
+MAGIC_DIVINE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_DIVINE_CFGS.name = "magic_divine_cfgs"
+MAGIC_DIVINE_CFGS.full_name = ".ftcfg.magic_divine_cfgs"
+MAGIC_DIVINE_CFGS.nested_types = {}
+MAGIC_DIVINE_CFGS.enum_types = {}
+MAGIC_DIVINE_CFGS.fields = {MAGIC_DIVINE_CFGS_ITEMS_FIELD}
+MAGIC_DIVINE_CFGS.is_extendable = false
+MAGIC_DIVINE_CFGS.extensions = {}
+DIVINE_SECTION_CFG_ID_FIELD.name = "id"
+DIVINE_SECTION_CFG_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.id"
+DIVINE_SECTION_CFG_ID_FIELD.number = 1
+DIVINE_SECTION_CFG_ID_FIELD.index = 0
+DIVINE_SECTION_CFG_ID_FIELD.label = 2
+DIVINE_SECTION_CFG_ID_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_ID_FIELD.default_value = 0
+DIVINE_SECTION_CFG_ID_FIELD.type = 5
+DIVINE_SECTION_CFG_ID_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_GROUP_FIELD.name = "group"
+DIVINE_SECTION_CFG_GROUP_FIELD.full_name = ".ftcfg.divine_section_cfg.group"
+DIVINE_SECTION_CFG_GROUP_FIELD.number = 2
+DIVINE_SECTION_CFG_GROUP_FIELD.index = 1
+DIVINE_SECTION_CFG_GROUP_FIELD.label = 2
+DIVINE_SECTION_CFG_GROUP_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_GROUP_FIELD.default_value = 0
+DIVINE_SECTION_CFG_GROUP_FIELD.type = 5
+DIVINE_SECTION_CFG_GROUP_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.name = "group_name"
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.full_name = ".ftcfg.divine_section_cfg.group_name"
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.number = 3
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.index = 2
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.label = 2
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.default_value = 0
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.type = 5
+DIVINE_SECTION_CFG_GROUP_NAME_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_SECTION_FIELD.name = "section"
+DIVINE_SECTION_CFG_SECTION_FIELD.full_name = ".ftcfg.divine_section_cfg.section"
+DIVINE_SECTION_CFG_SECTION_FIELD.number = 4
+DIVINE_SECTION_CFG_SECTION_FIELD.index = 3
+DIVINE_SECTION_CFG_SECTION_FIELD.label = 2
+DIVINE_SECTION_CFG_SECTION_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_SECTION_FIELD.default_value = 0
+DIVINE_SECTION_CFG_SECTION_FIELD.type = 5
+DIVINE_SECTION_CFG_SECTION_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.name = "section_name"
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.full_name = ".ftcfg.divine_section_cfg.section_name"
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.number = 5
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.index = 4
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.label = 2
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.default_value = 0
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.type = 5
+DIVINE_SECTION_CFG_SECTION_NAME_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.name = "section_desc"
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.full_name = ".ftcfg.divine_section_cfg.section_desc"
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.number = 6
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.index = 5
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.label = 2
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.default_value = 0
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.type = 5
+DIVINE_SECTION_CFG_SECTION_DESC_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.name = "mission_id"
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.mission_id"
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.number = 7
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.index = 6
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.label = 2
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.default_value = 0
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.type = 5
+DIVINE_SECTION_CFG_MISSION_ID_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.name = "partner_id"
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.partner_id"
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.number = 8
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.index = 7
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.label = 3
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.has_default_value = false
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.default_value = {}
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.type = 5
+DIVINE_SECTION_CFG_PARTNER_ID_FIELD.cpp_type = 1
+
+DIVINE_SECTION_CFG.name = "divine_section_cfg"
+DIVINE_SECTION_CFG.full_name = ".ftcfg.divine_section_cfg"
+DIVINE_SECTION_CFG.nested_types = {}
+DIVINE_SECTION_CFG.enum_types = {}
+DIVINE_SECTION_CFG.fields = {DIVINE_SECTION_CFG_ID_FIELD, DIVINE_SECTION_CFG_GROUP_FIELD, DIVINE_SECTION_CFG_GROUP_NAME_FIELD, DIVINE_SECTION_CFG_SECTION_FIELD, DIVINE_SECTION_CFG_SECTION_NAME_FIELD, DIVINE_SECTION_CFG_SECTION_DESC_FIELD, DIVINE_SECTION_CFG_MISSION_ID_FIELD, DIVINE_SECTION_CFG_PARTNER_ID_FIELD}
+DIVINE_SECTION_CFG.is_extendable = false
+DIVINE_SECTION_CFG.extensions = {}
+DIVINE_SECTION_CFGS_ITEMS_FIELD.name = "items"
+DIVINE_SECTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.divine_section_cfgs.items"
+DIVINE_SECTION_CFGS_ITEMS_FIELD.number = 1
+DIVINE_SECTION_CFGS_ITEMS_FIELD.index = 0
+DIVINE_SECTION_CFGS_ITEMS_FIELD.label = 3
+DIVINE_SECTION_CFGS_ITEMS_FIELD.has_default_value = false
+DIVINE_SECTION_CFGS_ITEMS_FIELD.default_value = {}
+DIVINE_SECTION_CFGS_ITEMS_FIELD.message_type = DIVINE_SECTION_CFG
+DIVINE_SECTION_CFGS_ITEMS_FIELD.type = 11
+DIVINE_SECTION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+DIVINE_SECTION_CFGS.name = "divine_section_cfgs"
+DIVINE_SECTION_CFGS.full_name = ".ftcfg.divine_section_cfgs"
+DIVINE_SECTION_CFGS.nested_types = {}
+DIVINE_SECTION_CFGS.enum_types = {}
+DIVINE_SECTION_CFGS.fields = {DIVINE_SECTION_CFGS_ITEMS_FIELD}
+DIVINE_SECTION_CFGS.is_extendable = false
+DIVINE_SECTION_CFGS.extensions = {}
+DIVINE_MISSION_CFG_ID_FIELD.name = "id"
+DIVINE_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.divine_mission_cfg.id"
+DIVINE_MISSION_CFG_ID_FIELD.number = 1
+DIVINE_MISSION_CFG_ID_FIELD.index = 0
+DIVINE_MISSION_CFG_ID_FIELD.label = 2
+DIVINE_MISSION_CFG_ID_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_ID_FIELD.default_value = 0
+DIVINE_MISSION_CFG_ID_FIELD.type = 5
+DIVINE_MISSION_CFG_ID_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.name = "mission_id"
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.full_name = ".ftcfg.divine_mission_cfg.mission_id"
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.number = 2
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.index = 1
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.label = 2
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.default_value = 0
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.type = 5
+DIVINE_MISSION_CFG_MISSION_ID_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG_RANGE_FIELD.name = "range"
+DIVINE_MISSION_CFG_RANGE_FIELD.full_name = ".ftcfg.divine_mission_cfg.range"
+DIVINE_MISSION_CFG_RANGE_FIELD.number = 3
+DIVINE_MISSION_CFG_RANGE_FIELD.index = 2
+DIVINE_MISSION_CFG_RANGE_FIELD.label = 2
+DIVINE_MISSION_CFG_RANGE_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_RANGE_FIELD.default_value = 0
+DIVINE_MISSION_CFG_RANGE_FIELD.type = 5
+DIVINE_MISSION_CFG_RANGE_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG_QUALITY_FIELD.name = "quality"
+DIVINE_MISSION_CFG_QUALITY_FIELD.full_name = ".ftcfg.divine_mission_cfg.quality"
+DIVINE_MISSION_CFG_QUALITY_FIELD.number = 4
+DIVINE_MISSION_CFG_QUALITY_FIELD.index = 3
+DIVINE_MISSION_CFG_QUALITY_FIELD.label = 2
+DIVINE_MISSION_CFG_QUALITY_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_QUALITY_FIELD.default_value = 0
+DIVINE_MISSION_CFG_QUALITY_FIELD.type = 5
+DIVINE_MISSION_CFG_QUALITY_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.name = "fetters_num"
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.full_name = ".ftcfg.divine_mission_cfg.fetters_num"
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.number = 5
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.index = 4
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.label = 2
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.default_value = 0
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.type = 5
+DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.name = "qualityrange"
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.full_name = ".ftcfg.divine_mission_cfg.qualityrange"
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.number = 6
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.index = 5
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.label = 2
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.has_default_value = false
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.default_value = 0
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.type = 5
+DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.cpp_type = 1
+
+DIVINE_MISSION_CFG.name = "divine_mission_cfg"
+DIVINE_MISSION_CFG.full_name = ".ftcfg.divine_mission_cfg"
+DIVINE_MISSION_CFG.nested_types = {}
+DIVINE_MISSION_CFG.enum_types = {}
+DIVINE_MISSION_CFG.fields = {DIVINE_MISSION_CFG_ID_FIELD, DIVINE_MISSION_CFG_MISSION_ID_FIELD, DIVINE_MISSION_CFG_RANGE_FIELD, DIVINE_MISSION_CFG_QUALITY_FIELD, DIVINE_MISSION_CFG_FETTERS_NUM_FIELD, DIVINE_MISSION_CFG_QUALITYRANGE_FIELD}
+DIVINE_MISSION_CFG.is_extendable = false
+DIVINE_MISSION_CFG.extensions = {}
+DIVINE_MISSION_CFGS_ITEMS_FIELD.name = "items"
+DIVINE_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.divine_mission_cfgs.items"
+DIVINE_MISSION_CFGS_ITEMS_FIELD.number = 1
+DIVINE_MISSION_CFGS_ITEMS_FIELD.index = 0
+DIVINE_MISSION_CFGS_ITEMS_FIELD.label = 3
+DIVINE_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
+DIVINE_MISSION_CFGS_ITEMS_FIELD.default_value = {}
+DIVINE_MISSION_CFGS_ITEMS_FIELD.message_type = DIVINE_MISSION_CFG
+DIVINE_MISSION_CFGS_ITEMS_FIELD.type = 11
+DIVINE_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
+
+DIVINE_MISSION_CFGS.name = "divine_mission_cfgs"
+DIVINE_MISSION_CFGS.full_name = ".ftcfg.divine_mission_cfgs"
+DIVINE_MISSION_CFGS.nested_types = {}
+DIVINE_MISSION_CFGS.enum_types = {}
+DIVINE_MISSION_CFGS.fields = {DIVINE_MISSION_CFGS_ITEMS_FIELD}
+DIVINE_MISSION_CFGS.is_extendable = false
+DIVINE_MISSION_CFGS.extensions = {}
+MAGIC_SKILL_CFG_ID_FIELD.name = "id"
+MAGIC_SKILL_CFG_ID_FIELD.full_name = ".ftcfg.magic_skill_cfg.id"
+MAGIC_SKILL_CFG_ID_FIELD.number = 1
+MAGIC_SKILL_CFG_ID_FIELD.index = 0
+MAGIC_SKILL_CFG_ID_FIELD.label = 2
+MAGIC_SKILL_CFG_ID_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_ID_FIELD.default_value = 0
+MAGIC_SKILL_CFG_ID_FIELD.type = 13
+MAGIC_SKILL_CFG_ID_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_LAYERID_FIELD.name = "layerid"
+MAGIC_SKILL_CFG_LAYERID_FIELD.full_name = ".ftcfg.magic_skill_cfg.layerid"
+MAGIC_SKILL_CFG_LAYERID_FIELD.number = 2
+MAGIC_SKILL_CFG_LAYERID_FIELD.index = 1
+MAGIC_SKILL_CFG_LAYERID_FIELD.label = 2
+MAGIC_SKILL_CFG_LAYERID_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_LAYERID_FIELD.default_value = 0
+MAGIC_SKILL_CFG_LAYERID_FIELD.type = 13
+MAGIC_SKILL_CFG_LAYERID_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.name = "max_level"
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_cfg.max_level"
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.number = 3
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.index = 2
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.label = 2
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.default_value = 0
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.type = 13
+MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.name = "magicid_arr"
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.full_name = ".ftcfg.magic_skill_cfg.magicid_arr"
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.number = 4
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.index = 3
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.label = 3
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.default_value = {}
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.type = 13
+MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_skill_cfg.magic_type"
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.number = 5
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.index = 4
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.label = 2
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.default_value = 0
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.type = 13
+MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.name = "slot_lock_cond"
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.full_name = ".ftcfg.magic_skill_cfg.slot_lock_cond"
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.number = 6
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.index = 5
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.label = 2
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.default_value = 0
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.type = 13
+MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.name = "skill_position"
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_position"
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.number = 7
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.index = 6
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.label = 2
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.default_value = 0
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.type = 13
+MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.name = "skill_icon"
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_icon"
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.number = 8
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.index = 7
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.label = 2
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.default_value = 0
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.type = 13
+MAGIC_SKILL_CFG_SKILL_ICON_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.name = "skill_name"
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_name"
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.number = 9
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.index = 8
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.label = 2
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.default_value = 0
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.type = 13
+MAGIC_SKILL_CFG_SKILL_NAME_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.name = "skill_condition"
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_condition"
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.number = 10
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.index = 9
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.label = 2
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.has_default_value = false
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.default_value = 0
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.type = 13
+MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.cpp_type = 3
+
+MAGIC_SKILL_CFG.name = "magic_skill_cfg"
+MAGIC_SKILL_CFG.full_name = ".ftcfg.magic_skill_cfg"
+MAGIC_SKILL_CFG.nested_types = {}
+MAGIC_SKILL_CFG.enum_types = {}
+MAGIC_SKILL_CFG.fields = {MAGIC_SKILL_CFG_ID_FIELD, MAGIC_SKILL_CFG_LAYERID_FIELD, MAGIC_SKILL_CFG_MAX_LEVEL_FIELD, MAGIC_SKILL_CFG_MAGICID_ARR_FIELD, MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD, MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD, MAGIC_SKILL_CFG_SKILL_POSITION_FIELD, MAGIC_SKILL_CFG_SKILL_ICON_FIELD, MAGIC_SKILL_CFG_SKILL_NAME_FIELD, MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD}
+MAGIC_SKILL_CFG.is_extendable = false
+MAGIC_SKILL_CFG.extensions = {}
+MAGIC_SKILL_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_SKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_cfgs.items"
+MAGIC_SKILL_CFGS_ITEMS_FIELD.number = 1
+MAGIC_SKILL_CFGS_ITEMS_FIELD.index = 0
+MAGIC_SKILL_CFGS_ITEMS_FIELD.label = 3
+MAGIC_SKILL_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_SKILL_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_SKILL_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_CFG
+MAGIC_SKILL_CFGS_ITEMS_FIELD.type = 11
+MAGIC_SKILL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_SKILL_CFGS.name = "magic_skill_cfgs"
+MAGIC_SKILL_CFGS.full_name = ".ftcfg.magic_skill_cfgs"
+MAGIC_SKILL_CFGS.nested_types = {}
+MAGIC_SKILL_CFGS.enum_types = {}
+MAGIC_SKILL_CFGS.fields = {MAGIC_SKILL_CFGS_ITEMS_FIELD}
+MAGIC_SKILL_CFGS.is_extendable = false
+MAGIC_SKILL_CFGS.extensions = {}
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.name = "level"
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.level"
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.number = 1
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.index = 0
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.default_value = 0
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.name = "next_level"
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.next_level"
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.number = 2
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.index = 1
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.default_value = 0
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.name = "magicid"
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.magicid"
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.number = 3
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.index = 2
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.default_value = 0
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.attribute_type"
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.number = 4
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.index = 3
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.name = "attribute_value"
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.attribute_value"
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.number = 5
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.index = 4
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.label = 3
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.default_value = {}
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.name = "formation_base_rate_incr"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_base_rate_incr"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.number = 6
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.index = 5
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.default_value = 0.0
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.type = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.cpp_type = 6
+
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.name = "formation_rate"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_rate"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.number = 7
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.index = 6
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.default_value = 0.0
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.type = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.cpp_type = 6
+
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.name = "formation_rate_incr"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_rate_incr"
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.number = 8
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.index = 7
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.label = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.default_value = 0.0
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.type = 2
+MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.cpp_type = 6
+
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.name = "skill_tips"
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.skill_tips"
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.number = 9
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.index = 8
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.label = 3
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.default_value = {}
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.type = 13
+MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.cpp_type = 3
+
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.name = "partner_tips"
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.partner_tips"
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.number = 10
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.index = 9
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.label = 3
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.default_value = {}
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.type = 2
+MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.cpp_type = 6
+
+MAGIC_SKILL_UPLEVEL_CFG.name = "magic_skill_uplevel_cfg"
+MAGIC_SKILL_UPLEVEL_CFG.full_name = ".ftcfg.magic_skill_uplevel_cfg"
+MAGIC_SKILL_UPLEVEL_CFG.nested_types = {}
+MAGIC_SKILL_UPLEVEL_CFG.enum_types = {}
+MAGIC_SKILL_UPLEVEL_CFG.fields = {MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD, MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD, MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD, MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD, MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD, MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD}
+MAGIC_SKILL_UPLEVEL_CFG.is_extendable = false
+MAGIC_SKILL_UPLEVEL_CFG.extensions = {}
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfgs.items"
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.number = 1
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.index = 0
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.label = 3
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_UPLEVEL_CFG
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.type = 11
+MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_SKILL_UPLEVEL_CFGS.name = "magic_skill_uplevel_cfgs"
+MAGIC_SKILL_UPLEVEL_CFGS.full_name = ".ftcfg.magic_skill_uplevel_cfgs"
+MAGIC_SKILL_UPLEVEL_CFGS.nested_types = {}
+MAGIC_SKILL_UPLEVEL_CFGS.enum_types = {}
+MAGIC_SKILL_UPLEVEL_CFGS.fields = {MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD}
+MAGIC_SKILL_UPLEVEL_CFGS.is_extendable = false
+MAGIC_SKILL_UPLEVEL_CFGS.extensions = {}
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.name = "layerid"
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.layerid"
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.number = 1
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.index = 0
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.label = 2
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.has_default_value = false
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.default_value = 0
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.type = 13
+MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.cpp_type = 3
+
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.name = "role_level"
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.role_level"
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.number = 2
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.index = 1
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.label = 2
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.has_default_value = false
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.default_value = 0
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.type = 13
+MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.cpp_type = 3
+
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.name = "layerid_arr"
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.layerid_arr"
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.number = 3
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.index = 2
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.label = 3
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.has_default_value = false
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.default_value = {}
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.type = 13
+MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.cpp_type = 3
+
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.name = "max_magic_skill_num"
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.max_magic_skill_num"
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.number = 4
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.index = 3
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.label = 2
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.has_default_value = false
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.default_value = 0
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.type = 13
+MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.cpp_type = 3
+
+MAGIC_SKILL_LAYER_CFG.name = "magic_skill_layer_cfg"
+MAGIC_SKILL_LAYER_CFG.full_name = ".ftcfg.magic_skill_layer_cfg"
+MAGIC_SKILL_LAYER_CFG.nested_types = {}
+MAGIC_SKILL_LAYER_CFG.enum_types = {}
+MAGIC_SKILL_LAYER_CFG.fields = {MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD, MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD, MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD, MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD}
+MAGIC_SKILL_LAYER_CFG.is_extendable = false
+MAGIC_SKILL_LAYER_CFG.extensions = {}
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_layer_cfgs.items"
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.number = 1
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.index = 0
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.label = 3
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_LAYER_CFG
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.type = 11
+MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_SKILL_LAYER_CFGS.name = "magic_skill_layer_cfgs"
+MAGIC_SKILL_LAYER_CFGS.full_name = ".ftcfg.magic_skill_layer_cfgs"
+MAGIC_SKILL_LAYER_CFGS.nested_types = {}
+MAGIC_SKILL_LAYER_CFGS.enum_types = {}
+MAGIC_SKILL_LAYER_CFGS.fields = {MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD}
+MAGIC_SKILL_LAYER_CFGS.is_extendable = false
+MAGIC_SKILL_LAYER_CFGS.extensions = {}
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.name = "confid"
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.confid"
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.number = 1
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.index = 0
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_CONFID_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.name = "main_quest_id"
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.main_quest_id"
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.number = 2
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.index = 1
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.name = "role_level"
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.role_level"
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.number = 3
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.index = 2
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.name = "min_point"
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.min_point"
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.number = 4
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.index = 3
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.name = "max_point"
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.max_point"
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.number = 5
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.index = 4
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.item_id"
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.number = 6
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.index = 5
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.name = "item_num"
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.item_num"
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.number = 7
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.index = 6
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.name = "coin_type"
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.coin_type"
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.number = 8
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.index = 7
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.label = 3
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.default_value = {}
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.name = "coin_num"
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.coin_num"
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.number = 9
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.index = 8
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.label = 3
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.default_value = {}
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.name = "refine_time"
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.refine_time"
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.number = 10
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.index = 9
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.label = 2
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.default_value = 0
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.name = "cancel_coin_type"
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.cancel_coin_type"
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.number = 11
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.index = 10
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.label = 3
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.default_value = {}
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.name = "cancel_coin_num"
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.cancel_coin_num"
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.number = 12
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.index = 11
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.label = 3
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.default_value = {}
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.type = 13
+MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.cpp_type = 3
+
+MAGIC_POINT_REFINE_CFG.name = "magic_point_refine_cfg"
+MAGIC_POINT_REFINE_CFG.full_name = ".ftcfg.magic_point_refine_cfg"
+MAGIC_POINT_REFINE_CFG.nested_types = {}
+MAGIC_POINT_REFINE_CFG.enum_types = {}
+MAGIC_POINT_REFINE_CFG.fields = {MAGIC_POINT_REFINE_CFG_CONFID_FIELD, MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD, MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD, MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD, MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD, MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD, MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD, MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD, MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD, MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD, MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD, MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD}
+MAGIC_POINT_REFINE_CFG.is_extendable = false
+MAGIC_POINT_REFINE_CFG.extensions = {}
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.name = "items"
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_point_refine_cfgs.items"
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.number = 1
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.index = 0
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.label = 3
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.default_value = {}
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.message_type = MAGIC_POINT_REFINE_CFG
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.type = 11
+MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
+
+MAGIC_POINT_REFINE_CFGS.name = "magic_point_refine_cfgs"
+MAGIC_POINT_REFINE_CFGS.full_name = ".ftcfg.magic_point_refine_cfgs"
+MAGIC_POINT_REFINE_CFGS.nested_types = {}
+MAGIC_POINT_REFINE_CFGS.enum_types = {}
+MAGIC_POINT_REFINE_CFGS.fields = {MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD}
+MAGIC_POINT_REFINE_CFGS.is_extendable = false
+MAGIC_POINT_REFINE_CFGS.extensions = {}
+
+activation_cfg = protobuf.Message(ACTIVATION_CFG)
+activation_cfgs = protobuf.Message(ACTIVATION_CFGS)
+activation_reward_cfg = protobuf.Message(ACTIVATION_REWARD_CFG)
+activation_reward_cfgs = protobuf.Message(ACTIVATION_REWARD_CFGS)
+activity_cfg = protobuf.Message(ACTIVITY_CFG)
+activity_cfgs = protobuf.Message(ACTIVITY_CFGS)
+activity_dungeon_cfg = protobuf.Message(ACTIVITY_DUNGEON_CFG)
+activity_dungeon_cfgs = protobuf.Message(ACTIVITY_DUNGEON_CFGS)
+activity_info_cfg = protobuf.Message(ACTIVITY_INFO_CFG)
+activity_info_cfgs = protobuf.Message(ACTIVITY_INFO_CFGS)
+activity_rooms_cfg = protobuf.Message(ACTIVITY_ROOMS_CFG)
+activity_rooms_cfgs = protobuf.Message(ACTIVITY_ROOMS_CFGS)
+arena_data_cfg = protobuf.Message(ARENA_DATA_CFG)
+arena_data_cfgs = protobuf.Message(ARENA_DATA_CFGS)
+arena_reward_cfg = protobuf.Message(ARENA_REWARD_CFG)
+arena_reward_cfgs = protobuf.Message(ARENA_REWARD_CFGS)
+attribute_show_cfg = protobuf.Message(ATTRIBUTE_SHOW_CFG)
+attribute_show_cfgs = protobuf.Message(ATTRIBUTE_SHOW_CFGS)
+bag_routine_cfg = protobuf.Message(BAG_ROUTINE_CFG)
+bag_routine_cfgs = protobuf.Message(BAG_ROUTINE_CFGS)
+base_prop_cfg = protobuf.Message(BASE_PROP_CFG)
+base_prop_cfgs = protobuf.Message(BASE_PROP_CFGS)
+battle_collect_crystal_cfg = protobuf.Message(BATTLE_COLLECT_CRYSTAL_CFG)
+battle_collect_crystal_cfgs = protobuf.Message(BATTLE_COLLECT_CRYSTAL_CFGS)
+battle_crystal_info_cfg = protobuf.Message(BATTLE_CRYSTAL_INFO_CFG)
+battle_crystal_info_cfgs = protobuf.Message(BATTLE_CRYSTAL_INFO_CFGS)
+battle_crystal_rooms_cfg = protobuf.Message(BATTLE_CRYSTAL_ROOMS_CFG)
+battle_crystal_rooms_cfgs = protobuf.Message(BATTLE_CRYSTAL_ROOMS_CFGS)
+boss_show_cam_cfg = protobuf.Message(BOSS_SHOW_CAM_CFG)
+boss_show_cam_cfgs = protobuf.Message(BOSS_SHOW_CAM_CFGS)
+boss_show_ui_cfg = protobuf.Message(BOSS_SHOW_UI_CFG)
+boss_show_ui_cfgs = protobuf.Message(BOSS_SHOW_UI_CFGS)
+boss_showinfo_cfg = protobuf.Message(BOSS_SHOWINFO_CFG)
+boss_showinfo_cfgs = protobuf.Message(BOSS_SHOWINFO_CFGS)
+box_collect_cfg = protobuf.Message(BOX_COLLECT_CFG)
+box_collect_cfgs = protobuf.Message(BOX_COLLECT_CFGS)
+boxs_cfg = protobuf.Message(BOXS_CFG)
+boxs_cfgs = protobuf.Message(BOXS_CFGS)
+buff_cfg = protobuf.Message(BUFF_CFG)
+buff_cfgs = protobuf.Message(BUFF_CFGS)
+buff_effect_cfg = protobuf.Message(BUFF_EFFECT_CFG)
+buff_effect_cfgs = protobuf.Message(BUFF_EFFECT_CFGS)
+building_mission_pool_cfg = protobuf.Message(BUILDING_MISSION_POOL_CFG)
+building_mission_pool_cfgs = protobuf.Message(BUILDING_MISSION_POOL_CFGS)
+business_activity_cfg = protobuf.Message(BUSINESS_ACTIVITY_CFG)
+business_activity_cfgs = protobuf.Message(BUSINESS_ACTIVITY_CFGS)
+cam_options_cfg = protobuf.Message(CAM_OPTIONS_CFG)
+cam_options_cfgs = protobuf.Message(CAM_OPTIONS_CFGS)
+camp_change_cost_cfg = protobuf.Message(CAMP_CHANGE_COST_CFG)
+camp_change_cost_cfgs = protobuf.Message(CAMP_CHANGE_COST_CFGS)
+camp_relation_cfg = protobuf.Message(CAMP_RELATION_CFG)
+camp_relation_cfgs = protobuf.Message(CAMP_RELATION_CFGS)
+campboss_cfg = protobuf.Message(CAMPBOSS_CFG)
+campboss_cfgs = protobuf.Message(CAMPBOSS_CFGS)
+char_default_cfg = protobuf.Message(CHAR_DEFAULT_CFG)
+char_default_cfgs = protobuf.Message(CHAR_DEFAULT_CFGS)
+chest_drop_cfg = protobuf.Message(CHEST_DROP_CFG)
+chest_drop_cfgs = protobuf.Message(CHEST_DROP_CFGS)
+client_trigger_action_cfg = protobuf.Message(CLIENT_TRIGGER_ACTION_CFG)
+client_trigger_action_cfgs = protobuf.Message(CLIENT_TRIGGER_ACTION_CFGS)
+client_trigger_cfg = protobuf.Message(CLIENT_TRIGGER_CFG)
+client_trigger_cfgs = protobuf.Message(CLIENT_TRIGGER_CFGS)
+client_trigger_condition_cfg = protobuf.Message(CLIENT_TRIGGER_CONDITION_CFG)
+client_trigger_condition_cfgs = protobuf.Message(CLIENT_TRIGGER_CONDITION_CFGS)
+client_trigger_event_cfg = protobuf.Message(CLIENT_TRIGGER_EVENT_CFG)
+client_trigger_event_cfgs = protobuf.Message(CLIENT_TRIGGER_EVENT_CFGS)
+client_trigger_variable_cfg = protobuf.Message(CLIENT_TRIGGER_VARIABLE_CFG)
+client_trigger_variable_cfgs = protobuf.Message(CLIENT_TRIGGER_VARIABLE_CFGS)
+clue_cfg = protobuf.Message(CLUE_CFG)
+clue_cfgs = protobuf.Message(CLUE_CFGS)
+convoy_biaoche_cfg = protobuf.Message(CONVOY_BIAOCHE_CFG)
+convoy_biaoche_cfgs = protobuf.Message(CONVOY_BIAOCHE_CFGS)
+convoy_biaoche_scene_cfg = protobuf.Message(CONVOY_BIAOCHE_SCENE_CFG)
+convoy_biaoche_scene_cfgs = protobuf.Message(CONVOY_BIAOCHE_SCENE_CFGS)
+cooldown_cfg = protobuf.Message(COOLDOWN_CFG)
+cooldown_cfgs = protobuf.Message(COOLDOWN_CFGS)
+crusade_base_cfg = protobuf.Message(CRUSADE_BASE_CFG)
+crusade_base_cfgs = protobuf.Message(CRUSADE_BASE_CFGS)
+crusade_dungon_cfg = protobuf.Message(CRUSADE_DUNGON_CFG)
+crusade_dungon_cfgs = protobuf.Message(CRUSADE_DUNGON_CFGS)
+depot_unlock_cfg = protobuf.Message(DEPOT_UNLOCK_CFG)
+depot_unlock_cfgs = protobuf.Message(DEPOT_UNLOCK_CFGS)
+dig_treasure_event_cfg = protobuf.Message(DIG_TREASURE_EVENT_CFG)
+dig_treasure_event_cfgs = protobuf.Message(DIG_TREASURE_EVENT_CFGS)
+divine_mission_cfg = protobuf.Message(DIVINE_MISSION_CFG)
+divine_mission_cfgs = protobuf.Message(DIVINE_MISSION_CFGS)
+divine_section_cfg = protobuf.Message(DIVINE_SECTION_CFG)
+divine_section_cfgs = protobuf.Message(DIVINE_SECTION_CFGS)
+drop_point_cfg = protobuf.Message(DROP_POINT_CFG)
+drop_point_cfgs = protobuf.Message(DROP_POINT_CFGS)
+edn_cfg = protobuf.Message(EDN_CFG)
+edn_cfgs = protobuf.Message(EDN_CFGS)
+edn_relic_cfg = protobuf.Message(EDN_RELIC_CFG)
+edn_relic_cfgs = protobuf.Message(EDN_RELIC_CFGS)
+edn_scene_cfg = protobuf.Message(EDN_SCENE_CFG)
+edn_scene_cfgs = protobuf.Message(EDN_SCENE_CFGS)
+elite_common_info_cfg = protobuf.Message(ELITE_COMMON_INFO_CFG)
+elite_common_info_cfgs = protobuf.Message(ELITE_COMMON_INFO_CFGS)
+elite_hell_info_cfg = protobuf.Message(ELITE_HELL_INFO_CFG)
+elite_hell_info_cfgs = protobuf.Message(ELITE_HELL_INFO_CFGS)
+elite_level_cfg = protobuf.Message(ELITE_LEVEL_CFG)
+elite_level_cfgs = protobuf.Message(ELITE_LEVEL_CFGS)
+elite_reward_cfg = protobuf.Message(ELITE_REWARD_CFG)
+elite_reward_cfgs = protobuf.Message(ELITE_REWARD_CFGS)
+equip_cfg = protobuf.Message(EQUIP_CFG)
+equip_cfgs = protobuf.Message(EQUIP_CFGS)
+equip_list_cfg = protobuf.Message(EQUIP_LIST_CFG)
+equip_list_cfgs = protobuf.Message(EQUIP_LIST_CFGS)
+equip_set_cfg = protobuf.Message(EQUIP_SET_CFG)
+equip_set_cfgs = protobuf.Message(EQUIP_SET_CFGS)
+equip_set_prop_cfg = protobuf.Message(EQUIP_SET_PROP_CFG)
+equip_set_prop_cfgs = protobuf.Message(EQUIP_SET_PROP_CFGS)
+errorcode_notify_cfg = protobuf.Message(ERRORCODE_NOTIFY_CFG)
+errorcode_notify_cfgs = protobuf.Message(ERRORCODE_NOTIFY_CFGS)
+fashion_appreciation_cfg = protobuf.Message(FASHION_APPRECIATION_CFG)
+fashion_appreciation_cfgs = protobuf.Message(FASHION_APPRECIATION_CFGS)
+fashion_cfg = protobuf.Message(FASHION_CFG)
+fashion_cfgs = protobuf.Message(FASHION_CFGS)
+fashion_cost_cfg = protobuf.Message(FASHION_COST_CFG)
+fashion_cost_cfgs = protobuf.Message(FASHION_COST_CFGS)
+fate_value_reward_cfg = protobuf.Message(FATE_VALUE_REWARD_CFG)
+fate_value_reward_cfgs = protobuf.Message(FATE_VALUE_REWARD_CFGS)
+fetter_cfg = protobuf.Message(FETTER_CFG)
+fetter_cfgs = protobuf.Message(FETTER_CFGS)
+fightcirme_reward_cfg = protobuf.Message(FIGHTCIRME_REWARD_CFG)
+fightcirme_reward_cfgs = protobuf.Message(FIGHTCIRME_REWARD_CFGS)
+fightcrime_cfg = protobuf.Message(FIGHTCRIME_CFG)
+fightcrime_cfgs = protobuf.Message(FIGHTCRIME_CFGS)
+fightcrime_monster_cfg = protobuf.Message(FIGHTCRIME_MONSTER_CFG)
+fightcrime_monster_cfgs = protobuf.Message(FIGHTCRIME_MONSTER_CFGS)
+formula_cfg = protobuf.Message(FORMULA_CFG)
+formula_cfgs = protobuf.Message(FORMULA_CFGS)
+friend_title_cfg = protobuf.Message(FRIEND_TITLE_CFG)
+friend_title_cfgs = protobuf.Message(FRIEND_TITLE_CFGS)
+func_type_weight_cfg = protobuf.Message(FUNC_TYPE_WEIGHT_CFG)
+func_type_weight_cfgs = protobuf.Message(FUNC_TYPE_WEIGHT_CFGS)
+gemstone_inlay_cfg = protobuf.Message(GEMSTONE_INLAY_CFG)
+gemstone_inlay_cfgs = protobuf.Message(GEMSTONE_INLAY_CFGS)
+gemstone_list_cfg = protobuf.Message(GEMSTONE_LIST_CFG)
+gemstone_list_cfgs = protobuf.Message(GEMSTONE_LIST_CFGS)
+gift_giving_cfg = protobuf.Message(GIFT_GIVING_CFG)
+gift_giving_cfgs = protobuf.Message(GIFT_GIVING_CFGS)
+global_param_cfg = protobuf.Message(GLOBAL_PARAM_CFG)
+global_param_cfgs = protobuf.Message(GLOBAL_PARAM_CFGS)
+grow_point_cfg = protobuf.Message(GROW_POINT_CFG)
+grow_point_cfgs = protobuf.Message(GROW_POINT_CFGS)
+guil_post_cfg = protobuf.Message(GUIL_POST_CFG)
+guil_post_cfgs = protobuf.Message(GUIL_POST_CFGS)
+guild_base_cfg = protobuf.Message(GUILD_BASE_CFG)
+guild_base_cfgs = protobuf.Message(GUILD_BASE_CFGS)
+guild_building_mission_cfg = protobuf.Message(GUILD_BUILDING_MISSION_CFG)
+guild_building_mission_cfgs = protobuf.Message(GUILD_BUILDING_MISSION_CFGS)
+guild_flag_cfg = protobuf.Message(GUILD_FLAG_CFG)
+guild_flag_cfgs = protobuf.Message(GUILD_FLAG_CFGS)
+guild_mission_base_cfg = protobuf.Message(GUILD_MISSION_BASE_CFG)
+guild_mission_base_cfgs = protobuf.Message(GUILD_MISSION_BASE_CFGS)
+guild_mission_cfg = protobuf.Message(GUILD_MISSION_CFG)
+guild_mission_cfgs = protobuf.Message(GUILD_MISSION_CFGS)
+guild_practice_group_cfg = protobuf.Message(GUILD_PRACTICE_GROUP_CFG)
+guild_practice_group_cfgs = protobuf.Message(GUILD_PRACTICE_GROUP_CFGS)
+guild_practice_group_cont_cfg = protobuf.Message(GUILD_PRACTICE_GROUP_CONT_CFG)
+guild_practice_group_cont_cfgs = protobuf.Message(GUILD_PRACTICE_GROUP_CONT_CFGS)
+independent_random_reward_cfg = protobuf.Message(INDEPENDENT_RANDOM_REWARD_CFG)
+independent_random_reward_cfgs = protobuf.Message(INDEPENDENT_RANDOM_REWARD_CFGS)
+inner_alchemy_cfg = protobuf.Message(INNER_ALCHEMY_CFG)
+inner_alchemy_cfgs = protobuf.Message(INNER_ALCHEMY_CFGS)
+inner_alchemy_group_cfg = protobuf.Message(INNER_ALCHEMY_GROUP_CFG)
+inner_alchemy_group_cfgs = protobuf.Message(INNER_ALCHEMY_GROUP_CFGS)
+item_cfg = protobuf.Message(ITEM_CFG)
+item_cfgs = protobuf.Message(ITEM_CFGS)
+jewelry_make_cfg = protobuf.Message(JEWELRY_MAKE_CFG)
+jewelry_make_cfgs = protobuf.Message(JEWELRY_MAKE_CFGS)
+jump_action_cfg = protobuf.Message(JUMP_ACTION_CFG)
+jump_action_cfgs = protobuf.Message(JUMP_ACTION_CFGS)
+jump_cfg = protobuf.Message(JUMP_CFG)
+jump_cfgs = protobuf.Message(JUMP_CFGS)
+language_cfg = protobuf.Message(LANGUAGE_CFG)
+language_cfgs = protobuf.Message(LANGUAGE_CFGS)
+level_exp_cfg = protobuf.Message(LEVEL_EXP_CFG)
+level_exp_cfgs = protobuf.Message(LEVEL_EXP_CFGS)
+level_package_cfg = protobuf.Message(LEVEL_PACKAGE_CFG)
+level_package_cfgs = protobuf.Message(LEVEL_PACKAGE_CFGS)
+magic_att_cfg = protobuf.Message(MAGIC_ATT_CFG)
+magic_att_cfgs = protobuf.Message(MAGIC_ATT_CFGS)
+magic_combination_cfg = protobuf.Message(MAGIC_COMBINATION_CFG)
+magic_combination_cfgs = protobuf.Message(MAGIC_COMBINATION_CFGS)
+magic_divine_cfg = protobuf.Message(MAGIC_DIVINE_CFG)
+magic_divine_cfgs = protobuf.Message(MAGIC_DIVINE_CFGS)
+magic_levelup_cfg = protobuf.Message(MAGIC_LEVELUP_CFG)
+magic_levelup_cfgs = protobuf.Message(MAGIC_LEVELUP_CFGS)
+magic_ostiole_cfg = protobuf.Message(MAGIC_OSTIOLE_CFG)
+magic_ostiole_cfgs = protobuf.Message(MAGIC_OSTIOLE_CFGS)
+magic_point_refine_cfg = protobuf.Message(MAGIC_POINT_REFINE_CFG)
+magic_point_refine_cfgs = protobuf.Message(MAGIC_POINT_REFINE_CFGS)
+magic_skill_cfg = protobuf.Message(MAGIC_SKILL_CFG)
+magic_skill_cfgs = protobuf.Message(MAGIC_SKILL_CFGS)
+magic_skill_layer_cfg = protobuf.Message(MAGIC_SKILL_LAYER_CFG)
+magic_skill_layer_cfgs = protobuf.Message(MAGIC_SKILL_LAYER_CFGS)
+magic_skill_uplevel_cfg = protobuf.Message(MAGIC_SKILL_UPLEVEL_CFG)
+magic_skill_uplevel_cfgs = protobuf.Message(MAGIC_SKILL_UPLEVEL_CFGS)
+mall_item_cfg = protobuf.Message(MALL_ITEM_CFG)
+mall_item_cfgs = protobuf.Message(MALL_ITEM_CFGS)
+map_signs_cfg = protobuf.Message(MAP_SIGNS_CFG)
+map_signs_cfgs = protobuf.Message(MAP_SIGNS_CFGS)
+material_item_cfg = protobuf.Message(MATERIAL_ITEM_CFG)
+material_item_cfgs = protobuf.Message(MATERIAL_ITEM_CFGS)
+medal_base_cfg = protobuf.Message(MEDAL_BASE_CFG)
+medal_base_cfgs = protobuf.Message(MEDAL_BASE_CFGS)
+medal_composite_addition_cfg = protobuf.Message(MEDAL_COMPOSITE_ADDITION_CFG)
+medal_composite_addition_cfgs = protobuf.Message(MEDAL_COMPOSITE_ADDITION_CFGS)
+medal_group_cfg = protobuf.Message(MEDAL_GROUP_CFG)
+medal_group_cfgs = protobuf.Message(MEDAL_GROUP_CFGS)
+medal_open_level_cfg = protobuf.Message(MEDAL_OPEN_LEVEL_CFG)
+medal_open_level_cfgs = protobuf.Message(MEDAL_OPEN_LEVEL_CFGS)
+medal_star_open_level_cfg = protobuf.Message(MEDAL_STAR_OPEN_LEVEL_CFG)
+medal_star_open_level_cfgs = protobuf.Message(MEDAL_STAR_OPEN_LEVEL_CFGS)
+minimap_cfg = protobuf.Message(MINIMAP_CFG)
+minimap_cfgs = protobuf.Message(MINIMAP_CFGS)
+mission_cfg = protobuf.Message(MISSION_CFG)
+mission_cfgs = protobuf.Message(MISSION_CFGS)
+mission_group_cfg = protobuf.Message(MISSION_GROUP_CFG)
+mission_group_cfgs = protobuf.Message(MISSION_GROUP_CFGS)
+monster_cfg = protobuf.Message(MONSTER_CFG)
+monster_cfgs = protobuf.Message(MONSTER_CFGS)
+monthcard_base_cfg = protobuf.Message(MONTHCARD_BASE_CFG)
+monthcard_base_cfgs = protobuf.Message(MONTHCARD_BASE_CFGS)
+mountequip_cfg = protobuf.Message(MOUNTEQUIP_CFG)
+mountequip_cfgs = protobuf.Message(MOUNTEQUIP_CFGS)
+npc_function_cfg = protobuf.Message(NPC_FUNCTION_CFG)
+npc_function_cfgs = protobuf.Message(NPC_FUNCTION_CFGS)
+npc_spawn_method_cfg = protobuf.Message(NPC_SPAWN_METHOD_CFG)
+npc_spawn_method_cfgs = protobuf.Message(NPC_SPAWN_METHOD_CFGS)
+open_rules_data_cfg = protobuf.Message(OPEN_RULES_DATA_CFG)
+open_rules_data_cfgs = protobuf.Message(OPEN_RULES_DATA_CFGS)
+partenr_experience_cfg = protobuf.Message(PARTENR_EXPERIENCE_CFG)
+partenr_experience_cfgs = protobuf.Message(PARTENR_EXPERIENCE_CFGS)
+partner_activation_cfg = protobuf.Message(PARTNER_ACTIVATION_CFG)
+partner_activation_cfgs = protobuf.Message(PARTNER_ACTIVATION_CFGS)
+partner_attribute_cfg = protobuf.Message(PARTNER_ATTRIBUTE_CFG)
+partner_attribute_cfgs = protobuf.Message(PARTNER_ATTRIBUTE_CFGS)
+partner_base_cfg = protobuf.Message(PARTNER_BASE_CFG)
+partner_base_cfgs = protobuf.Message(PARTNER_BASE_CFGS)
+partner_chip_cfg = protobuf.Message(PARTNER_CHIP_CFG)
+partner_chip_cfgs = protobuf.Message(PARTNER_CHIP_CFGS)
+partner_currency_cfg = protobuf.Message(PARTNER_CURRENCY_CFG)
+partner_currency_cfgs = protobuf.Message(PARTNER_CURRENCY_CFGS)
+partner_equiphecheng_cfg = protobuf.Message(PARTNER_EQUIPHECHENG_CFG)
+partner_equiphecheng_cfgs = protobuf.Message(PARTNER_EQUIPHECHENG_CFGS)
+partner_formation_cfg = protobuf.Message(PARTNER_FORMATION_CFG)
+partner_formation_cfgs = protobuf.Message(PARTNER_FORMATION_CFGS)
+partner_impre_levelup_cfg = protobuf.Message(PARTNER_IMPRE_LEVELUP_CFG)
+partner_impre_levelup_cfgs = protobuf.Message(PARTNER_IMPRE_LEVELUP_CFGS)
+partner_impression_cfg = protobuf.Message(PARTNER_IMPRESSION_CFG)
+partner_impression_cfgs = protobuf.Message(PARTNER_IMPRESSION_CFGS)
+partner_item_compound_cfg = protobuf.Message(PARTNER_ITEM_COMPOUND_CFG)
+partner_item_compound_cfgs = protobuf.Message(PARTNER_ITEM_COMPOUND_CFGS)
+partner_mood_cfg = protobuf.Message(PARTNER_MOOD_CFG)
+partner_mood_cfgs = protobuf.Message(PARTNER_MOOD_CFGS)
+partner_multiple_cfg = protobuf.Message(PARTNER_MULTIPLE_CFG)
+partner_multiple_cfgs = protobuf.Message(PARTNER_MULTIPLE_CFGS)
+partner_passiveskill_cfg = protobuf.Message(PARTNER_PASSIVESKILL_CFG)
+partner_passiveskill_cfgs = protobuf.Message(PARTNER_PASSIVESKILL_CFGS)
+partner_star_cfg = protobuf.Message(PARTNER_STAR_CFG)
+partner_star_cfgs = protobuf.Message(PARTNER_STAR_CFGS)
+partner_study_cfg = protobuf.Message(PARTNER_STUDY_CFG)
+partner_study_cfgs = protobuf.Message(PARTNER_STUDY_CFGS)
+playscg_cfg = protobuf.Message(PLAYSCG_CFG)
+playscg_cfgs = protobuf.Message(PLAYSCG_CFGS)
+plot_data_cfg = protobuf.Message(PLOT_DATA_CFG)
+plot_data_cfgs = protobuf.Message(PLOT_DATA_CFGS)
+prop_type_cfg = protobuf.Message(PROP_TYPE_CFG)
+prop_type_cfgs = protobuf.Message(PROP_TYPE_CFGS)
+randomman_cfg = protobuf.Message(RANDOMMAN_CFG)
+randomman_cfgs = protobuf.Message(RANDOMMAN_CFGS)
+randomwoman_cfg = protobuf.Message(RANDOMWOMAN_CFG)
+randomwoman_cfgs = protobuf.Message(RANDOMWOMAN_CFGS)
+rank_field_cfg = protobuf.Message(RANK_FIELD_CFG)
+rank_field_cfgs = protobuf.Message(RANK_FIELD_CFGS)
+rank_function_cfg = protobuf.Message(RANK_FUNCTION_CFG)
+rank_function_cfgs = protobuf.Message(RANK_FUNCTION_CFGS)
+res_path_cfg = protobuf.Message(RES_PATH_CFG)
+res_path_cfgs = protobuf.Message(RES_PATH_CFGS)
+resource_compund_cfg = protobuf.Message(RESOURCE_COMPUND_CFG)
+resource_compund_cfgs = protobuf.Message(RESOURCE_COMPUND_CFGS)
+revive_show_cfg = protobuf.Message(REVIVE_SHOW_CFG)
+revive_show_cfgs = protobuf.Message(REVIVE_SHOW_CFGS)
+reward_cfg = protobuf.Message(REWARD_CFG)
+reward_cfgs = protobuf.Message(REWARD_CFGS)
+role_parts_cfg = protobuf.Message(ROLE_PARTS_CFG)
+role_parts_cfgs = protobuf.Message(ROLE_PARTS_CFGS)
+route_mark_cfg = protobuf.Message(ROUTE_MARK_CFG)
+route_mark_cfgs = protobuf.Message(ROUTE_MARK_CFGS)
+rune_decompose_cfg = protobuf.Message(RUNE_DECOMPOSE_CFG)
+rune_decompose_cfgs = protobuf.Message(RUNE_DECOMPOSE_CFGS)
+rune_make_cfg = protobuf.Message(RUNE_MAKE_CFG)
+rune_make_cfgs = protobuf.Message(RUNE_MAKE_CFGS)
+rune_make_list_cfg = protobuf.Message(RUNE_MAKE_LIST_CFG)
+rune_make_list_cfgs = protobuf.Message(RUNE_MAKE_LIST_CFGS)
+rune_prop_group_cfg = protobuf.Message(RUNE_PROP_GROUP_CFG)
+rune_prop_group_cfgs = protobuf.Message(RUNE_PROP_GROUP_CFGS)
+rune_prop_refine_cfg = protobuf.Message(RUNE_PROP_REFINE_CFG)
+rune_prop_refine_cfgs = protobuf.Message(RUNE_PROP_REFINE_CFGS)
+rune_quality_cfg = protobuf.Message(RUNE_QUALITY_CFG)
+rune_quality_cfgs = protobuf.Message(RUNE_QUALITY_CFGS)
+rune_skill_group_cfg = protobuf.Message(RUNE_SKILL_GROUP_CFG)
+rune_skill_group_cfgs = protobuf.Message(RUNE_SKILL_GROUP_CFGS)
+rune_skill_refine_cfg = protobuf.Message(RUNE_SKILL_REFINE_CFG)
+rune_skill_refine_cfgs = protobuf.Message(RUNE_SKILL_REFINE_CFGS)
+scene_area_cfg = protobuf.Message(SCENE_AREA_CFG)
+scene_area_cfgs = protobuf.Message(SCENE_AREA_CFGS)
+scene_cfg = protobuf.Message(SCENE_CFG)
+scene_cfgs = protobuf.Message(SCENE_CFGS)
+scene_door_cfg = protobuf.Message(SCENE_DOOR_CFG)
+scene_door_cfgs = protobuf.Message(SCENE_DOOR_CFGS)
+scene_event_cfg = protobuf.Message(SCENE_EVENT_CFG)
+scene_event_cfgs = protobuf.Message(SCENE_EVENT_CFGS)
+scene_function_cfg = protobuf.Message(SCENE_FUNCTION_CFG)
+scene_function_cfgs = protobuf.Message(SCENE_FUNCTION_CFGS)
+scene_organ_cfg = protobuf.Message(SCENE_ORGAN_CFG)
+scene_organ_cfgs = protobuf.Message(SCENE_ORGAN_CFGS)
+scene_portal_cfg = protobuf.Message(SCENE_PORTAL_CFG)
+scene_portal_cfgs = protobuf.Message(SCENE_PORTAL_CFGS)
+scene_trigger_cfg = protobuf.Message(SCENE_TRIGGER_CFG)
+scene_trigger_cfgs = protobuf.Message(SCENE_TRIGGER_CFGS)
+service_cfg = protobuf.Message(SERVICE_CFG)
+service_cfgs = protobuf.Message(SERVICE_CFGS)
+shop_type_cfg = protobuf.Message(SHOP_TYPE_CFG)
+shop_type_cfgs = protobuf.Message(SHOP_TYPE_CFGS)
+signup_accumulation_cfg = protobuf.Message(SIGNUP_ACCUMULATION_CFG)
+signup_accumulation_cfgs = protobuf.Message(SIGNUP_ACCUMULATION_CFGS)
+signup_base_cfg = protobuf.Message(SIGNUP_BASE_CFG)
+signup_base_cfgs = protobuf.Message(SIGNUP_BASE_CFGS)
+skill_cfg = protobuf.Message(SKILL_CFG)
+skill_cfgs = protobuf.Message(SKILL_CFGS)
+skill_condition_cfg = protobuf.Message(SKILL_CONDITION_CFG)
+skill_condition_cfgs = protobuf.Message(SKILL_CONDITION_CFGS)
+skill_id_cfg = protobuf.Message(SKILL_ID_CFG)
+skill_id_cfgs = protobuf.Message(SKILL_ID_CFGS)
+skill_summoned_cfg = protobuf.Message(SKILL_SUMMONED_CFG)
+skill_summoned_cfgs = protobuf.Message(SKILL_SUMMONED_CFGS)
+skill_summoned_npc_cfg = protobuf.Message(SKILL_SUMMONED_NPC_CFG)
+skill_summoned_npc_cfgs = protobuf.Message(SKILL_SUMMONED_NPC_CFGS)
+soul_base_attr_cfg = protobuf.Message(SOUL_BASE_ATTR_CFG)
+soul_base_attr_cfgs = protobuf.Message(SOUL_BASE_ATTR_CFGS)
+soul_level_up_cfg = protobuf.Message(SOUL_LEVEL_UP_CFG)
+soul_level_up_cfgs = protobuf.Message(SOUL_LEVEL_UP_CFGS)
+soul_magic_attr_cfg = protobuf.Message(SOUL_MAGIC_ATTR_CFG)
+soul_magic_attr_cfgs = protobuf.Message(SOUL_MAGIC_ATTR_CFGS)
+soul_magic_rock_cfg = protobuf.Message(SOUL_MAGIC_ROCK_CFG)
+soul_magic_rock_cfgs = protobuf.Message(SOUL_MAGIC_ROCK_CFGS)
+soul_refine_rock_cfg = protobuf.Message(SOUL_REFINE_ROCK_CFG)
+soul_refine_rock_cfgs = protobuf.Message(SOUL_REFINE_ROCK_CFGS)
+soul_suit_attr_cfg = protobuf.Message(SOUL_SUIT_ATTR_CFG)
+soul_suit_attr_cfgs = protobuf.Message(SOUL_SUIT_ATTR_CFGS)
+starspirit_dungoen_cfg = protobuf.Message(STARSPIRIT_DUNGOEN_CFG)
+starspirit_dungoen_cfgs = protobuf.Message(STARSPIRIT_DUNGOEN_CFGS)
+state_cfg = protobuf.Message(STATE_CFG)
+state_cfgs = protobuf.Message(STATE_CFGS)
+strength_convert_cfg = protobuf.Message(STRENGTH_CONVERT_CFG)
+strength_convert_cfgs = protobuf.Message(STRENGTH_CONVERT_CFGS)
+strengthen_cfg = protobuf.Message(STRENGTHEN_CFG)
+strengthen_cfgs = protobuf.Message(STRENGTHEN_CFGS)
+subsys_cfg = protobuf.Message(SUBSYS_CFG)
+subsys_cfgs = protobuf.Message(SUBSYS_CFGS)
+suppress_cfg = protobuf.Message(SUPPRESS_CFG)
+suppress_cfgs = protobuf.Message(SUPPRESS_CFGS)
+suppress_group_cfg = protobuf.Message(SUPPRESS_GROUP_CFG)
+suppress_group_cfgs = protobuf.Message(SUPPRESS_GROUP_CFGS)
+test_cfg = protobuf.Message(TEST_CFG)
+test_cfgs = protobuf.Message(TEST_CFGS)
+tips_cfg = protobuf.Message(TIPS_CFG)
+tips_cfgs = protobuf.Message(TIPS_CFGS)
+tower_base_cfg = protobuf.Message(TOWER_BASE_CFG)
+tower_base_cfgs = protobuf.Message(TOWER_BASE_CFGS)
+trade_filter_rules_cfg = protobuf.Message(TRADE_FILTER_RULES_CFG)
+trade_filter_rules_cfgs = protobuf.Message(TRADE_FILTER_RULES_CFGS)
+trade_sort_rules_cfg = protobuf.Message(TRADE_SORT_RULES_CFG)
+trade_sort_rules_cfgs = protobuf.Message(TRADE_SORT_RULES_CFGS)
+trade_sub_tabs_cfg = protobuf.Message(TRADE_SUB_TABS_CFG)
+trade_sub_tabs_cfgs = protobuf.Message(TRADE_SUB_TABS_CFGS)
+trade_top_tabs_cfg = protobuf.Message(TRADE_TOP_TABS_CFG)
+trade_top_tabs_cfgs = protobuf.Message(TRADE_TOP_TABS_CFGS)
+treasure_rooms_cfg = protobuf.Message(TREASURE_ROOMS_CFG)
+treasure_rooms_cfgs = protobuf.Message(TREASURE_ROOMS_CFGS)
+trigger_action_cfg = protobuf.Message(TRIGGER_ACTION_CFG)
+trigger_action_cfgs = protobuf.Message(TRIGGER_ACTION_CFGS)
+trigger_condition_cfg = protobuf.Message(TRIGGER_CONDITION_CFG)
+trigger_condition_cfgs = protobuf.Message(TRIGGER_CONDITION_CFGS)
+trigger_event_cfg = protobuf.Message(TRIGGER_EVENT_CFG)
+trigger_event_cfgs = protobuf.Message(TRIGGER_EVENT_CFGS)
+trigger_variable_cfg = protobuf.Message(TRIGGER_VARIABLE_CFG)
+trigger_variable_cfgs = protobuf.Message(TRIGGER_VARIABLE_CFGS)
+ui_contribution_cfg = protobuf.Message(UI_CONTRIBUTION_CFG)
+ui_contribution_cfgs = protobuf.Message(UI_CONTRIBUTION_CFGS)
+weight_random_reward_cfg = protobuf.Message(WEIGHT_RANDOM_REWARD_CFG)
+weight_random_reward_cfgs = protobuf.Message(WEIGHT_RANDOM_REWARD_CFGS)
+wizard_base_cfg = protobuf.Message(WIZARD_BASE_CFG)
+wizard_base_cfgs = protobuf.Message(WIZARD_BASE_CFGS)
+wizard_level_cfg = protobuf.Message(WIZARD_LEVEL_CFG)
+wizard_level_cfgs = protobuf.Message(WIZARD_LEVEL_CFGS)
+wizard_task_cfg = protobuf.Message(WIZARD_TASK_CFG)
+wizard_task_cfgs = protobuf.Message(WIZARD_TASK_CFGS)
+world_map_cfg = protobuf.Message(WORLD_MAP_CFG)
+world_map_cfgs = protobuf.Message(WORLD_MAP_CFGS)
+zone_location_cfg = protobuf.Message(ZONE_LOCATION_CFG)
+zone_location_cfgs = protobuf.Message(ZONE_LOCATION_CFGS)
+
diff --git a/script-beta/test/example/vm.txt b/script-beta/test/example/vm.txt
new file mode 100644
index 00000000..f2f4144d
--- /dev/null
+++ b/script-beta/test/example/vm.txt
@@ -0,0 +1,1544 @@
+local env = require 'core.env'
+local library = require 'core.library'
+local createValue = require 'core.value'
+
+local DefaultSource = { start = 0, finish = 0 }
+local GlobalChild
+
+-- 根据赋值顺序决定遍历顺序的表
+local function orderTable()
+ local t = {}
+ local list = {}
+ local mark = {}
+ return setmetatable(t, {
+ __newindex = function (self, k, v)
+ if not mark[k] then
+ mark[k] = true
+ list[#list+1] = k
+ end
+ rawset(self, k, v)
+ end,
+ __pairs = function (self)
+ local i = 0
+ return function ()
+ while true do
+ i = i + 1
+ local k = list[i]
+ if not k then
+ return nil, nil
+ end
+ local v = t[k]
+ if v ~= nil then
+ return k, v
+ end
+ end
+ end
+ end,
+ })
+end
+
+local function readOnly(t)
+ return setmetatable({}, {
+ __index = function (self, k)
+ if k == nil then
+ return nil
+ end
+ local v = t[k]
+ if type(v) == 'table' then
+ v = readOnly(v)
+ end
+ self[k] = v
+ return v
+ end,
+ __len = function (self)
+ return #t
+ end,
+ __pairs = function (self)
+ local keys = {}
+ local mark = {}
+ for k in next, self do
+ keys[#keys+1] = k
+ end
+ for k in pairs(t) do
+ if not mark[k] then
+ mark[k] = true
+ keys[#keys+1] = k
+ end
+ end
+ local i = 0
+ return function ()
+ i = i + 1
+ local k = keys[i]
+ return k, self[k]
+ end
+ end,
+ __source = t,
+ })
+end
+
+local mt = {}
+mt.__index = mt
+
+function mt:createDummyVar(source, value)
+ local loc = {
+ type = 'local',
+ key = '',
+ source = source or DefaultSource,
+ }
+ self:setValue(loc, value, source)
+ return loc
+end
+
+function mt:createLocal(key, source, value)
+ local loc = {
+ type = 'local',
+ key = key,
+ source = source or DefaultSource,
+ close = self.scope.block.finish,
+ }
+
+ if source then
+ source.isLocal = true
+ end
+
+ local shadow = self.scope.locals[key]
+ if shadow then
+ shadow.close = source and (source.start-1)
+ local group
+ if shadow.shadow then
+ group = shadow.shadow
+ else
+ group = { shadow }
+ shadow.shadow = group
+ end
+ group[#group+1] = loc
+ loc.shadow = group
+ end
+
+ self.scope.locals[key] = loc
+ self.results.locals[#self.results.locals+1] = loc
+
+ self:addInfo(loc, 'local', source)
+ self:setValue(loc, value, source)
+ return loc
+end
+
+function mt:createArg(key, source, value)
+ local loc = self:createLocal(key, source, value)
+ if source then
+ source.isArg = true
+ end
+ return loc
+end
+
+function mt:scopePush(block)
+ if not block.start then
+ error('Scope push without start!')
+ end
+ self.scope:push()
+ self.scope.block = block
+end
+
+function mt:scopePop()
+ self.scope:pop()
+end
+
+function mt:addInfo(obj, type, source)
+ if source and not source.start then
+ error('Miss start: ' .. table.dump(source))
+ end
+ obj[#obj+1] = {
+ type = type,
+ source = source or DefaultSource,
+ }
+ if source then
+ source.uri = self.uri
+ local other = self.results.sources[source]
+ if other then
+ if other.type == 'multi-source' then
+ other[#other+1] = obj
+ else
+ other = {
+ type = 'multi-source',
+ [1] = other,
+ [2] = obj,
+ }
+ end
+ else
+ self.results.sources[source] = obj
+ end
+ if type == 'set' or type == 'return' then
+ if not obj.declarat then
+ obj.declarat = source
+ end
+ end
+ end
+ return obj
+end
+
+function mt:createDots(index, source)
+ local dots = {
+ type = 'dots',
+ source = source or DefaultSource,
+ func = self:getCurrentFunction(),
+ index = index,
+ }
+ self.chunk.dots = dots
+ return dots
+end
+
+function mt:buildTable(source)
+ local tbl = self:createValue('table', source)
+ if not source then
+ return tbl
+ end
+ local n = 0
+ for index, obj in ipairs(source) do
+ if obj.type == 'pair' then
+ local value = self:getExp(obj[2])
+ local key = obj[1]
+ if key.index then
+ local index = self:getIndex(key)
+ local field = self:createField(tbl, index, key)
+ if value.type == 'list' then
+ self:setValue(field, value[1], key)
+ else
+ self:setValue(field, value, key)
+ end
+ else
+ if key.type == 'name' then
+ local field = self:createField(tbl, key[1], key)
+ self.results.indexs[#self.results.indexs+1] = field
+ key.isIndex = true
+ if value.type == 'list' then
+ self:setValue(field, value[1], key)
+ else
+ self:setValue(field, value, key)
+ end
+ end
+ end
+ else
+ local value = self:getExp(obj)
+ if value.type == 'list' then
+ if index == #source then
+ for i, v in ipairs(value) do
+ local field = self:createField(tbl, n + i)
+ self:setValue(field, v)
+ end
+ else
+ n = n + 1
+ local field = self:createField(tbl, n)
+ self:setValue(field, value[1])
+ end
+ else
+ n = n + 1
+ local field = self:createField(tbl, n)
+ self:setValue(field, value)
+ end
+ -- 处理写了一半的 key = value,把name类的数组元素视为哈希键
+ if obj.type == 'name' then
+ obj.isIndex = true
+ end
+ end
+ end
+ return tbl
+end
+
+function mt:mergeValue(a, b, mark)
+ if a == b then
+ return
+ end
+ if not mark then
+ mark = {}
+ end
+ if mark[a] or mark[b] then
+ return
+ end
+ if a.uri ~= self.uri then
+ return
+ end
+ mark[a] = true
+ mark[b] = true
+ self:mergeChild(a, b, mark)
+ for k in pairs(a) do
+ a[k] = nil
+ end
+ for k, v in pairs(b) do
+ a[k] = v
+ end
+end
+
+function mt:mergeField(a, b, mark)
+ if a == b then
+ return
+ end
+ if not mark then
+ mark = {}
+ end
+ for i, info in ipairs(a) do
+ a[i] = nil
+ b[#b+1] = info
+ end
+ for i, v in ipairs(b) do
+ a[i] = v
+ end
+ self:mergeValue(a.value, b.value, mark)
+end
+
+function mt:mergeChild(a, b, mark)
+ if a == b then
+ return
+ end
+ if not a.child and not b.child then
+ return
+ end
+ if not mark then
+ mark = {}
+ end
+ if a.uri ~= self.uri then
+ return
+ end
+ if b.uri == self.uri then
+ local child = a.child or orderTable()
+ local other = b.child or orderTable()
+ a.child = nil
+ b.child = nil
+ for k, v in pairs(other) do
+ if child[k] then
+ self:mergeField(child[k], v, mark)
+ else
+ child[k] = v
+ end
+ end
+ a.child = child
+ b.child = child
+ else
+ local child = a.child or orderTable()
+ local other = b.child
+ if not other then
+ return
+ end
+ a.child = nil
+ for k, v in pairs(other) do
+ child[k] = v
+ end
+ a.child = child
+ end
+end
+
+function mt:setValue(var, value, source)
+ if value and value.type == 'list' then
+ error('Cant set value list')
+ end
+ value = value or self:createValue('any', source)
+ if source and source.start then
+ self:addInfo(var, 'set', source)
+ self:addInfo(value, 'set', source)
+ end
+ if var.value then
+ if value.type == 'any' then
+ self:mergeChild(var.value, value)
+ elseif value.type == 'nil' then
+ self:mergeValue(var.value, value)
+ elseif var.value.uri == self.uri then
+ var.value = value
+ end
+ value = var.value
+ else
+ var.value = value
+ end
+ return value
+end
+
+function mt:getValue(var)
+ if not var.value then
+ var.value = self:createValue('any')
+ end
+ return var.value
+end
+
+function mt:createField(pValue, name, source)
+ if pValue.type == 'local' or pValue.type == 'field' then
+ error('Only value can create field')
+ end
+ local field = {
+ type = 'field',
+ key = name,
+ source = source or DefaultSource,
+ }
+
+ if not pValue.child then
+ pValue.child = orderTable()
+ end
+ pValue.child[name] = field
+ self:inference(pValue, 'table')
+ return field
+end
+
+function mt:getField(pValue, name, source)
+ local field = (pValue.child and pValue.child[name])
+ if not field and pValue.ENV then
+ if self.lsp then
+ field = self.lsp:getGlobal(name)
+ end
+ end
+ if not field then
+ field = self:createField(pValue, name, source)
+ end
+ return field
+end
+
+function mt:isGlobal(field)
+ if field.type ~= 'field' then
+ return false
+ end
+ if field.parent.value.ENV then
+ return true
+ else
+ return false
+ end
+end
+
+function mt:buildFunction(exp, object)
+ local func = self:createValue('function', exp)
+ func.args = {}
+ func.argValues = {}
+
+ if not exp then
+ return func
+ end
+
+ self:scopePush(exp)
+ self.chunk:push()
+ self.chunk:cut 'dots'
+ self.chunk:cut 'labels'
+ self.chunk.func = func
+
+ if object then
+ local var = self:createArg('self', object.source, self:getValue(object))
+ var.hide = true
+ func.args[1] = var
+ end
+
+ local stop
+ self:forList(exp.arg, function (arg)
+ if stop then
+ return
+ end
+ if arg.type == 'name' then
+ local var = self:createArg(arg[1], arg)
+ arg.isArg = true
+ func.args[#func.args+1] = var
+ func.argValues[#func.args] = self:getValue(var)
+ elseif arg.type == '...' then
+ self:createDots(#func.args+1, arg)
+ for _ = 1, 10 do
+ func.argValues[#func.argValues+1] = self:createValue('any', arg)
+ end
+ stop = true
+ end
+ end)
+
+ self:doActions(exp)
+
+ self.results.funcs[#self.results.funcs+1] = func
+
+ self.chunk:pop()
+ self:scopePop()
+
+ return func
+end
+
+function mt:forList(list, callback)
+ if not list then
+ return
+ end
+ if list.type == 'list' then
+ for i = 1, #list do
+ callback(list[i])
+ end
+ else
+ callback(list)
+ end
+end
+
+function mt:countList(list)
+ if not list then
+ return 0
+ end
+ if list.type == 'list' then
+ return #list
+ end
+ return 1
+end
+
+function mt:updateFunctionArgs(func)
+ if not func.argValues then
+ return
+ end
+ if not func.args then
+ return
+ end
+
+ local values = func.argValues
+ for i, var in ipairs(func.args) do
+ if var.type == 'dots' then
+ local list = {
+ type = 'list',
+ }
+ for n = i, #values do
+ list[n-i+1] = values[n]
+ end
+ self:setValue(var, list)
+ break
+ else
+ self:setValue(var, values[i])
+ end
+ end
+end
+
+function mt:setFunctionArg(func, values)
+ if func.uri ~= self.uri then
+ return
+ end
+ if not func.argValues then
+ func.argValues = {}
+ end
+ for i = 1, #values do
+ if not func.argValues[i] then
+ func.argValues[i] = values[i]
+ end
+ self:inference(values[i], func.argValues[i].type)
+ self:inference(func.argValues[i], values[i].type)
+ end
+
+ self:updateFunctionArgs(func)
+end
+
+function mt:getFunctionArg(func, i)
+ if not func.argValues then
+ func.argValues = {}
+ end
+ if not func.argValues[i] then
+ for n = #func.argValues+1, i do
+ func.argValues[n] = self:createValue('any')
+ end
+ end
+ return func.argValues[i]
+end
+
+function mt:checkMetaIndex(value, meta)
+ local index = self:getField(meta, '__index')
+ if not index then
+ return
+ end
+ local indexValue = self:getValue(index)
+ -- TODO 支持function
+ self:mergeChild(value, indexValue)
+end
+
+function mt:callSetMetaTable(func, values)
+ if not values[1] then
+ values[1] = self:createValue('any')
+ end
+ if not values[2] then
+ values[2] = self:createValue('any')
+ end
+ self:setFunctionReturn(func, 1, values[1])
+
+ values[1].metatable = values[2]
+ -- 检查 __index
+ self:checkMetaIndex(values[1], values[2])
+end
+
+function mt:getRequire(strValue, destVM)
+ -- 取出对方的主函数
+ local main = destVM.results.main
+ -- 获取主函数返回值,注意不能修改对方的环境
+ local mainValue
+ if main.returns then
+ mainValue = readOnly(main.returns[1])
+ else
+ mainValue = self:createValue('boolean', nil, true)
+ mainValue.uri = destVM.uri
+ end
+
+ return mainValue
+end
+
+function mt:getLoadFile(strValue, destVM)
+ -- 取出对方的主函数
+ local main = destVM.results.main
+ -- loadfile 的返回值就是对方的主函数
+ local mainValue = readOnly(main)
+
+ return mainValue
+end
+
+function mt:tryRequireOne(strValue, mode)
+ if not self.lsp or not self.lsp.workspace then
+ return nil
+ end
+ local str = strValue.value
+ if type(str) == 'string' then
+ -- 支持 require 'xxx' 的转到定义
+ local strSource = strValue.source
+ self.results.sources[strSource] = strValue
+ strValue.isRequire = true
+
+ local uri
+ if mode == 'require' then
+ uri = self.lsp.workspace:searchPath(self.uri, str)
+ elseif mode == 'loadfile' then
+ uri = self.lsp.workspace:loadPath(self.uri, str)
+ elseif mode == 'dofile' then
+ uri = self.lsp.workspace:loadPath(self.uri, str)
+ end
+ if not uri then
+ return nil
+ end
+
+ strValue.uri = uri
+ -- 如果取不到VM(不编译),则做个标记,之后再取一次
+ local destVM = self.lsp:getVM(uri)
+ self.lsp:compileChain(self.uri, uri)
+ if destVM then
+ if mode == 'require' then
+ return self:getRequire(strValue, destVM)
+ elseif mode == 'loadfile' then
+ return self:getLoadFile(strValue, destVM)
+ elseif mode == 'dofile' then
+ return self:getRequire(strValue, destVM)
+ end
+ end
+ end
+ return nil
+end
+
+function mt:callRequire(func, values)
+ if not values[1] then
+ values[1] = self:createValue('any')
+ end
+ local str = values[1].value
+ if type(str) ~= 'string' then
+ return
+ end
+ local lib = library.library[str]
+ if lib then
+ local value = self:getLibValue(lib, 'library')
+ self:setFunctionReturn(func, 1, value)
+ return
+ else
+ local requireValue = self:tryRequireOne(values[1], 'require')
+ if not requireValue then
+ requireValue = self:createValue('boolean')
+ requireValue.isRequire = true
+ end
+ self:setFunctionReturn(func, 1, requireValue)
+ end
+end
+
+function mt:callLoadFile(func, values)
+ if not values[1] then
+ values[1] = self:createValue('any')
+ end
+ local str = values[1].value
+ if type(str) ~= 'string' then
+ return
+ end
+ local requireValue = self:tryRequireOne(values[1], 'loadfile')
+ if not requireValue then
+ requireValue = self:createValue('any')
+ requireValue.isRequire = true
+ end
+ self:setFunctionReturn(func, 1, requireValue)
+end
+
+function mt:callDoFile(func, values)
+ if not values[1] then
+ values[1] = self:createValue('any')
+ end
+ local str = values[1].value
+ if type(str) ~= 'string' then
+ return
+ end
+ local requireValue = self:tryRequireOne(values[1], 'dofile')
+ if not requireValue then
+ requireValue = self:createValue('any')
+ requireValue.isRequire = true
+ end
+ self:setFunctionReturn(func, 1, requireValue)
+end
+
+function mt:call(func, values)
+ self:inference(func, 'function')
+ local lib = func.lib
+ if lib then
+ if lib.args then
+ for i, arg in ipairs(lib.args) do
+ if arg.type == '...' then
+ self:inference(self:getFunctionArg(func, i), 'any')
+ else
+ self:inference(self:getFunctionArg(func, i), arg.type or 'any')
+ end
+ end
+ end
+ if lib.returns then
+ for i, rtn in ipairs(lib.returns) do
+ if rtn.type == '...' then
+ self:inference(self:getFunctionReturns(func, i), 'any')
+ else
+ self:inference(self:getFunctionReturns(func, i), rtn.type or 'any')
+ end
+ end
+ end
+ if lib.special then
+ if lib.special == 'setmetatable' then
+ self:callSetMetaTable(func, values)
+ elseif lib.special == 'require' then
+ self:callRequire(func, values)
+ elseif lib.special == 'loadfile' then
+ self:callLoadFile(func, values)
+ elseif lib.special == 'dofile' then
+ self:callDoFile(func, values)
+ end
+ end
+ end
+
+ self:setFunctionArg(func, values)
+
+ return self:getFunctionReturns(func)
+end
+
+function mt:getCurrentFunction()
+ return self.chunk.func
+end
+
+function mt:mergeFunctionReturn(func, index, value)
+ if not func.returns[index] then
+ func.returns[index] = value
+ return
+ end
+ if value.type == 'nil' then
+ return
+ end
+ if value == 'any' and func.returns[index] ~= 'nil' then
+ return
+ end
+ func.returns[index] = value
+end
+
+function mt:setFunctionReturn(func, index, value)
+ func:set('hasReturn', true)
+ if not func.returns then
+ func.returns = {
+ type = 'list',
+ }
+ end
+ if value then
+ if value.type == 'list' then
+ for i, v in ipairs(value) do
+ self:mergeFunctionReturn(func, index+i-1, v)
+ end
+ else
+ self:mergeFunctionReturn(func, index, value)
+ end
+ else
+ self:mergeFunctionReturn(func, index, self:createValue('any'))
+ end
+end
+
+function mt:getFunctionReturns(func, i)
+ if func.maxReturns and i and func.maxReturns < i then
+ return self:createValue('nil')
+ end
+ if not func.returns then
+ func.returns = {
+ type = 'list',
+ }
+ end
+ if i then
+ if not func.returns[i] then
+ for n = #func.returns+1, i do
+ func.returns[n] = self:createValue('any')
+ end
+ end
+ return func.returns[i]
+ else
+ return func.returns
+ end
+end
+
+function mt:inference(value, type)
+ if type == '...' then
+ error('Value type cant be ...')
+ end
+ if value.type == 'any' and type ~= 'nil' then
+ value.type = type
+ end
+end
+
+function mt:createValue(tp, source, v)
+ local value = createValue(tp, self.uri, source, v)
+ local lib = library.object[tp]
+ if lib then
+ self:getLibChild(value, lib, 'object')
+ end
+ return value
+end
+
+function mt:getLibChild(value, lib, parentType)
+ if lib.child then
+ if self.libraryChild[lib] then
+ value.child = self.libraryChild[lib]
+ return
+ end
+ self.libraryChild[lib] = {}
+ for fName, fLib in pairs(lib.child) do
+ local fField = self:createField(value, fName)
+ local fValue = self:getLibValue(fLib, parentType)
+ self:setValue(fField, fValue)
+ end
+ if value.child then
+ for k, v in pairs(value.child) do
+ self.libraryChild[lib][k] = v
+ end
+ end
+ value.child = self.libraryChild[lib]
+ end
+end
+
+function mt:getLibValue(lib, parentType, v)
+ if self.libraryValue[lib] then
+ return self.libraryValue[lib]
+ end
+ local tp = lib.type
+ local value
+ if tp == 'table' then
+ value = self:createValue('table')
+ elseif tp == 'function' then
+ value = self:createValue('function')
+ if lib.returns then
+ local dots
+ for i, rtn in ipairs(lib.returns) do
+ self:setFunctionReturn(value, i, self:getLibValue(rtn, parentType))
+ if rtn.type == '...' then
+ dots = true
+ end
+ end
+ if not dots then
+ value.maxReturns = #lib.returns
+ end
+ else
+ value.maxReturns = 0
+ end
+ if lib.args then
+ local values = {}
+ for i, arg in ipairs(lib.args) do
+ values[i] = self:getLibValue(arg, parentType) or self:createValue('any')
+ end
+ self:setFunctionArg(value, values)
+ end
+ elseif tp == 'string' then
+ value = self:createValue('string', nil, v or lib.value)
+ elseif tp == 'boolean' then
+ value = self:createValue('boolean', nil, v or lib.value)
+ elseif tp == 'number' then
+ value = self:createValue('number', nil, v or lib.value)
+ elseif tp == 'integer' then
+ value = self:createValue('integer', nil, v or lib.value)
+ elseif tp == 'nil' then
+ value = self:createValue('nil')
+ elseif tp == '...' then
+ value = self:createValue('any')
+ else
+ value = self:createValue(tp or 'any')
+ end
+ self.libraryValue[lib] = value
+ value.lib = lib
+ value.parentType = parentType
+
+ self:getLibChild(value, lib, parentType)
+
+ return value
+end
+
+function mt:getName(name, source)
+ local loc = self.scope.locals[name]
+ if loc then
+ return loc
+ end
+ local ENV = self.scope.locals._ENV
+ local global = self:getField(self:getValue(ENV), name, source)
+ global.parent = ENV
+ return global
+end
+
+function mt:getIndex(obj)
+ local tp = obj.type
+ if tp == 'name' then
+ local var = self:getName(obj[1])
+ local value = self:getValue(var)
+ self:addInfo(var, 'get', obj)
+ return value
+ elseif (tp == 'string' or tp == 'number' or tp == 'boolean') then
+ return obj[1]
+ else
+ return self:getExp(obj)
+ end
+end
+
+-- expect表示遇到 ... 时,期待的返回数量
+function mt:unpackDots(res, expect)
+ local dots = self:getDots(1)
+ local func = dots.func
+ local start = dots.index
+ if expect then
+ local finish = start + expect - 1
+ for i = start, finish do
+ res[#res+1] = self:getFunctionArg(func, i)
+ end
+ else
+ if not func.argValues then
+ return
+ end
+ for i = start, #func.argValues do
+ res[#res+1] = func.argValues[i]
+ end
+ end
+end
+
+function mt:unpackList(list, expect)
+ local res = {
+ type = 'list',
+ }
+ if not list then
+ return res
+ end
+ if list.type == 'list' or list.type == 'call' then
+ for i, exp in ipairs(list) do
+ if exp.type == '...' then
+ self:unpackDots(res, expect)
+ break
+ end
+ local value = self:getExp(exp)
+ if value.type == 'list' then
+ if i == #list then
+ for _, v in ipairs(value) do
+ res[#res+1] = v
+ end
+ else
+ res[#res+1] = value[1]
+ end
+ else
+ res[#res+1] = value
+ end
+ end
+ elseif list.type == '...' then
+ self:unpackDots(res, expect)
+ else
+ local value = self:getExp(list)
+ if value.type == 'list' then
+ for i, v in ipairs(value) do
+ res[i] = v
+ end
+ else
+ res[1] = value
+ end
+ end
+ for _, v in ipairs(res) do
+ if v.type == 'list' then
+ error('Unpack list')
+ end
+ end
+ return res
+end
+
+function mt:getSimple(simple, mode)
+ local value = self:getExp(simple[1])
+ local field
+ local parentName
+ local tp = simple[1].type
+ if tp == 'name' then
+ field = self:getName(simple[1][1])
+ parentName = field.key
+ elseif tp == 'string' or tp == 'number' or tp == 'nil' or tp == 'boolean' then
+ local v = self:createValue(tp, simple[1], simple[1][1])
+ field = self:createDummyVar(simple[1], v)
+ parentName = '*' .. tp
+ else
+ local v = self:createValue('any', simple[1])
+ field = self:createDummyVar(simple[1], v)
+ parentName = '?'
+ end
+ local object
+ local lastField = field
+ for i = 2, #simple do
+ local obj = simple[i]
+ local tp = obj.type
+
+ if tp == 'call' then
+ local args = self:unpackList(obj)
+ if object then
+ table.insert(args, 1, self:getValue(object))
+ end
+ local func = value
+ -- 函数的返回值一定是list
+ value = self:call(func, args)
+ if i < #simple then
+ value = value[1] or self:createValue('any')
+ end
+ self.results.calls[#self.results.calls+1] = {
+ args = obj,
+ lastObj = simple[i-1],
+ nextObj = simple[i+1],
+ func = func,
+ }
+ parentName = parentName .. '(...)'
+ elseif tp == 'index' then
+ local child = obj[1]
+ local index = self:getIndex(child)
+ field = self:getField(value, index, child)
+ field.parentValue = value
+ value = self:getValue(field)
+ if mode == 'value' or i < #simple then
+ self:addInfo(field, 'get', obj)
+ end
+ field.parent = lastField
+ lastField = field
+ obj.object = object
+ obj.parentName = parentName
+ if obj[1].type == 'string' then
+ parentName = ('%s[%q]'):format(parentName, index)
+ elseif obj[1].type == 'number' or obj[1].type == 'boolean' then
+ parentName = ('%s[%s]'):format(parentName, index)
+ else
+ parentName = ('%s[?]'):format(parentName)
+ end
+ elseif tp == 'name' then
+ field = self:getField(value, obj[1], obj)
+ field.parentValue = value
+ value = self:getValue(field)
+ if mode == 'value' or i < #simple then
+ self:addInfo(field, 'get', obj)
+ end
+ field.parent = lastField
+ lastField = field
+ obj.object = object
+ obj.parentName = parentName
+ parentName = parentName .. '.' .. field.key
+ elseif tp == ':' then
+ object = field
+ simple[i-1].colon = obj
+ elseif tp == '.' then
+ simple[i-1].dot = obj
+ end
+ end
+ if mode == 'value' then
+ return value, object
+ elseif mode == 'field' then
+ return field, object
+ end
+ error('Unknow simple mode: ' .. mode)
+end
+
+function mt:isTrue(v)
+ if v.type == 'nil' then
+ return false
+ end
+ if v.type == 'boolean' and not v.value then
+ return false
+ end
+ return true
+end
+
+function mt:getBinary(exp)
+ local v1 = self:getExp(exp[1])
+ local v2 = self:getExp(exp[2])
+ local op = exp.op
+ -- TODO 搜索元方法
+ if op == 'or' then
+ if self:isTrue(v1) then
+ return v1
+ else
+ return v2
+ end
+ elseif op == 'and' then
+ if self:isTrue(v1) then
+ return v2
+ else
+ return v1
+ end
+ elseif op == '<='
+ or op == '>='
+ or op == '<'
+ or op == '>'
+ then
+ self:inference(v1, 'number')
+ self:inference(v2, 'number')
+ return self:createValue('boolean')
+ elseif op == '~='
+ or op == '=='
+ then
+ return self:createValue('boolean')
+ elseif op == '|'
+ or op == '~'
+ or op == '&'
+ or op == '<<'
+ or op == '>>'
+ then
+ self:inference(v1, 'integer')
+ self:inference(v2, 'integer')
+ if math.type(v1.value) == 'integer' and math.type(v2.value) == 'integer' then
+ if op == '|' then
+ return self:createValue('integer', v1.value | v2.value)
+ elseif op == '~' then
+ return self:createValue('integer', v1.value ~ v2.value)
+ elseif op == '&' then
+ return self:createValue('integer', v1.value &v2.value)
+ elseif op == '<<' then
+ return self:createValue('integer', v1.value << v2.value)
+ elseif op == '>>' then
+ return self:createValue('integer', v1.value >> v2.value)
+ end
+ end
+ return self:createValue('integer')
+ elseif op == '..' then
+ self:inference(v1, 'string')
+ self:inference(v2, 'string')
+ if type(v1.value) == 'string' and type(v2.value) == 'string' then
+ return self:createValue('string', nil, v1.value .. v2.value)
+ end
+ return self:createValue('string')
+ elseif op == '+'
+ or op == '-'
+ or op == '*'
+ or op == '/'
+ or op == '^'
+ or op == '%'
+ or op == '//'
+ then
+ self:inference(v1, 'number')
+ self:inference(v2, 'number')
+ if type(v1.value) == 'number' and type(v2.value) == 'number' then
+ if op == '+' then
+ return self:createValue('number', nil, v1.value + v2.value)
+ elseif op == '-' then
+ return self:createValue('number', nil, v1.value - v2.value)
+ elseif op == '*' then
+ return self:createValue('number', nil, v1.value * v2.value)
+ elseif op == '/' then
+ if v2.value ~= 0 then
+ return self:createValue('number', nil, v1.value / v2.value)
+ end
+ elseif op == '^' then
+ return self:createValue('number', nil, v1.value ^ v2.value)
+ elseif op == '%' then
+ if v2.value ~= 0 then
+ return self:createValue('number', nil, v1.value % v2.value)
+ end
+ elseif op == '//' then
+ if v2.value ~= 0 then
+ return self:createValue('number', nil, v1.value // v2.value)
+ end
+ end
+ end
+ return self:createValue('number')
+ end
+ return nil
+end
+
+function mt:getUnary(exp)
+ local v1 = self:getExp(exp[1])
+ local op = exp.op
+ -- TODO 搜索元方法
+ if op == 'not' then
+ return self:createValue('boolean')
+ elseif op == '#' then
+ self:inference(v1, 'table')
+ if type(v1.value) == 'string' then
+ return self:createValue('integer', nil, #v1.value)
+ end
+ return self:createValue('integer')
+ elseif op == '-' then
+ self:inference(v1, 'number')
+ if type(v1.value) == 'number' then
+ return self:createValue('number', nil, -v1.value)
+ end
+ return self:createValue('number')
+ elseif op == '~' then
+ self:inference(v1, 'integer')
+ if math.type(v1.value) == 'integer' then
+ return self:createValue('integer', nil, ~v1.value)
+ end
+ return self:createValue('integer')
+ end
+ return nil
+end
+
+function mt:getDots()
+ if not self.chunk.dots then
+ self:createDots(1)
+ end
+ return self.chunk.dots
+end
+
+function mt:getExp(exp)
+ local tp = exp.type
+ if tp == 'nil' then
+ return self:createValue('nil', exp)
+ elseif tp == 'string' then
+ self.results.strings[#self.results.strings+1] = exp
+ return self:createValue('string', exp, exp[1])
+ elseif tp == 'boolean' then
+ return self:createValue('boolean', exp, exp[1])
+ elseif tp == 'number' then
+ return self:createValue('number', exp, exp[1])
+ elseif tp == 'name' then
+ local var = self:getName(exp[1], exp)
+ local value = self:getValue(var)
+ self:addInfo(var, 'get', exp)
+ return value
+ elseif tp == 'simple' then
+ return self:getSimple(exp, 'value')
+ elseif tp == 'binary' then
+ return self:getBinary(exp)
+ elseif tp == 'unary' then
+ return self:getUnary(exp)
+ elseif tp == 'function' then
+ return self:buildFunction(exp)
+ elseif tp == 'table' then
+ return self:buildTable(exp)
+ elseif tp == '...' then
+ local value = { type = 'list' }
+ self:unpackDots(value)
+ return value
+ end
+ error('Unkown exp type: ' .. tostring(tp))
+end
+
+function mt:doDo(action)
+ self:scopePush(action)
+ self:doActions(action)
+ self:scopePop()
+end
+
+function mt:doReturn(action)
+ self:getCurrentFunction():set('hasReturn', true)
+ for i, exp in ipairs(action) do
+ local value = self:getExp(exp)
+ if value.type == 'list' then
+ if i == #action then
+ if #value == 0 then
+ value[1] = self:createValue('any', exp)
+ end
+ for x, v in ipairs(value) do
+ self:addInfo(v, 'return', exp)
+ self:setFunctionReturn(self:getCurrentFunction(), i + x - 1, v)
+ end
+ break
+ else
+ local v = value[1] or self:createValue('nil', exp)
+ self:addInfo(v, 'return', exp)
+ self:setFunctionReturn(self:getCurrentFunction(), i, v)
+ end
+ else
+ self:addInfo(value, 'return', exp)
+ self:setFunctionReturn(self:getCurrentFunction(), i, value)
+ end
+ end
+end
+
+function mt:createLabel(action)
+ local name = action[1]
+ if not self.chunk.labels[name] then
+ local label = {
+ type = 'label',
+ key = name,
+ }
+ self.chunk.labels[name] = label
+ self.results.labels[#self.results.labels+1] = label
+ end
+ return self.chunk.labels[name]
+end
+
+function mt:doSet(action)
+ if not action[2] then
+ return
+ end
+ local n = self:countList(action[1])
+ -- 要先计算值
+ local values = self:unpackList(action[2], n)
+ self:forList(action[1], function (key)
+ local value = table.remove(values, 1)
+ if key.type == 'name' then
+ local var = self:getName(key[1], key)
+ self:setValue(var, value, key)
+ if self:isGlobal(var) then
+ self.results.globals[#self.results.globals+1] = {
+ type = 'global',
+ global = var,
+ }
+ end
+ elseif key.type == 'simple' then
+ local field = self:getSimple(key, 'field')
+ self:setValue(field, value, key[#key])
+ local var = field
+ repeat
+ if self:isGlobal(var) then
+ self.results.globals[#self.results.globals+1] = {
+ type = 'field',
+ global = var,
+ }
+ break
+ end
+ var = var.parent
+ until not var
+ end
+ end)
+end
+
+function mt:doLocal(action)
+ local n = self:countList(action[1])
+ local values
+ if action[2] then
+ values = self:unpackList(action[2], n)
+ end
+ self:forList(action[1], function (key)
+ local value
+ if values then
+ value = table.remove(values, 1)
+ end
+ self:createLocal(key[1], key, value)
+ end)
+end
+
+function mt:doIf(action)
+ for _, block in ipairs(action) do
+ if block.filter then
+ self:getExp(block.filter)
+ end
+
+ self:scopePush(block)
+ self:doActions(block)
+ self:scopePop()
+ end
+end
+
+function mt:doLoop(action)
+
+ local min = self:unpackList(action.min)[1]
+ self:getExp(action.max)
+ if action.step then
+ self:getExp(action.step)
+ end
+
+ self:scopePush(action)
+ self:createLocal(action.arg[1], action.arg, min)
+ self:doActions(action)
+ self:scopePop()
+end
+
+function mt:doIn(action)
+ local args = self:unpackList(action.exp)
+
+ self:scopePush(action)
+ local func = table.remove(args, 1) or self:createValue('any')
+ local values = self:call(func, args)
+ self:forList(action.arg, function (arg)
+ local value = table.remove(values, 1)
+ self:createLocal(arg[1], arg, value)
+ end)
+
+ self:doActions(action)
+
+ self:scopePop()
+end
+
+function mt:doWhile(action)
+
+ self:getExp(action.filter)
+
+ self:scopePush(action)
+ self:doActions(action)
+ self:scopePop()
+end
+
+function mt:doRepeat(action)
+ self:scopePush(action)
+ self:doActions(action)
+ self:getExp(action.filter)
+ self:scopePop()
+end
+
+function mt:doFunction(action)
+ local name = action.name
+ local var, object
+ local source
+ if name then
+ if name.type == 'simple' then
+ var, object = self:getSimple(name, 'field')
+ source = name[#name]
+ else
+ var = self:getName(name[1], name)
+ source = name
+ end
+ end
+ local func = self:buildFunction(action, object)
+ if var then
+ self:setValue(var, func, source)
+ end
+end
+
+function mt:doLocalFunction(action)
+ local name = action.name
+ local var, object
+ local source
+ if name then
+ if name.type == 'simple' then
+ var, object = self:getSimple(name, 'field')
+ source = name[#name]
+ else
+ var = self:createLocal(name[1], name)
+ source = name
+ end
+ end
+ local func = self:buildFunction(action, object)
+ if var then
+ self:setValue(var, func, source)
+ end
+end
+
+function mt:doAction(action)
+ if not action then
+ -- Skip
+ return
+ end
+ local tp = action.type
+ if tp == 'do' then
+ self:doDo(action)
+ elseif tp == 'break' then
+ elseif tp == 'return' then
+ self:doReturn(action)
+ elseif tp == 'label' then
+ local label = self:createLabel(action)
+ self:addInfo(label, 'set', action)
+ elseif tp == 'goto' then
+ local label = self:createLabel(action)
+ self:addInfo(label, 'goto', action)
+ elseif tp == 'set' then
+ self:doSet(action)
+ elseif tp == 'local' then
+ self:doLocal(action)
+ elseif tp == 'simple' then
+ -- call
+ self:getSimple(action, 'value')
+ elseif tp == 'if' then
+ self:doIf(action)
+ elseif tp == 'loop' then
+ self:doLoop(action)
+ elseif tp == 'in' then
+ self:doIn(action)
+ elseif tp == 'while' then
+ self:doWhile(action)
+ elseif tp == 'repeat' then
+ self:doRepeat(action)
+ elseif tp == 'function' then
+ self:doFunction(action)
+ elseif tp == 'localfunction' then
+ self:doLocalFunction(action)
+ else
+ self:getExp(action)
+ end
+end
+
+function mt:doActions(actions)
+ for _, action in ipairs(actions) do
+ self:doAction(action)
+ if coroutine.isyieldable() then
+ coroutine.yield()
+ end
+ end
+end
+
+function mt:createEnvironment()
+ self.scope.block = { start = 0, finish = math.maxinteger }
+ -- 整个文件是一个函数
+ self.chunk.func = self:buildFunction()
+ self.results.main = self.chunk.func
+ -- 隐藏的上值`_ENV`
+ local parent = self:createLocal('_ENV')
+ parent.hide = true
+ local envValue = self:setValue(parent, self:buildTable())
+ -- _ENV 有个特殊标记
+ envValue.ENV = true
+ -- 隐藏的参数`...`
+ self:createDots(1)
+
+ -- 设置全局变量
+ if not GlobalChild then
+ for name, lib in pairs(library.global) do
+ local field = self:createField(envValue, name)
+ local value = self:getLibValue(lib, 'global')
+ value = self:setValue(field, value)
+ end
+ GlobalChild = envValue.child
+ end
+ envValue.child = readOnly(GlobalChild)
+
+ -- 设置 _G 使用 _ENV 的child
+ local g = self:getField(envValue, '_G')
+ local gValue = self:getValue(g)
+ gValue.child = envValue.child
+ self.env = envValue
+end
+
+local function compile(ast, lsp, uri)
+ local vm = setmetatable({
+ scope = env {
+ locals = {},
+ },
+ chunk = env {
+ labels = {},
+ },
+ results = {
+ locals = {},
+ labels = {},
+ funcs = {},
+ calls = {},
+ sources= {},
+ strings= {},
+ indexs = {},
+ globals= {},
+ main = nil,
+ },
+ libraryValue = {},
+ libraryChild = {},
+ lsp = lsp,
+ uri = uri,
+ }, mt)
+
+ -- 创建初始环境
+ vm:createEnvironment()
+
+ -- 执行代码
+ vm:doActions(ast)
+
+ vm.scope = nil
+ vm.chunk = nil
+ vm.libraryValue = nil
+ vm.libraryChild = nil
+
+ return vm
+end
+
+return function (ast, lsp, uri)
+ if not ast then
+ return nil
+ end
+ local suc, res = xpcall(compile, log.error, ast, lsp, uri)
+ if not suc then
+ return nil
+ end
+ return res
+end
diff --git a/script-beta/test/full/dirty.lua b/script-beta/test/full/dirty.lua
new file mode 100644
index 00000000..5fe4e998
--- /dev/null
+++ b/script-beta/test/full/dirty.lua
@@ -0,0 +1,15 @@
+TEST [[
+a.
+]]
+
+TEST [[
+a:
+]]
+
+TEST [[
+end
+]]
+
+TEST [[
+table.02X
+]]
diff --git a/script-beta/test/full/example.lua b/script-beta/test/full/example.lua
new file mode 100644
index 00000000..5b096655
--- /dev/null
+++ b/script-beta/test/full/example.lua
@@ -0,0 +1,43 @@
+local util = require 'utility'
+local parser = require 'parser'
+local files = require 'files'
+local diag = require 'core.diagnostics'
+
+-- 临时
+local function testIfExit(path)
+ local buf = util.loadFile(path:string())
+ if buf then
+ local vm
+
+ local clock = os.clock()
+ local max = 100
+ local need
+ for i = 1, max do
+ vm = TEST(buf)
+ local passed = os.clock() - clock
+ if passed >= 1.0 or i == max then
+ need = passed / i
+ break
+ end
+ end
+ print(('基准编译测试[%s]单次耗时:%.10f'):format(path:filename():string(), need))
+
+ local clock = os.clock()
+ local max = 100
+ local need
+ local lines = parser:lines(buf)
+ for i = 1, max do
+ files.removeAll()
+ files.setText('', buf)
+ diag('')
+ local passed = os.clock() - clock
+ if passed >= 1.0 or i == max then
+ need = passed / i
+ break
+ end
+ end
+ print(('基准诊断测试[%s]单次耗时:%.10f'):format(path:filename():string(), need))
+ end
+end
+testIfExit(ROOT / 'test' / 'example' / 'vm.txt')
+testIfExit(ROOT / 'test' / 'example' / 'largeGlobal.txt')
diff --git a/script-beta/test/full/init.lua b/script-beta/test/full/init.lua
new file mode 100644
index 00000000..f370671e
--- /dev/null
+++ b/script-beta/test/full/init.lua
@@ -0,0 +1,13 @@
+local parser = require 'parser'
+
+rawset(_G, 'TEST', true)
+
+function TEST(script)
+ local ast = parser:compile(script, 'lua', 'Lua 5.3')
+ assert(ast)
+ return ast
+end
+
+require 'full.normal'
+require 'full.example'
+require 'full.dirty'
diff --git a/script-beta/test/full/normal.lua b/script-beta/test/full/normal.lua
new file mode 100644
index 00000000..a673e74b
--- /dev/null
+++ b/script-beta/test/full/normal.lua
@@ -0,0 +1,157 @@
+TEST [[
+do
+ x = 1
+end
+]]
+
+TEST [[
+return nil, 1, true, 'xx'
+]]
+
+TEST [[
+return a
+]]
+
+TEST [[
+retrun a.b:c(1, 2, ...)[1][name]
+]]
+
+TEST [[
+return 1 + 1
+]]
+
+TEST [[
+return -1
+]]
+
+TEST [[
+return ...
+]]
+
+TEST [[
+return function (a, b, ...)
+end
+]]
+
+TEST [[
+return {
+ a = 1,
+ b = {
+ c = d,
+ e = f,
+ },
+ g,
+ h,
+ 1,
+}
+]]
+
+TEST [[
+::LABEL::
+goto LABEL
+goto NEXT
+::NEXT::
+]]
+
+TEST [[
+a, b, c = 1, 2, ...
+]]
+
+TEST [[
+local a, b, c = 1, 2, ...
+]]
+
+TEST [[
+a[#a+1] = 1
+]]
+
+TEST [[
+xx(a, b, 2, 3, ...)
+]]
+
+TEST [[
+if a then
+elseif b then
+elseif c then
+else
+end
+]]
+
+TEST [[
+for i = 1, 10, 1 do
+end
+]]
+
+TEST [[
+for a, b, c in pairs(t) do
+end
+]]
+
+TEST [[
+while true do
+end
+]]
+
+TEST [[
+repeat
+until true
+]]
+
+TEST [[
+function xx:yy(a, b, c, ...)
+end
+]]
+
+TEST [[
+local function xx(a, b, c, ...)
+end
+]]
+
+TEST [[
+local v = 1
+local function xx()
+ print(v)
+end
+local v = 2
+xx()
+]]
+
+TEST [[
+return {
+ 1, 2, 3
+}
+]]
+
+TEST [[
+return function ()
+end
+]]
+
+TEST [[
+t[...] = 1
+]]
+
+TEST [[
+return {
+ [...] = ...
+}
+]]
+
+TEST [[
+-- 选取单位
+---@param center point
+---@param radius number
+---@param height number
+---@return unit[]
+function scene:selectByCylinder(center, radius, height)
+end
+]]
+
+TEST [[
+local x = ,
+]]
+
+TEST [[
+---@type any|fun():nil
+local t
+]]
diff --git a/script-beta/test/highlight/init.lua b/script-beta/test/highlight/init.lua
new file mode 100644
index 00000000..0b916fd1
--- /dev/null
+++ b/script-beta/test/highlight/init.lua
@@ -0,0 +1,149 @@
+local core = require 'core.highlight'
+local files = require 'files'
+
+local function catch_target(script)
+ local list = {}
+ local cur = 1
+ while true do
+ local start, finish = script:find('<[!?].-[!?]>', cur)
+ if not start then
+ break
+ end
+ list[#list+1] = {
+ start = start + 2,
+ finish = finish - 2,
+ }
+ cur = finish + 1
+ end
+ return list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1] and target[2] == result[2] then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(script)
+ local target = catch_target(script)
+ for _, enter in ipairs(target) do
+ local start, finish = enter.start, enter.finish
+ files.removeAll()
+ local pos = (start + finish) // 2 + 1
+ local new_script = script:gsub('<[!?~]', ' '):gsub('[!?~]>', ' ')
+ files.setText('', new_script)
+
+ local positions = core('', pos)
+ if positions then
+ assert(founded(target, positions))
+ else
+ assert(#target == 0)
+ end
+ end
+end
+
+TEST [[
+local <!a!> = 1
+]]
+
+TEST [[
+local <!a!> = 1
+<!a!> = 2
+<!a!> = <!a!>
+]]
+
+TEST [[
+t.<!a!> = 1
+a = t.<!a!>
+]]
+
+TEST [[
+t = {
+ [<!"a"!>] = 1,
+ <!a!> = 1,
+}
+t[<!'a'!>] = 1
+a = t.<!a!>
+]]
+
+TEST [[
+:: <!a!> ::
+goto <!a!>
+]]
+
+TEST [[
+local function f(<!a!>)
+ return <!a!>
+end
+]]
+
+TEST [[
+local s = <!'asd/gadasd.fad.zxczg'!>
+]]
+
+TEST [[
+local b = <!true!>
+]]
+
+TEST [[
+local n = <!nil!>
+]]
+
+TEST [[
+local n = <!1.2354!>
+]]
+
+TEST [[
+local <!function!> f () <!end!>
+]]
+
+TEST [[
+<!function!> f () <!end!>
+]]
+
+TEST [[
+return <!function!> () <!end!>
+]]
+
+TEST [[
+<!if!> true <!then!>
+<!elseif!> true <!then!>
+<!elseif!> true <!then!>
+<!else!>
+<!end!>
+]]
+
+TEST [[
+<!for!> _ <!in!> _ <!do!>
+<!end!>
+]]
+
+TEST [[
+<!for!> i = 1, 10 <!do!>
+<!end!>
+]]
+
+TEST [[
+<!while!> true <!do!>
+<!end!>
+]]
+
+TEST [[
+<!repeat!>
+<!until!> true
+]]
+
+TEST [[
+<!do!>
+<!end!>
+]]
diff --git a/script-beta/test/hover/init.lua b/script-beta/test/hover/init.lua
new file mode 100644
index 00000000..6a1c275b
--- /dev/null
+++ b/script-beta/test/hover/init.lua
@@ -0,0 +1,935 @@
+local core = require 'core.hover'
+local files = require 'files'
+
+rawset(_G, 'TEST', true)
+
+function TEST(script)
+ return function (expect)
+ files.removeAll()
+ local start = script:find('<?', 1, true)
+ local finish = script:find('?>', 1, true)
+ local pos = (start + finish) // 2 + 1
+ local new_script = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
+ files.setText('', new_script)
+ local hover = core('', pos)
+ assert(hover)
+ expect = expect:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ assert(expect == label)
+ end
+end
+
+TEST [[
+local function <?x?>(a, b)
+end
+]]
+"function x(a: any, b: any)"
+
+TEST [[
+local function x(a, b)
+end
+<?x?>()
+]]
+"function x(a: any, b: any)"
+
+TEST [[
+local mt = {}
+mt.__index = mt
+
+function mt:init(a, b, c)
+ return
+end
+
+local obj = setmetatable({}, mt)
+
+obj:<?init?>(1, '测试')
+]]
+[[
+function mt:init(a: any, b: any, c: any)
+]]
+
+TEST [[
+local mt = {}
+mt.__index = mt
+mt.type = 'Class'
+
+function mt:init(a, b, c)
+ return
+end
+
+local obj = setmetatable({}, mt)
+
+obj:<?init?>(1, '测试')
+]]
+[[
+function Class:init(a: any, b: any, c: any)
+]]
+
+TEST [[
+local mt = {}
+mt.__index = mt
+mt.__name = 'Class'
+
+function mt:init(a, b, c)
+ return
+end
+
+local obj = setmetatable({}, mt)
+
+obj:<?init?>(1, '测试')
+]]
+[[
+function Class:init(a: any, b: any, c: any)
+]]
+
+TEST [[
+local mt = {}
+mt.__index = mt
+
+function mt:init(a, b, c)
+ return {}
+end
+
+local obj = setmetatable({}, mt)
+
+obj:<?init?>(1, '测试')
+]]
+[[
+function mt:init(a: any, b: any, c: any)
+ -> table
+]]
+
+TEST [[
+local mt = {}
+mt.__index = mt
+
+function mt:init(a, b, c)
+ return {}
+end
+
+local obj = setmetatable({}, mt)
+
+obj:init(1, '测试')
+obj.<?init?>(obj, 1, '测试')
+]]
+[[
+function mt:init(a: any, b: any, c: any)
+ -> table
+]]
+
+TEST [[
+function obj.xxx()
+end
+
+obj.<?xxx?>()
+]]
+"function obj.xxx()"
+
+-- 不不同调用方式推断定义
+--TEST [[
+--obj.<?xxx?>()
+--]]
+--[[function obj.xxx()
+-- -> any
+--]]
+
+TEST [[
+local <?x?> = 1
+]]
+"local x: integer = 1"
+
+TEST [[
+<?x?> = 1
+]]
+"global x: integer = 1"
+
+TEST [[
+local t = {}
+t.<?x?> = 1
+]]
+"field t.x: integer = 1"
+
+TEST [[
+t = {}
+t.<?x?> = 1
+]]
+"global t.x: integer = 1"
+
+TEST [[
+local <?obj?> = {}
+]]
+"local obj: {}"
+
+TEST [[
+local mt = {}
+mt.__name = 'class'
+
+local <?obj?> = setmetatable({}, mt)
+]]
+"local obj: class {}"
+
+TEST [[
+local mt = {}
+mt.name = 'class'
+mt.__index = mt
+
+local <?obj?> = setmetatable({}, mt)
+]]
+[[
+local obj: class {
+ __index: table,
+ name: string = "class",
+}
+]]
+
+TEST [[
+local mt = {}
+mt.TYPE = 'class'
+mt.__index = mt
+
+local <?obj?> = setmetatable({}, mt)
+]]
+[[
+local obj: *class {
+ TYPE: string = "class",
+ __index: table,
+}
+]]
+
+TEST [[
+local mt = {}
+mt.Class = 'class'
+mt.__index = mt
+
+local <?obj?> = setmetatable({}, mt)
+]]
+[[
+local obj: *class {
+ Class: string = "class",
+ __index: table,
+}
+]]
+
+TEST[[
+local fs = require 'bee.filesystem'
+local <?root?> = fs.current_path()
+]]
+"local root: *bee::filesystem"
+
+TEST[[
+('xx'):<?yy?>()
+]]
+[[function *string:yy()
+ -> any]]
+
+TEST [[
+local <?v?> = collectgarbage()
+]]
+"local v: any"
+
+TEST [[
+local type
+w2l:get_default()[<?type?>]
+]]
+"local type: any"
+
+TEST [[
+<?load?>()
+]]
+[=[
+function load(chunk: string/function [, chunkname: string [, mode: string [, env: table]]])
+ -> function, error_message: string
+]=]
+
+TEST [[
+string.<?lower?>()
+]]
+[[
+function string.lower(string)
+ -> string
+]]
+
+TEST [[
+local function x(a, ...)
+end
+
+<?x?>(1, 2, 3, 4, 5, 6, 7)
+]]
+[[
+function x(a: number, ...)
+]]
+
+TEST [[
+local function x()
+ return y()
+end
+
+<?x?>()
+]]
+[[
+function x()
+ -> any
+]]
+
+TEST [[
+local mt = {}
+mt.__index = mt
+
+function mt:add(a, b)
+end
+
+local function init()
+ return setmetatable({}, mt)
+end
+
+local t = init()
+t:<?add?>()
+]]
+[[
+function mt:add(a: any, b: any)
+]]
+
+TEST [[
+local <?t?> = - 1000
+]]
+[[local t: number = -1000]]
+
+TEST [[
+for <?c?> in io.lines() do
+end
+]]
+[[local c: string]]
+
+TEST [[
+local function f()
+ return ...
+end
+local <?n?> = f()
+]]
+[[local n: any]]
+
+TEST [[
+local <?n?> = table.unpack(t)
+]]
+[[local n: any]]
+
+TEST [[
+local <?n?>
+table.pack(n)
+]]
+[[
+local n: any
+]]
+
+TEST [[
+(<?'xxx'?>):sub()
+]]
+(nil)
+
+TEST [[
+local <?t?> = {
+ a = 1,
+ b = 2,
+ c = 3,
+}
+]]
+[[
+local t: {
+ a: number = 1,
+ b: number = 2,
+ c: number = 3,
+}
+]]
+
+TEST [[
+local <?t?> = {
+ a = 1,
+ [1] = 2,
+ [true] = 3,
+ [5.5] = 4,
+ [{}] = 5,
+ [function () end] = 6,
+ ["b"] = 7,
+ ["012"] = 8,
+}
+]]
+[[
+local t: {
+ ["012"]: number = 8,
+ [*function]: number = 6,
+ [*table]: number = 5,
+ [001]: number = 2,
+ [5.5]: number = 4,
+ [true]: number = 3,
+ a: number = 1,
+ b: number = 7,
+}
+]]
+
+TEST [[
+local <?t?> = {}
+t[#t+1] = 1
+t[#t+1] = 1
+
+local any = collectgarbage()
+t[any] = any
+]]
+[[
+local t: {
+ [*number]: number = 1,
+}
+]]
+
+TEST[[
+local x = 1
+local y = x
+print(<?y?>)
+]]
+[[
+local y: number = 1
+]]
+
+TEST[[
+local mt = {}
+mt.a = 1
+mt.b = 2
+mt.c = 3
+local <?obj?> = setmetatable({}, {__index = mt})
+]]
+[[
+local obj: {
+ a: number = 1,
+ b: number = 2,
+ c: number = 3,
+}
+]]
+
+TEST[[
+local mt = {}
+mt.__index = {}
+
+function mt:test(a, b)
+ self:<?test?>()
+end
+]]
+[[
+function mt:test(a: any, b: any)
+]]
+
+TEST[[
+local mt = {}
+mt.__index = mt
+mt.__name = 'obj'
+
+function mt:remove()
+end
+
+local <?self?> = setmetatable({
+ id = 1,
+}, mt)
+]]
+[[
+local self: *obj {
+ __index: table,
+ __name: string = "obj",
+ id: number = 1,
+ remove: function,
+}
+]]
+
+TEST[[
+local <?sssss?> = require 'utf8'
+]]
+[[
+local sssss<utf8>: {
+ char: function,
+ charpattern: string,
+ codepoint: function,
+ codes: function,
+ len: function,
+ offset: function,
+}
+]]
+
+TEST[[
+function a(v)
+ print(<?v?>)
+end
+a(1)
+]]
+[[
+local v: number = 1
+]]
+
+TEST[[
+function a(v)
+ print(<?v?>)
+end
+pcall(a, 1)
+]]
+[[
+local v: number = 1
+]]
+
+TEST[[
+function a(v)
+ print(<?v?>)
+end
+xpcall(a, log.error, 1)
+]]
+[[
+local v: number = 1
+]]
+
+TEST[[
+function a(v)
+ return 'a'
+end
+local _, <?r?> = pcall(a, 1)
+]]
+[[
+local r: string = "a"
+]]
+
+TEST[[
+local <?n?> = rawlen()
+]]
+[[
+local n: integer
+]]
+
+TEST[[
+<?next?>()
+]]
+[[
+function next(table: table [, index: any])
+ -> key: any, value: any
+]]
+
+TEST[[
+local <?n?> = pairs()
+]]
+[[
+function n<next>(table: table [, index: any])
+ -> key: any, value: any
+]]
+
+TEST[[
+local <?x?> = '\a'
+]]
+[[local x: string = "\007"]]
+
+TEST[[
+---@class Class
+local <?x?> = class()
+]]
+[[
+local x: *Class {}
+]]
+
+TEST[[
+---@class Class
+<?x?> = class()
+]]
+[[
+global x: *Class {}
+]]
+
+TEST[[
+local t = {
+ ---@class Class
+ <?x?> = class()
+}
+]]
+[[
+field x: *Class {}
+]]
+
+TEST[[
+---@type Class
+local <?x?> = class()
+]]
+[[
+local x: *Class {}
+]]
+
+TEST[[
+---@type Class
+<?x?> = class()
+]]
+[[
+global x: *Class {}
+]]
+
+TEST[[
+local t = {
+ ---@type Class
+ <?x?> = class()
+}
+]]
+[[
+field x: *Class {}
+]]
+
+TEST[[
+---@type A|B|C
+local <?x?> = class()
+]]
+[[
+local x: *A|B|C {}
+]]
+
+TEST[[
+---@class Class
+local <?x?> = {
+ b = 1
+}
+]]
+[[
+local x: *Class {
+ b: number = 1,
+}
+]]
+
+TEST [[
+---@class Class
+local mt = {}
+
+---@param t Class
+function f(<?t?>)
+end
+]]
+[[
+local t: *Class {}
+]]
+
+TEST [[
+---@class Class
+local mt = {}
+
+---@param t Class
+function f(t)
+ print(<?t?>)
+end
+]]
+[[
+local t: *Class {}
+]]
+
+TEST [[
+---@class Class
+local mt = {}
+
+---@param t Class
+function f(t)
+end
+
+f(<?s?>)
+]]
+[[
+global s: *Class {}
+]]
+
+TEST [[
+---@class Class
+
+---@param k Class
+for <?k?> in pairs(t) do
+end
+]]
+[[
+local k<key>: *Class {}
+]]
+
+TEST [[
+---@class Class
+
+---@param v Class
+for k, <?v?> in pairs(t) do
+end
+]]
+[[
+local v<value>: *Class {}
+]]
+
+TEST [[
+---@return A|B
+---@return C
+local function <?f?>()
+end
+]]
+[[
+function f()
+ -> A|B, C
+]]
+
+TEST [[
+---@generic T
+---@param x T
+---@return T
+local function f(x)
+end
+
+local <?r?> = f(1)
+]]
+[[
+local r: number
+]]
+
+TEST [[
+---@param x number
+---@param y boolean
+local function <?f?>(x, y)
+end
+]]
+[[
+function f(x: number, y: boolean)
+]]
+
+TEST [[
+---@vararg Class
+local function f(...)
+ local _, <?x?> = ...
+end
+f(1, 2, 3)
+]]
+[[
+local x: *Class = 2
+]]
+
+TEST [[
+---@vararg Class
+local function f(...)
+ local _, <?x?> = ...
+end
+]]
+[[
+local x: *Class {}
+]]
+
+TEST [[
+---@type string[]
+local <?x?>
+]]
+[[
+local x: {
+ [*integer]: string,
+}
+]]
+
+TEST [[
+---@type (string|boolean)[]
+local <?x?>
+]]
+[[
+local x: {
+ [*integer]: string|boolean,
+}
+]]
+
+TEST [[
+---@type string[]
+local t
+local <?x?> = t[1]
+]]
+[[
+local x: string
+]]
+
+TEST [[
+---@type string[]
+local t
+for _, <?x?> in ipairs(t) do
+end
+]]
+[[
+local x: string
+]]
+
+TEST [[
+---@type string[]
+local t
+for _, <?x?> in pairs(t) do
+end
+]]
+[[
+local x: string
+]]
+
+TEST [[
+---@type string[]
+local t
+for <?k?>, v in pairs(t) do
+end
+]]
+[[
+local k: integer
+]]
+
+TEST [[
+---@type table<ClassA, ClassB>
+local <?x?>
+]]
+[[
+local x: {
+ [*ClassA]: ClassB,
+}
+]]
+
+TEST [[
+---@type table<ClassA, ClassB>
+local t
+for _, <?x?> in pairs(t) do
+end
+]]
+[[
+local x: *ClassB
+]]
+
+TEST [[
+---@type table<ClassA, ClassB>
+local t
+for <?k?>, v in pairs(t) do
+end
+]]
+[[
+local k: *ClassA
+]]
+
+TEST [[
+---@type fun(x: number, y: number):boolean
+local <?f?>
+]]
+[[
+function f(x: number, y: number)
+ -> boolean
+]]
+
+TEST [[
+---@type fun(x: number, y: number):boolean
+local f
+f(<?a?>)
+]]
+[[
+global a: number
+]]
+
+TEST [[
+---@type fun(x: number, y: number):boolean
+local f
+local <?r?> = f()
+]]
+[[
+local r: boolean
+]]
+
+TEST [[
+---@param f fun():void
+function t(<?f?>) end
+]]
+[[
+function ()
+ -> void
+]]
+
+TEST [[
+---@type fun(a:any, b:any)
+local f
+local t = {f = f}
+t:<?f?>()
+]]
+[[
+function f(b: any)
+ -> any
+]]
+
+TEST [[
+---@param names string[]
+local function f(<?names?>)
+end
+]]
+[[
+local names: {
+ [*integer]: string,
+}
+]]
+
+TEST [[
+---@return any
+function <?f?>()
+ ---@type integer
+ local a
+ return a
+end
+]]
+[[
+function f()
+ -> any
+]]
+
+TEST [[
+---@return any
+function f()
+ ---@type integer
+ local a
+ return a
+end
+
+local <?x?> = f()
+]]
+[[
+local x: any
+]]
+
+TEST [[
+local <?x?> <close> <const> = 1
+]]
+[[
+local x <close> <const>: number = 1
+]]
+
+TEST [[
+---@param x number {optional = 'after'}
+---@param y boolean {optional = 'self'}
+---@param z string
+function <?f?>(x, y, z) end
+]]
+[=[
+function f([x: number [, y: boolean], z: string])
+]=]
+
+TEST [[
+---@return string {name = 'key'}
+---@return string {name = 'value'}
+function <?f?>() end
+]]
+[=[
+function f()
+ -> key: string, value: string
+]=]
+
+TEST [[
+---@return {name = 'x', optional = 'after'}
+---@return string {name = 'y', optional = 'self'}
+---@return string {name = 'z'}
+function <?f?>() end
+]]
+[=[
+function f()
+ -> [x: any [, y: string], z: string]
+]=]
+
+TEST [[
+---@return {name = 'x', optional = 'after'}
+---@return string {name = 'y', optional = 'self'}
+---@return string {name = 'z'}
+function f()
+ return function (a, b)
+ end
+end
+
+<?f2?> = f()
+]]
+[=[
+function f2(a: any, b: any)
+]=]
diff --git a/script-beta/test/other/init.lua b/script-beta/test/other/init.lua
new file mode 100644
index 00000000..069a2454
--- /dev/null
+++ b/script-beta/test/other/init.lua
@@ -0,0 +1,11 @@
+local fs = require 'bee.filesystem'
+local platform = require 'bee.platform'
+local path = fs.path '/a/b/c/d/e/../../../..'
+local absolute = fs.absolute(path)
+if platform.OS == 'Windows' then
+ assert(absolute:string():sub(-2) == '/a', absolute:string())
+elseif platform.OS == 'Linux' then
+ assert(absolute:string():sub(-3) == '/a/', absolute:string())
+elseif platform.OS == 'macOS' then
+ -- 不支持
+end
diff --git a/script-beta/test/references/init.lua b/script-beta/test/references/init.lua
new file mode 100644
index 00000000..951ff516
--- /dev/null
+++ b/script-beta/test/references/init.lua
@@ -0,0 +1,142 @@
+local core = require 'core.reference'
+local files = require 'files'
+
+local function catch_target(script)
+ local list = {}
+ local cur = 1
+ while true do
+ local start, finish = script:find('<[!?].-[!?]>', cur)
+ if not start then
+ break
+ end
+ list[#list+1] = { start + 2, finish - 2 }
+ cur = finish + 1
+ end
+ return list
+end
+
+local function founded(targets, results)
+ if #targets ~= #results then
+ return false
+ end
+ for _, target in ipairs(targets) do
+ for _, result in ipairs(results) do
+ if target[1] == result[1] and target[2] == result[2] then
+ goto NEXT
+ end
+ end
+ do return false end
+ ::NEXT::
+ end
+ return true
+end
+
+function TEST(script)
+ files.removeAll()
+ local target = catch_target(script)
+ local start = script:find('<[?~]')
+ local finish = script:find('[?~]>')
+ local pos = (start + finish) // 2 + 1
+ local new_script = script:gsub('<[!?~]', ' '):gsub('[!?~]>', ' ')
+ files.setText('', new_script)
+
+ local results = core('', pos)
+ if results then
+ local positions = {}
+ for i, result in ipairs(results) do
+ positions[i] = { result.target.start, result.target.finish }
+ end
+ assert(founded(target, positions))
+ else
+ assert(#target == 0)
+ end
+end
+
+TEST [[
+local <?a?> = 1
+<!a!> = <!a!>
+]]
+
+TEST [[
+t.<?a?> = 1
+t.<!a!> = t.<!a!>
+]]
+
+TEST [[
+:: <!LABEL!> ::
+goto <?LABEL?>
+if true then
+ goto <!LABEL!>
+end
+]]
+
+TEST [[
+:: <?LABEL?> ::
+goto <!LABEL!>
+if true then
+ goto <!LABEL!>
+end
+]]
+
+TEST [[
+local a = 1
+local <?a?> = 1
+<!a!> = <!a!>
+]]
+
+TEST [[
+local t = {
+ <?a?> = 1
+}
+print(t.<!a!>)
+]]
+
+TEST [[
+local t = {
+ [<?'a'?>] = 1
+}
+print(t.<!a!>)
+]]
+
+TEST [[
+local <!mt!> = {}
+function <!mt!>:a()
+ <?self?>:remove()
+end
+]]
+
+TEST [[
+local function f()
+ return <~<!function~> ()
+ end!>
+end
+
+local <!f2!> = f()
+]]
+
+TEST [[
+local function f()
+ return nil, <~<!function~> ()
+ end!>
+end
+
+local _, <!f2!> = f()
+]]
+
+TEST [[
+table.<!dump!>()
+function table.<?dump?>()
+end
+]]
+
+--TEST [[
+-----@class <!Class!>
+-----@type <?Class?>
+-----@type <!Class!>
+--]]
+--
+--TEST [[
+-----@class <?Class?>
+-----@type <!Class!>
+-----@type <!Class!>
+--]]
diff --git a/script-beta/test/rename/init.lua b/script-beta/test/rename/init.lua
new file mode 100644
index 00000000..a1595d9a
--- /dev/null
+++ b/script-beta/test/rename/init.lua
@@ -0,0 +1,165 @@
+local core = require 'core.rename'
+local files = require 'files'
+
+local function replace(text, positions)
+ local buf = {}
+ table.sort(positions, function (a, b)
+ return a.start < b.start
+ end)
+ local lastPos = 1
+ for _, info in ipairs(positions) do
+ buf[#buf+1] = text:sub(lastPos, info.start - 1)
+ buf[#buf+1] = info.text
+ lastPos = info.finish + 1
+ end
+ buf[#buf+1] = text:sub(lastPos)
+ return table.concat(buf)
+end
+
+function TEST(oldName, newName)
+ return function (oldScript)
+ return function (newScript)
+ files.removeAll()
+ files.setText('', oldScript)
+ local pos = oldScript:find('[^%w_]'..oldName..'[^%w_]')
+ assert(pos)
+
+ local positions = core.rename('', pos+1, newName)
+ local script = oldScript
+ if positions then
+ script = replace(script, positions)
+ end
+ assert(script == newScript)
+ end
+ end
+end
+
+TEST ('a', 'b') [[
+local a = 1
+]] [[
+local b = 1
+]]
+
+TEST ('a', 'b') [[
+local a = 1
+a = 2
+a = a
+]] [[
+local b = 1
+b = 2
+b = b
+]]
+
+TEST ('a', 'b') [[
+t.a = 1
+a = t.a
+a = t['a']
+a = t["a"]
+a = t[ [=[a]=] ]
+]] [[
+t.b = 1
+a = t.b
+a = t['b']
+a = t["b"]
+a = t[ [=[b]=] ]
+]]
+
+TEST ('a', 'b') [[
+:: a ::
+goto a
+]] [[
+:: b ::
+goto b
+]]
+
+TEST ('a', 'b') [[
+local function f(a)
+ return a
+end
+]] [[
+local function f(b)
+ return b
+end
+]]
+
+TEST ('a', '!!!') [[
+t = {
+ a = 0
+}
+t.a = 1
+a = t.a
+]] [[
+t = {
+ ["!!!"] = 0
+}
+t["!!!"] = 1
+a = t["!!!"]
+]]
+
+TEST ('a', '!!!') [[
+t = {
+ ['a'] = 0
+}
+t.a = 1
+a = t.a
+]] [[
+t = {
+ ['!!!'] = 0
+}
+t["!!!"] = 1
+a = t["!!!"]
+]]
+
+TEST ('a', '"') [[
+print(t[ "a" ])
+]] [[
+print(t[ "\"" ])
+]]
+
+TEST ('a', '!!!') [[
+function mt:a()
+end
+mt:a()
+]] [[
+mt["!!!"] = function (self)
+end
+mt:!!!()
+]]
+
+TEST ('a', '!!!') [[
+function mt:a(x, y)
+end
+mt:a()
+]] [[
+mt["!!!"] = function (self, x, y)
+end
+mt:!!!()
+]]
+
+TEST ('a', '!!!') [[
+a = a
+]] [[
+_ENV["!!!"] = _ENV["!!!"]
+]]
+
+TEST ('a', '!!!') [[
+function a() end
+]] [[
+_ENV["!!!"] = function () end
+]]
+
+TEST ('a', 'a.b') [[
+function a() end
+a()
+]] [[
+function a.b() end
+a.b()
+]]
+
+TEST ('a', 'a:b') [[
+function a() end
+a()
+]] [[
+function a:b() end
+a:b()
+]]
diff --git a/script-beta/test/signature/init.lua b/script-beta/test/signature/init.lua
new file mode 100644
index 00000000..a2a647e7
--- /dev/null
+++ b/script-beta/test/signature/init.lua
@@ -0,0 +1,137 @@
+local parser = require 'parser'
+local core = require 'core'
+local buildVM = require 'vm'
+
+rawset(_G, 'TEST', true)
+
+function TEST(script)
+ return function (expect)
+ local pos = script:find('$', 1, true)
+ local new_script = script:gsub('%$', '')
+ local ast = parser:parse(new_script, 'lua', 'Lua 5.3')
+ local vm = buildVM(ast)
+ assert(vm)
+ local hovers = core.signature(vm, pos)
+ if hovers then
+ assert(expect)
+ local hover = hovers[#hovers]
+
+ local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ expect.label = expect.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
+ local arg = hover.argLabel
+
+ assert(expect.label == label)
+ assert(expect.arg[1] == arg[1])
+ assert(expect.arg[2] == arg[2])
+ else
+ assert(expect == nil)
+ end
+ end
+end
+
+TEST [[
+local function x(a, b)
+end
+
+x($
+]]
+{
+ label = "function x(a: any, b: any)",
+ arg = {12, 17},
+}
+
+TEST [[
+local function x(a, b)
+end
+
+x($)
+]]
+{
+ label = "function x(a: any, b: any)",
+ arg = {12, 17},
+}
+
+TEST [[
+local function x(a, b)
+end
+
+x(xxx$)
+]]
+{
+ label = "function x(a: any, b: any)",
+ arg = {12, 17},
+}
+
+TEST [[
+local function x(a, b)
+end
+
+x(xxx, $)
+]]
+{
+ label = "function x(a: any, b: any)",
+ arg = {20, 25},
+}
+
+TEST [[
+function mt:f(a)
+end
+
+mt:f($
+]]
+{
+ label = 'function mt:f(a: any)',
+ arg = {15, 20},
+}
+
+TEST [[
+(''):sub($
+]]
+{
+ label = [[
+function *string:sub(i: integer [, j: integer(-1)])
+ -> string
+]],
+ arg = {22, 31},
+}
+
+TEST [[
+(''):sub(1)$
+]]
+(nil)
+
+TEST [[
+local function f(a, b, c)
+end
+
+f(1, 'string$')
+]]
+(nil)
+
+TEST [[
+pcall(function () $ end)
+]]
+(nil)
+
+TEST [[
+table.unpack {$}
+]]
+(nil)
+
+TEST [[
+---@type fun(x: number, y: number):boolean
+local zzzz
+zzzz($)
+]]
+{
+ label = [[
+function zzzz(x: number, y: number)
+ -> boolean
+]],
+ arg = {15, 23},
+}
+
+TEST [[
+('abc'):format(f($))
+]]
+(nil)
diff --git a/script-beta/test/type_inference/init.lua b/script-beta/test/type_inference/init.lua
new file mode 100644
index 00000000..f509ca3f
--- /dev/null
+++ b/script-beta/test/type_inference/init.lua
@@ -0,0 +1,229 @@
+local files = require 'files'
+local config = require 'config'
+local vm = require 'vm'
+local guide = require 'parser.guide'
+
+rawset(_G, 'TEST', true)
+
+local function getSource(pos)
+ local ast = files.getAst('')
+ return guide.eachSourceContain(ast.ast, pos, function (source)
+ if source.type == 'local'
+ or source.type == 'getlocal'
+ or source.type == 'setlocal'
+ or source.type == 'setglobal'
+ or source.type == 'getglobal'
+ or source.type == 'field'
+ or source.type == 'method' then
+ return source
+ end
+ end)
+end
+
+function TEST(wanted)
+ return function (script)
+ files.removeAll()
+ local start = script:find('<?', 1, true)
+ local finish = script:find('?>', 1, true)
+ local pos = (start + finish) // 2 + 1
+ local newScript = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
+ files.setText('', newScript)
+ local source = getSource(pos)
+ assert(source)
+ local result = vm.getType(source) or 'any'
+ assert(wanted == result)
+ end
+end
+
+config.config.runtime.version = 'Lua 5.4'
+
+TEST 'string' [[
+local <?var?> = '111'
+]]
+
+TEST 'boolean' [[
+local <?var?> = true
+]]
+
+TEST 'integer' [[
+local <?var?> = 1
+]]
+
+TEST 'number' [[
+local <?var?> = 1.0
+]]
+
+TEST 'string' [[
+local var = '111'
+t.<?x?> = var
+]]
+
+TEST 'any' [[
+local <?var?>
+var = '111'
+]]
+
+TEST 'string' [[
+local var
+var = '111'
+print(<?var?>)
+]]
+
+TEST 'function' [[
+function <?xx?>()
+end
+]]
+
+TEST 'function' [[
+local function <?xx?>()
+end
+]]
+
+TEST 'function' [[
+local xx
+<?xx?> = function ()
+end
+]]
+
+TEST 'table' [[
+local <?t?> = {}
+]]
+
+TEST 'function' [[
+<?x?>()
+]]
+
+TEST 'table' [[
+<?t?>.x = 1
+]]
+
+TEST 'boolean' [[
+<?x?> = not y
+]]
+
+TEST 'integer' [[
+<?x?> = #y
+]]
+
+TEST 'number' [[
+<?x?> = - y
+]]
+
+TEST 'integer' [[
+<?x?> = ~ y
+]]
+
+TEST 'integer' [[
+local a = true
+local b = 1
+<?x?> = a and b
+]]
+
+TEST 'integer' [[
+local a = false
+local b = 1
+<?x?> = a or b
+]]
+
+TEST 'boolean' [[
+<?x?> = a == b
+]]
+
+TEST 'integer' [[
+<?x?> = a << b
+]]
+
+TEST 'string' [[
+<?x?> = a .. b
+]]
+
+TEST 'number' [[
+<?x?> = a + b
+]]
+
+TEST 'table' [[
+<?table?>()
+]]
+
+TEST 'string' [[
+<?x?> = _VERSION
+]]
+
+TEST 'function' [[
+<?x?> = ('x').sub
+]]
+
+TEST 'function' [[
+<?x?> = _VERSION.sub
+]]
+
+TEST 'table' [[
+<?x?> = setmetatable({})
+]]
+
+TEST 'integer' [[
+local function x()
+ return 1
+end
+<?y?> = x()
+]]
+
+TEST 'string|table' [[
+local y = #<?x?>
+]]
+
+TEST 'integer' [[
+local y = <?x?> << 0
+]]
+
+TEST 'integer' [[
+local function f(<?a?>, b)
+ return a << b
+end
+]]
+
+-- 不根据调用者的输入参数来推测
+--TEST 'number' [[
+--local function x(a)
+-- return <?a?>
+--end
+--x(1)
+--]]
+
+TEST 'table' [[
+setmetatable(<?b?>)
+]]
+
+-- 不根据对方函数内的使用情况来推测
+--TEST 'number' [[
+--local function x(a)
+-- _ = a + 1
+--end
+--local b
+--x(<?b?>)
+--]]
+
+--TEST 'number' [[
+--local function x(a, ...)
+-- local _, <?b?>, _ = ...
+--end
+--x(nil, 'xx', 1, true)
+--]]
+
+-- 引用不跨越参数
+--TEST 'number' [[
+--local function x(a, ...)
+-- return true, 'ss', ...
+--end
+--local _, _, _, <?b?>, _ = x(nil, true, 1, 'yy')
+--]]
+
+-- 暂不支持这些特殊情况,之后用其他语法定义
+--TEST 'integer' [[
+--for <?i?> in ipairs(t) do
+--end
+--]]
+--
+--TEST 'any' [[
+--local <?x?> = next()
+--]]