diff --git a/data/bindata.go b/data/bindata.go index dae2d900..06ece271 100644 --- a/data/bindata.go +++ b/data/bindata.go @@ -91,6 +91,9 @@ // .tmp/data/yao/models/history.mod.yao // .tmp/data/yao/models/kb.mod.yao // .tmp/data/yao/models/user.mod.yao +// .tmp/data/yao/models/user_oauth_account.mod.yao +// .tmp/data/yao/models/user_role.mod.yao +// .tmp/data/yao/models/user_type.mod.yao // .tmp/data/yao/release/app.yaz // .tmp/data/yao/stores/agent/cache.lru.yao // .tmp/data/yao/stores/agent/memory.badger.yao @@ -280,7 +283,7 @@ func cuiSetupIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -300,7 +303,7 @@ func cuiV09IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v0.9/index.html", size: 13, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "cui/v0.9/index.html", size: 13, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -320,7 +323,7 @@ func cuiV10IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/index.html", size: 49, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "cui/v1.0/index.html", size: 49, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -340,7 +343,7 @@ func cuiV10Layouts__indexAsyncJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "cui/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -360,7 +363,7 @@ func cuiV10UmiJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "cui/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -380,7 +383,7 @@ func initEnv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -400,7 +403,7 @@ func initVscodeSettingsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -420,7 +423,7 @@ func initVscodeTypesRuntimeConsoleDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -440,7 +443,7 @@ func initVscodeTypesRuntimeExceptionDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -460,7 +463,7 @@ func initVscodeTypesRuntimeFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -480,7 +483,7 @@ func initVscodeTypesRuntimeGlobalDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -500,7 +503,7 @@ func initVscodeTypesRuntimeHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -520,7 +523,7 @@ func initVscodeTypesRuntimeIoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -540,7 +543,7 @@ func initVscodeTypesRuntimeLogDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -560,7 +563,7 @@ func initVscodeTypesRuntimeNeoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -580,7 +583,7 @@ func initVscodeTypesRuntimeProcessFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -600,7 +603,7 @@ func initVscodeTypesRuntimeProcessHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -620,7 +623,7 @@ func initVscodeTypesRuntimeProcessModelDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -640,7 +643,7 @@ func initVscodeTypesRuntimeProcessDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -660,7 +663,7 @@ func initVscodeTypesRuntimeQueryDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -680,7 +683,7 @@ func initVscodeTypesRuntimeStoreDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -700,7 +703,7 @@ func initVscodeTypesRuntimeSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -720,7 +723,7 @@ func initVscodeTypesRuntimeTimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -740,7 +743,7 @@ func initVscodeTypesRuntimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -760,7 +763,7 @@ func initVscodeTypesSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -780,7 +783,7 @@ func initAppYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -800,7 +803,7 @@ func initDataReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -820,7 +823,7 @@ func initDataTemplatesDefault__assetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -840,7 +843,7 @@ func initDataTemplatesDefault__assetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -860,7 +863,7 @@ func initDataTemplatesDefault__assetsImagesLogosLogo_colorSvg() (*asset, error) return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -880,7 +883,7 @@ func initDataTemplatesDefault__assetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -900,7 +903,7 @@ func initDataTemplatesDefault__dataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -920,7 +923,7 @@ func initDataTemplatesDefault__documentHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -940,7 +943,7 @@ func initDataTemplatesDefaultIndexIndexCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -960,7 +963,7 @@ func initDataTemplatesDefaultIndexIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -980,7 +983,7 @@ func initDataTemplatesDefaultIndexIndexJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1000,7 +1003,7 @@ func initDbReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1020,7 +1023,7 @@ func initFlowsMenuFlowYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1040,7 +1043,7 @@ func initFormsAccountFormYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1060,7 +1063,7 @@ func initIconsAppIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1080,7 +1083,7 @@ func initIconsAppIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1100,7 +1103,7 @@ func initIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1120,7 +1123,7 @@ func initLoginsAdminLoginYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1140,7 +1143,7 @@ func initLogsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1160,7 +1163,7 @@ func initModelsAdminUserModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1180,7 +1183,7 @@ func initModelsTestsPetModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1200,7 +1203,7 @@ func initNeoNeoYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1220,7 +1223,7 @@ func initPublicReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1240,7 +1243,7 @@ func initPublicAssetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1260,7 +1263,7 @@ func initPublicAssetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1280,7 +1283,7 @@ func initPublicAssetsImagesLogosLogo_colorSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1300,7 +1303,7 @@ func initPublicAssetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1320,7 +1323,7 @@ func initPublicAssetsLibsuiMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1340,7 +1343,7 @@ func initPublicAssetsLibsuiMinJsMap() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1360,7 +1363,7 @@ func initPublicIndexCfg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1380,7 +1383,7 @@ func initPublicIndexSui() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1400,7 +1403,7 @@ func initScriptsAccountTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1420,7 +1423,7 @@ func initScriptsAiNeoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1440,7 +1443,7 @@ func initScriptsTestsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1460,7 +1463,7 @@ func initScriptsUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1480,7 +1483,7 @@ func initSuisWebSuiYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1500,7 +1503,7 @@ func initTablesAccountTabYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1520,7 +1523,7 @@ func initTsconfigJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1540,7 +1543,7 @@ func libsuiAgentTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1560,7 +1563,7 @@ func libsuiIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1580,7 +1583,7 @@ func libsuiUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1600,7 +1603,7 @@ func libsuiYaoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1620,7 +1623,7 @@ func publicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1640,7 +1643,7 @@ func uiIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1660,7 +1663,7 @@ func yaoDataIcons404Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1680,7 +1683,7 @@ func yaoDataIconsIconIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1700,7 +1703,7 @@ func yaoDataIconsIconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1720,7 +1723,7 @@ func yaoDataIconsIconPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1740,7 +1743,7 @@ func yaoDataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1760,7 +1763,7 @@ func yaoFieldsModelTransJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1780,7 +1783,7 @@ func yaoLangsEnUsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1800,7 +1803,7 @@ func yaoLangsZhCnGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1820,7 +1823,7 @@ func yaoLangsZhCnLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1840,7 +1843,7 @@ func yaoLangsZhCnLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1860,7 +1863,7 @@ func yaoLangsZhHkGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1880,7 +1883,7 @@ func yaoLangsZhHkLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1900,7 +1903,7 @@ func yaoLangsZhHkLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1920,7 +1923,7 @@ func yaoModelsAssistantModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/assistant.mod.yao", size: 4114, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/assistant.mod.yao", size: 4114, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1940,7 +1943,7 @@ func yaoModelsAttachmentModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/attachment.mod.yao", size: 3865, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/attachment.mod.yao", size: 3865, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1960,7 +1963,7 @@ func yaoModelsAuditModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/audit.mod.yao", size: 5588, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/audit.mod.yao", size: 5588, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1980,7 +1983,7 @@ func yaoModelsChatModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/chat.mod.yao", size: 1444, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/chat.mod.yao", size: 1444, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2000,7 +2003,7 @@ func yaoModelsConfigModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/config.mod.yao", size: 1649, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/config.mod.yao", size: 1649, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2020,7 +2023,7 @@ func yaoModelsDslModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/dsl.mod.yao", size: 3806, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/dsl.mod.yao", size: 3806, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2040,7 +2043,7 @@ func yaoModelsHistoryModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/history.mod.yao", size: 2902, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/history.mod.yao", size: 2902, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2060,12 +2063,12 @@ func yaoModelsKbModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/kb.mod.yao", size: 2881, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/kb.mod.yao", size: 2881, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoModelsUserModYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\x6d\x4f\xdc\x3a\x16\xfe\xde\x5f\x71\x94\x95\x56\x54\x82\xdb\x42\x45\xb5\x42\xda\x0f\xd3\x02\xb7\x95\xa0\x45\x40\xb7\x62\xaf\xaa\xd1\x19\xfb\x24\xe3\xc5\xb1\x73\x6d\x07\x3a\xb7\xea\x7f\x5f\xd9\x4e\x42\x26\x93\x79\xc9\x5c\xe0\xde\x7e\x81\x3a\x3e\x27\xcf\xe3\x73\x7c\xde\xc8\x8f\x17\x00\x89\xc2\x9c\x92\x23\x48\xbe\x58\x32\xc9\xae\x5f\x91\x38\x21\x39\xbf\xc4\xc9\x32\x23\x0a\x27\xb4\xaa\x1f\x40\x61\x74\x2a\x24\x01\x2a\x0e\x42\xa5\xda\xe4\xe8\x9f\x83\x75\xda\x60\x46\x51\xd0\x61\x66\x93\x23\xf8\x2d\x29\x83\x2e\x48\x2a\x29\xff\x2b\x96\x6e\xea\x7f\xe6\x29\x26\xdf\xaa\xdd\x13\xe9\xc1\x78\x60\x2d\x68\x65\x8d\x03\x20\x61\x3a\xcf\x49\xb9\x8d\x51\xbc\x00\xf8\x19\x74\x33\x2d\xcb\x5c\x05\x30\x41\xd3\xab\x57\xf0\xef\x47\xfc\x57\xeb\x7c\x87\x56\x30\x38\x15\x24\xb9\x7d\xb2\xf7\xc4\xf3\x69\x9d\x90\xe0\xd5\xf9\xf8\x43\x9c\x15\x61\xed\xe3\xf1\xc3\x5a\x63\xd2\xf6\x62\xeb\x28\x2f\x8c\xc8\xd1\xcc\xe0\x96\x66\x20\x38\x29\x27\x52\xd1\x9c\x39\x78\xab\x85\xe7\xc9\x11\x38\x53\x52\x58\xfd\xb9\xdb\x0f\xc5\x1b\x6b\xdc\x87\xc7\x3a\x23\x54\xd6\x83\x29\xd8\x71\x09\xb0\x5f\xa5\x9e\xa0\x84\x52\x89\xdf\x4b\x02\xaf\xbb\x17\x9f\x24\x95\xb9\x69\x72\x04\x07\x87\x87\xcd\x62\x14\xaa\x30\x37\xab\x42\x71\xfa\xde\x21\xf2\x94\x0e\xf1\xf9\xe3\xf1\x7b\xb8\x72\xa8\x38\x1a\x0e\xef\x25\x8a\xbc\x71\x8c\x4b\x4a\xc9\x90\x62\x74\x04\x53\xe7\x0a\x7b\xf4\xea\x95\x2e\x48\x09\xfe\x8b\x22\xf7\xca\x16\xc4\x6c\xb5\xb0\xc7\xb4\x52\xc4\xdc\x1e\xd3\x86\xf6\xf6\xc7\xaf\x7f\x99\xba\x5c\xfe\xa3\xd6\x3b\xaf\xf6\xd1\x69\x2c\x18\xb9\x30\x1e\xb9\x21\x3e\xf6\x26\x09\xab\x9b\xdb\xfb\xa2\x16\x86\x2f\x0b\xc2\x2d\xd3\x87\x83\x6b\x5e\x04\x8b\x2f\x6a\x8c\xbe\xff\xfa\x75\xb3\xa8\x4a\x29\xab\x28\x32\x67\xf6\xcd\x9d\xa1\x97\x30\xe5\x28\xe4\x00\x8e\x27\xf3\xfb\xbb\xb4\x82\x3a\x40\xce\x0d\x59\xbb\xc6\x8d\x9f\x92\xd1\xf8\x8e\x8c\xbf\x4a\x3d\xd7\x75\xa2\xb5\x24\x54\xcb\xb8\xc1\x7f\x16\x24\xfb\x49\xc6\x37\xb0\x3a\x2a\xa3\x2b\x5b\x84\x39\xa5\x58\x4a\x2f\x92\xa2\xb4\xb4\x96\xf3\xc6\xec\x06\xba\xe4\x69\x29\x25\x7c\x5a\xe9\x89\xa9\xdf\xb2\xc4\x01\x0f\x96\x3b\xe0\x4a\x94\x99\xb8\x23\x35\x1e\x88\xf5\x57\x2f\xb4\x06\x6c\x50\x1c\xd0\xee\xd8\x97\xa0\x0d\xa4\xc2\x58\x57\x2f\x0c\xbb\x42\x2b\x19\xa4\x98\x0b\x39\x1b\x4a\xe1\x34\x48\xad\xe1\x60\x4b\xd3\x22\x20\xf1\x49\xf0\xe7\x82\x73\x49\x43\xf1\x9f\x07\xa9\x35\xf8\xa3\xea\x27\xc0\xac\x04\xbb\x1d\x08\xf8\xd3\x82\x48\x17\x2d\x43\x5b\xe2\x52\x07\xdf\x16\x6a\x53\xed\x0d\x48\x0e\x1d\x89\xc5\x8c\x10\x0b\xbe\x02\x33\x82\x2f\x97\x67\x3d\x68\x0f\xb7\x45\x2b\x98\x2b\xcd\x20\xb4\x5d\x89\xa5\x68\xe3\xc6\x47\x06\x7c\x4f\x13\x2b\xdc\x10\xc0\x5f\xbb\x12\x5d\xc0\xf7\x34\x89\x47\xab\x0d\x4c\xa4\xce\x1e\x19\x71\x46\x8a\xb7\x0b\xb7\xf5\xd1\xae\x23\xb0\x10\xe9\x3a\xcf\x5b\x31\x79\x2b\x80\x13\x61\xdc\x94\xe3\xa0\x43\x7d\xb7\x28\xd3\x85\x59\xa9\x9d\xc1\xce\xcd\xcd\xcd\xcd\xde\xf9\xf9\xde\xf1\x31\xc4\x6e\xa5\x3f\x34\x6c\x05\xfe\x0f\xad\xc8\x37\x41\x03\xb0\xff\x57\x2b\x82\x8f\x73\x32\x5d\xec\x4e\xe4\x04\x5e\x35\xcc\xeb\x6e\x39\xc3\x56\x68\xa5\x66\x38\x28\x36\x9c\x75\x04\xba\x40\xa3\x42\xd8\x91\xa8\xb2\x12\x33\xda\x63\xba\x54\xce\xcc\xfa\x4e\x78\x4b\xf7\x28\xa6\x5a\xd1\x58\x95\xf9\x64\x90\x17\x5f\x78\x31\xf8\xd4\x11\x5b\x08\x16\x61\x57\x57\xf9\x06\xc7\x3c\xbc\x3e\x6a\xf3\xd8\xaa\x08\x6c\x33\xda\xa0\x16\x8c\xd4\xfe\x9a\x5a\x70\xa1\xcc\xae\xd9\xfd\xcf\xea\x3e\x6a\xa3\xee\xfe\x45\x32\x33\x2b\x18\x4a\xf0\x05\xae\x50\x59\x5d\xc8\xc3\x8e\x75\xa6\x0c\x81\x9e\xb7\x7c\x6e\x89\x7f\x85\x9f\x4f\xd4\x74\x86\x96\x3a\xf6\x59\xbe\xbd\xb4\xf0\x4f\x38\xf9\xee\x48\x59\xa1\xd5\x33\xb6\x89\x6e\x4a\x83\xca\x94\xeb\xf9\xfd\xdd\x59\x8f\x50\x8e\x4c\x8a\x8c\x20\x28\xae\x9a\x43\x4f\x70\xf5\x6d\x79\xf0\xac\x04\x4b\xa7\xd7\x5a\xa6\x97\x4b\x4e\x0e\x39\x3a\xdc\xd8\x8d\xce\x17\x04\x5a\x7c\x82\x35\x78\xd5\xd6\x42\xad\x3b\x4c\xb1\x58\x69\x9d\xce\x21\x0d\x23\xa4\xbf\xd4\x8b\x46\xa5\x9b\x92\x72\xf5\x85\x7d\xee\xa1\x56\x81\xd6\xde\x6b\xc3\xc7\x53\xb4\xd3\x21\xc1\xb6\x92\x83\x0f\x73\x72\xad\xd3\xf7\x0f\x88\x43\xfd\x02\x9f\x88\x01\xe7\xc8\x6e\xd9\x93\x33\x33\x2b\xe2\x40\x6d\x74\x75\xf5\xf5\xf3\xe5\x71\xf2\x6c\xb7\xfd\x1c\x15\x66\xe4\x19\x3e\xbb\xa1\xba\x91\xbc\xb6\x10\xa9\x32\xef\xb1\xcf\x55\x67\x7b\xf7\x9a\x23\x0b\x79\x7b\x21\x41\xe8\x7a\xfe\xfc\x5b\xb5\x02\x90\x14\xa4\x78\xf0\x02\xcf\xf4\x13\xdd\xc7\xfb\x84\xf7\x28\x9c\x0f\xcc\x3d\x23\x08\x6f\x6a\x9e\x0b\x05\x58\x14\x46\xdf\xa1\x7c\x50\x86\xcc\x89\x3b\xaa\x74\xf9\xda\x4c\x46\x75\xf7\xc2\x4d\x63\xff\x8f\x8c\xf9\x38\xef\x34\xa0\x94\x90\x12\xfa\x58\x6f\x1f\x34\x70\x61\xbd\x5b\xf0\xa8\xe3\xb8\xfa\x1f\x4c\x66\xf1\x9d\xbb\xc0\x50\x29\xed\x40\xea\x4c\x28\x98\x94\x0e\xc2\xb5\x37\xe4\x50\x28\xe2\x0f\x8a\x6c\x69\x8b\x10\x20\xa2\xa6\x6b\xca\x0b\x6d\xd0\xf8\xae\x79\x82\x4a\x11\x07\x5e\x92\xc7\x51\x68\x29\xd8\x0c\xee\x84\x96\x81\x5f\x0b\x8c\xd4\xec\xb6\x56\x70\x35\xb3\x8e\x72\x88\x4b\xb5\x6c\x8a\xc2\xa3\x8b\x60\xd0\x39\xca\x0b\x67\xfd\x01\x59\x62\xa5\x11\x6e\x06\x46\xd8\xdb\x96\xc6\xe6\x46\xd2\xf7\x42\x98\x5a\x77\x73\xdf\xaa\xd5\x5d\x30\xf4\x7b\x29\x0c\x59\x30\x64\xc9\xc1\x84\x52\x6d\x28\xbe\xe7\x41\x59\x1c\x40\x95\xea\xa1\xfa\xf0\xca\xe2\x70\xc9\x9f\x51\xbd\xbe\x0b\x52\xe4\xc2\x11\x87\xb4\x54\xcc\x73\x44\x29\xdc\xac\x65\x36\xc3\xa6\xe2\x8e\x78\xe2\xe5\xcf\xb4\xca\xf6\x1c\x99\x1c\x84\x8a\xf6\x0c\xe3\x0f\x6d\x72\x32\x40\x79\x21\xf5\x8c\x68\x37\x1e\x7b\x2d\x58\xa9\xfa\xd6\x97\x30\x1a\x07\xeb\x2b\x3b\xfa\xe2\x41\x28\x5e\x56\x66\x12\xa3\x07\x55\xbd\x97\x7a\x49\xcd\x1b\x2e\x8b\x57\xd6\xc4\x2f\x6d\xc4\x1f\xcb\xc2\xd7\x26\x43\xd2\x8d\x4b\xaa\x00\x7a\x40\x5e\x9f\xdb\xde\xa5\xe0\xc5\x81\x49\xb4\xb6\xb9\xa5\x8f\x88\xff\x29\x03\xef\x79\x29\x9d\xd8\x3b\x45\xe6\xb4\xe9\x66\xcb\x9d\xf3\xd3\xd1\xcb\x67\x0f\xc5\x79\x8a\x63\x52\x55\x0c\xda\xbc\x9a\x3f\x3f\x1d\xc1\x49\x57\xac\x65\xa7\xaf\x53\x72\x53\x5f\xa8\x04\xc2\x69\x24\x3c\x9f\x31\x41\x58\x58\x78\xf3\xb2\x9a\x7e\x63\x47\xf3\x7c\x2c\x31\x43\x6e\xc8\x78\xee\x74\x04\x57\x1d\xa1\x16\x99\xeb\xcf\xd7\x17\x60\xa7\x68\x88\x43\xd4\x1d\xfe\xee\xb5\xf3\x0e\x2d\xbd\x39\x00\x52\x4c\xf3\xb9\x02\x7e\xbb\x12\x60\x74\x72\x95\xac\xe5\x26\xac\x2d\x07\x75\x92\x9e\xdb\xc7\x8e\x50\x8b\x5b\x7c\x14\xc6\x78\xc0\x85\x2d\x24\xce\x88\x83\x0f\xef\x0f\xc6\xf2\xa6\x2b\x8a\x2d\xaf\x58\x2b\x34\xde\xa0\x86\x51\x51\xc0\x89\xca\x84\xa2\xf5\x5c\x51\x66\xda\x08\x37\xcd\x37\xae\x14\x3c\xd9\xd1\xa2\x54\xd7\x96\x8d\x62\xd8\xb9\xfa\x30\xda\xdf\x85\xab\x0f\xa3\x83\xc3\xb7\xe1\xe7\xe1\xfe\xc1\xcb\xbe\x12\x22\xf1\x3b\x93\x5d\x48\xe2\xde\xea\xb7\xc3\xfd\x83\xa4\x37\x0d\xd4\xbb\xb6\xea\x1c\x52\x1c\x73\x91\x09\xd7\x53\x22\xf9\x96\x26\x9b\xeb\xf6\xdb\xdc\x8f\x3b\x52\x2d\xe2\x55\xe7\xad\x53\x88\xaa\xbd\x8d\xc3\x61\x78\xe7\x85\x9d\xb7\x3e\xeb\xfd\xeb\x65\xdf\x4d\x7c\xbb\x35\x89\x82\x8c\xd0\x3d\x71\x65\x35\x89\x8b\x8e\x54\xd7\x7a\x61\xbc\x14\x55\x7b\x12\x96\x98\x56\xdc\xc2\x4e\x69\x4b\x94\x72\x06\x6f\x5e\xf7\xd2\x78\xb3\xe5\xc0\x3f\xc5\xb1\x21\xa6\xef\xc8\xcc\x86\x36\x16\x9e\xcd\x65\x25\xbb\xb6\xb9\xa8\x5f\x12\x0d\xe2\x33\xb4\x17\x9f\x20\xbb\x2d\x8b\xa7\x6e\x36\x96\x32\xaf\x02\xf4\x18\x7b\xc2\xa9\xb7\x83\x75\x98\x17\xab\xf3\x03\x8c\xfa\xa3\xea\xd7\x29\xa9\x95\xf9\xe1\x1e\x7b\x12\xc4\xdf\x25\x93\x87\x42\x64\xe4\xeb\x45\x5f\xf6\x5e\x1b\x64\xb7\xbe\x7f\x78\xee\xf4\x2d\xd1\xba\x71\xa8\x93\x07\x9b\xe8\x0c\xad\x83\xb3\x50\xca\x2f\xb1\x50\xd8\x11\x8b\xfd\x1e\x45\x7f\xba\x26\xf4\xfe\x15\xf0\xd7\x85\xfb\x56\x5e\x16\x40\xd6\xf3\xc4\x95\x4c\x42\xdc\x58\xe7\x70\x8b\xa3\xcd\x3f\x3f\x3a\xad\x9b\x20\x36\x45\x95\x6d\x41\xb3\xe9\x97\xde\x47\x05\x2b\x6f\x54\x33\xa3\xf0\x6c\xc2\x1f\x41\xab\xd7\xae\xc9\x45\x2f\xaa\x7e\x26\xf2\xa2\x87\xef\x9e\x7a\xbe\x1d\xfa\x1e\xbe\xe2\x18\xe7\xe9\xdc\xac\xaa\xf9\x5c\x6a\xbe\xa8\x5c\x08\x24\xdf\x7a\xf2\x81\x3f\xca\xde\xf2\xc4\x3f\x01\xbd\x3a\x50\xc4\xbe\x3f\xcc\xc2\xfc\x31\xae\x8e\x6a\x0d\xfa\x76\x93\xdf\x4f\xa3\xfb\xc5\xc3\xb2\x29\xf8\x56\x84\x7a\x46\xdb\x21\xe8\xa7\x42\x3a\x0a\xf9\xa4\x63\x17\x43\x55\xc3\x9e\x1c\xc1\x8f\xf8\x89\xda\x1d\xca\x32\x5a\x2a\x6e\x69\xaa\x95\x1f\x2d\x87\xb2\xb5\xe3\x42\x62\x75\xea\xc6\x9c\x24\x39\xaa\x57\xe1\xe7\x8b\x9f\x2f\xfe\x1f\x00\x00\xff\xff\x16\x4a\x4f\x06\xd8\x27\x00\x00") +var _yaoModelsUserModYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\xff\x4f\xdc\x3a\x12\xff\x9d\xbf\x62\x94\x93\x4e\x5b\x09\x4a\xa1\xa2\x3a\x21\xdd\x0f\xdb\x02\xaf\x95\xa0\x45\x40\xaf\xe2\x9e\xaa\xd5\xac\x3d\xc9\xfa\x70\xec\x3c\xdb\x81\xee\x55\xfd\xdf\x4f\xb6\x93\x25\x9b\xcd\x7e\xc9\x3e\xe0\x5d\x7f\x59\xea\x78\xc6\x9f\x8f\x67\x3c\x9e\x99\xe4\xe7\x0e\x40\xa2\x30\xa7\xe4\x18\x92\xaf\x96\x4c\xb2\xeb\x47\x24\x8e\x49\xce\x0f\x71\xb2\xcc\x88\xc2\x09\xad\xea\x07\x50\x18\x9d\x0a\x49\x80\x8a\x83\x50\xa9\x36\x39\xfa\xe7\x60\x9d\x36\x98\x51\x14\x74\x98\xd9\xe4\x18\x7e\x4f\xca\xa0\x0b\x92\x4a\xca\xff\x89\xa5\x9b\xf8\xdf\x3c\xc5\xe4\x7b\x35\x7b\x2c\x3d\x18\x0f\xac\x01\xad\xac\x71\x00\x24\x4c\xe7\x39\x29\xb7\x31\x8a\x1d\x80\x5f\x41\x37\xd3\xb2\xcc\x55\x00\x13\x34\xed\xef\xc3\x3f\x9f\xf0\x5f\xad\xf3\x3d\x5a\xc1\xe0\x4c\x90\xe4\xf6\xd9\xd6\x89\xfb\xd3\xd8\x21\xc1\xab\xfd\xf1\x9b\x38\x2d\xc2\xd8\xa7\x93\xc7\xb1\x99\x49\x9b\x83\x8d\xad\xbc\x34\x22\x47\x33\x85\x3b\x9a\x82\xe0\xa4\x9c\x48\xc5\x6c\xcf\xc1\x5b\x2d\x3c\x4f\x8e\xc1\x99\x92\xc2\xe8\xaf\xdd\x6e\x28\xde\x58\xa3\x2e\x3c\xd6\x19\xa1\xb2\x0e\x4c\xc1\x8e\x4b\x80\xfd\x26\xf5\x18\x25\x94\x4a\xfc\x51\x12\x78\xdd\x9d\xf8\x24\xa9\xcc\x4d\x92\x63\x38\x3c\x3a\x9a\x0d\x46\xa1\x0a\xf3\x6c\x54\x28\x4e\x3f\x5a\x44\x9e\xd3\x21\xbe\x7c\x3a\xf9\x00\xd7\x0e\x15\x47\xc3\xe1\x83\x44\x91\xcf\x1c\xe3\x8a\x52\x32\xa4\x18\x1d\xc3\xc4\xb9\xc2\x1e\xef\xef\xeb\x82\x94\xe0\xaf\x15\xb9\x7d\x5b\x10\xb3\xd5\xc0\x1e\xd3\x4a\x11\x73\x7b\x4c\x1b\xda\x3b\x18\xbd\x79\x3d\x71\xb9\xfc\x5b\xad\x77\x5e\xed\x93\xd3\x58\x30\x72\x61\x3c\x72\x43\x7c\xe4\x4d\x12\x46\x37\xb7\xf7\x65\x2d\x0c\x5f\x17\x84\x1b\xa6\x0f\x1b\x37\x5b\x08\x16\x17\x9a\x19\xfd\xe0\xcd\x9b\xd9\xa0\x2a\xa5\xac\xa2\xc8\x9c\xd9\x37\x77\x86\x4e\xc2\x94\xa3\x90\x3d\x38\x9e\xce\xcf\x6f\xd3\x0a\xea\x00\x39\x37\x64\xed\x1a\x37\x7e\x4e\x46\xa3\x7b\x32\xfe\x28\x75\x1c\xd7\xb1\xd6\x92\x50\x2d\xe3\x06\xff\x5a\x90\xec\x26\x19\x57\x60\x75\x54\x46\x57\x36\x08\x73\x4a\xb1\x94\x5e\x24\x45\x69\x69\x2d\xe7\x8d\xd9\xf5\x74\xc9\xb3\x52\x4a\xf8\xbc\xd2\x13\x53\x3f\x65\x89\x03\x1e\x2e\x77\xc0\x95\x28\x33\x71\x4f\x6a\xd4\x13\xeb\x6f\x5e\x68\x0d\xd8\xa0\x38\xa0\x1d\xd8\x57\xa0\x0d\xa4\xc2\x58\x57\x0f\xf4\x3b\x42\x2b\x19\xa4\x98\x0b\x39\xed\x4b\xe1\x2c\x48\xad\xe1\x60\x4b\xd3\x20\x20\xf1\x59\xf0\xe7\x82\x73\x49\x7d\xf1\x5f\x04\xa9\x35\xf8\xa3\xea\x67\xc0\xac\x04\xbb\xeb\x09\xf8\xf3\x82\x48\x1b\x2d\x43\x5b\xe2\x52\x07\xdf\x16\xea\x2c\xdb\xeb\x71\x39\xb4\x24\x16\x6f\x84\x98\xf0\x15\x98\x11\x7c\xbd\x3a\xef\x40\x7b\xb4\x2d\x5a\xc1\x5c\x69\x7a\xa1\x6d\x4b\x2c\x45\x1b\x27\x3e\x31\xe0\x07\x1a\x5b\xe1\xfa\x00\xfe\xd6\x96\x68\x03\x7e\xa0\x71\xdc\x5a\x6d\x60\x2c\x75\xf6\xc4\x88\x33\x52\xbc\x99\xb8\xad\x8f\x76\x2d\x81\x85\x48\xd7\x7a\xde\x88\xc9\x5b\x01\x1c\x0b\xe3\x26\x1c\x7b\x6d\xea\xfb\x45\x99\x36\xcc\x4a\xed\x14\x06\xb7\xb7\xb7\xb7\x7b\x17\x17\x7b\x27\x27\x10\xab\x95\xee\xd0\xb0\x15\xf8\xff\x6a\x45\xbe\x08\xea\x81\xfd\xdf\x5a\x11\x7c\x9a\x93\x69\x63\x77\x22\x27\xf0\xaa\x61\x5e\x77\xc3\x19\xb6\x42\x2b\x35\xc3\x5e\xb1\xe1\xbc\x25\xd0\x06\x1a\x15\xc2\x40\xa2\xca\x4a\xcc\x68\x8f\xe9\x52\x39\x33\xed\xda\xe1\x2d\xdd\xa3\x98\x68\x45\x23\x55\xe6\xe3\x5e\x5e\x7c\xe9\xc5\xe0\x73\x4b\x6c\x21\x58\x84\x59\x6d\xe5\x1b\x6c\x73\xff\xfc\xa8\xc9\x63\xab\x24\xb0\xc9\x68\x83\x5c\x30\x52\xfb\x6b\x72\xc1\x85\x34\xbb\x66\xf7\x1f\xab\xbb\xa8\x0d\xdb\xf3\x17\xc9\x4c\xad\x60\x28\xc1\x27\xb8\x42\x65\x75\x22\x0f\x03\xeb\x4c\x19\x02\x3d\x6f\xf8\xdc\x12\xff\x0a\xbf\xcf\x54\x74\x86\x92\x3a\xd6\x59\xbe\xbc\xb4\xf0\x77\x38\xfd\xe1\x48\x59\xa1\xd5\x0b\x96\x89\x6e\x42\xbd\xd2\x94\x9b\xf9\xf9\xed\x5e\x8f\x50\x8e\x4c\x8a\x8c\x20\x28\xae\x8a\x43\x4f\x70\xf5\x69\x79\xf4\xac\x04\x4b\xa7\xd7\x5a\xa6\x93\x4b\x4e\x0e\x39\x3a\xdc\xd8\x8d\x2e\x16\x04\x1a\x7c\x82\x35\x78\x55\xd6\x42\xad\x3b\x74\xb1\x58\x69\x9d\xce\x21\x0d\x2d\xa4\xbf\xd4\x8b\x86\xa5\x9b\x90\x72\xf5\x81\x7d\xe9\xa6\x56\x81\xd6\x3e\x68\xc3\x47\x13\xb4\x93\x3e\xc1\xb6\x92\x83\x8f\x73\x72\x8d\xdd\xf7\x0f\x88\x43\xbd\x80\xbf\x88\x01\xe7\xc8\x6e\x59\x93\x33\x33\x2d\x62\x43\x6d\x78\x7d\xfd\xed\xcb\xd5\x49\xf2\x62\xa7\xfd\x02\x15\x66\xe4\x19\xbe\xb8\xa1\xda\x91\xbc\xb6\x10\xa9\x32\xef\xb0\xcf\x75\x6b\x7a\xfb\x98\x23\x0b\xf7\xf6\xc2\x05\xa1\xeb\xfe\xf3\xef\xd5\x08\x40\x52\x90\xe2\xc1\x0b\x3c\xd3\xcf\xf4\x10\xcf\x13\x3e\xa0\x70\x3e\x30\x77\xb4\x20\xbc\xa9\x79\x2e\x14\x60\x51\x18\x7d\x8f\xf2\x51\x19\x32\x27\xee\xa9\xd2\xe5\x73\x33\x19\xd5\x3d\x08\x37\x89\xf5\x3f\x32\xe6\xe3\xbc\xd3\x80\x52\x42\x4a\xe8\x63\xbd\x7d\xd4\xc0\x85\xf5\x6e\xc1\xa3\x8e\x93\xea\x7f\x30\x9e\xc6\x35\x77\x81\xa1\x52\xda\x81\xd4\x99\x50\x30\x2e\x1d\x84\x63\x6f\xc8\xa1\x50\xc4\x1f\x15\xd9\xd2\x16\x21\x40\x44\x4d\x37\x94\x17\xda\xa0\xf1\x55\xf3\x18\x95\x22\x0e\xbc\x24\x8f\xa3\xd0\x52\xb0\x29\xdc\x0b\x2d\x03\xbf\x06\x18\xa9\xd9\x5d\xad\xe0\x7a\x6a\x1d\xe5\x10\x87\x6a\xd9\x14\x85\x47\x17\xc1\xa0\x73\x94\x17\xce\xfa\x0d\xb2\xc4\x4a\x23\xdc\x14\x8c\xb0\x77\x0d\x8d\xb3\x13\x49\x3f\x0a\x61\x6a\xdd\xb3\xf3\x56\x8d\xee\x82\xa1\x3f\x4a\x61\xc8\x82\x21\x4b\x0e\xc6\x94\x6a\x43\x71\x9d\x47\x65\xb1\x01\x55\xaa\xc7\xec\xc3\x2b\x8b\xcd\x25\xbf\x47\xf5\xf8\x2e\x48\x91\x0b\x47\x1c\xd2\x52\x31\xcf\x11\xa5\x70\xd3\x86\xd9\x0c\x9b\x88\x7b\xe2\x89\x97\x3f\xd7\x2a\xdb\x73\x64\x72\x10\x2a\xda\x33\xb4\x3f\xb4\xc9\xc9\x00\xe5\x85\xd4\x53\xa2\xdd\xb8\xed\xb5\x60\xa5\xea\x7b\xd7\x85\x31\x73\xb0\xae\xb4\xa3\x2b\x1e\x84\xe4\x65\xe5\x4d\x62\xb4\xa4\x7e\x1d\xf2\x2b\x2d\x69\x59\x87\x3c\x1c\x19\xaf\xb2\xd1\x18\x87\x41\xe3\xea\x0f\x0d\x79\x3f\xe1\x75\xb5\x70\x57\x3a\xfc\x94\xb9\xa5\xa7\xd3\x8f\xdf\xcd\xb4\x58\xcd\xcf\x6b\x58\xc9\xcf\x4f\x78\x5d\x2d\xfc\x84\xfc\x9e\x33\x6a\x5f\x94\xd2\x89\xbd\x33\x64\x4e\x9b\xf6\x55\x3b\xb8\x38\x1b\xbe\x7a\xf1\x38\x9e\xa7\x38\x22\x55\x05\xb0\xcd\x4b\x81\x8b\xb3\x21\x9c\xb6\xc5\x1a\x16\xfc\x36\x21\x37\xf1\x59\x4e\x20\x9c\x46\xc2\xf3\xd7\x2d\x08\x0b\x0b\x2b\x2f\x2b\x08\x36\x76\x44\xcf\xc7\x12\x33\xe4\xfa\xf4\xf6\xce\x86\x70\xdd\x12\x6a\x90\xb9\xf9\x72\x73\x09\x76\x82\x86\x38\x44\xdd\xe1\xa5\xd9\xe0\x3d\x5a\x7a\x7b\x08\xa4\x98\xe6\xd4\xe9\x82\xbd\xf2\x87\xe1\xe9\x75\xb2\x96\x9b\xb0\xb6\xec\x55\x86\x7a\x6e\x9f\x5a\x42\x0d\x6e\xf1\x51\xe8\x01\x02\x17\xb6\x90\x38\x25\x0e\xfe\x6e\x78\x34\x96\x37\x5d\x51\x6c\xf9\x12\xa6\x11\x57\x6f\x51\xc3\xb0\x28\xe0\x54\x65\x42\xd1\x7a\xae\x28\x33\x6d\x84\x9b\xe4\x1b\xa7\x19\x9e\xec\x70\x51\xaa\x6d\xcb\x99\x62\x18\x5c\x7f\x1c\x1e\xec\xc2\xf5\xc7\xe1\xe1\xd1\xbb\xf0\x7b\x74\x70\xf8\xaa\x2b\xff\x48\xfc\xcc\x64\x17\x92\x38\xb7\xfa\xeb\xe8\xe0\x30\xe9\xbc\x43\xea\x59\x5b\x95\x1d\x29\x8e\xb8\xc8\x84\xeb\xc8\xaf\x7c\x3d\x94\xcd\xb5\x0a\x9a\xdc\x4f\x5a\x52\x0d\xe2\x55\xd9\xae\x53\x88\xaa\xbd\x8d\xc3\x66\x78\xe7\x85\xc1\x3b\x7f\x65\xfe\xe3\x55\xd7\x49\x7c\xb7\x35\x89\x82\x8c\xd0\x1d\x71\x65\x35\x89\xcb\x96\x54\xdb\x7a\xa1\x37\x15\x55\x7b\x12\x96\x98\x56\xdc\xc2\xa0\xb4\x25\x4a\x39\x85\xb7\x6f\x3a\x69\xbc\xdd\xf2\x6d\x41\x8a\x23\x43\x4c\xdf\x93\x99\xf6\xad\x4a\x3c\x9b\xab\x4a\x76\x6d\x65\x52\x2f\x12\x0d\xe2\xcb\x13\x2f\x3e\x46\x76\x57\x16\xcf\x5d\xa9\x2c\x65\x5e\x05\xe8\x11\x76\x84\x53\x6f\x07\xeb\x30\x2f\x56\xdf\x0f\x30\xec\x8e\xaa\xdf\x26\xa4\x56\xde\x0f\x0f\xd8\x71\x41\xfc\xbf\xdc\xe4\x21\x45\x19\xfa\x64\xd3\xe7\xcc\x37\x06\xd9\x9d\x2f\x3e\x5e\xfa\xfa\x96\x68\xdd\x28\x24\xd9\xbd\x4d\x74\x8e\xd6\xc1\x79\xa8\x03\x96\x58\x28\xcc\x88\x95\x42\x87\xa2\x3f\x9d\x33\x7a\xff\x0a\xf8\xeb\xac\x7f\x2b\x2f\x0b\x20\xeb\x66\xe4\x4a\x26\x21\x6e\xac\x73\xb8\xc5\xbe\xe8\x9f\xef\xbb\xd6\x15\x14\x9b\xa0\xca\xb6\xa0\x39\x2b\xb6\x3e\x44\x05\x2b\x4f\xd4\xac\xc1\xe1\xd9\x84\x37\xa8\xd5\xb2\x6b\xee\xa2\x9d\xaa\x18\x8a\xbc\xe8\xf1\xa3\xa9\x8e\x0f\x8f\x7e\x84\x4f\x40\x46\x79\x3a\xd7\xe8\x9a\x7d\x6b\x35\x9f\x54\x2e\x04\x92\xef\x1d\xf7\x81\xdf\xca\xce\xf4\xc4\x3f\x01\xbd\x3a\x50\xc4\xa6\x41\x68\xa4\xf9\x6d\x5c\x1d\xd5\x66\xe8\x9b\x1d\x82\x6e\x1a\xed\xcf\x25\x96\xb5\xd0\xb7\x22\xd4\xd1\x17\x0f\x41\x3f\x15\xd2\x51\xb8\x4f\x5a\x76\x31\x54\x55\xfb\xc9\x31\xfc\x8c\xdf\xb7\xdd\xa3\x2c\xa3\xa5\xe2\x94\x59\xb6\xf2\xb3\xe1\x50\xb6\x76\x5c\x48\xac\x4e\xdd\x88\x93\x24\x47\xf5\x28\xfc\xda\xf9\xb5\xf3\xbf\x00\x00\x00\xff\xff\x00\x85\x9d\xce\x15\x28\x00\x00") func yaoModelsUserModYaoBytes() ([]byte, error) { return bindataRead( @@ -2080,7 +2083,67 @@ func yaoModelsUserModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/user.mod.yao", size: 10200, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/models/user.mod.yao", size: 10261, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoModelsUser_oauth_accountModYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x59\x4d\x6f\xdb\x38\x10\xbd\xe7\x57\x0c\xb4\x87\x4d\x80\x38\x1f\x05\x72\x31\xb0\x87\xb4\xd9\x14\x01\x92\xb4\x48\x91\x2d\xb2\x8b\x85\x40\x51\x63\x89\x0d\x45\xaa\xfc\x70\xe2\x0d\xf2\xdf\x17\x24\x2d\x5b\x96\xe4\xd8\x12\xea\xf4\x52\x85\x9a\x19\xbe\x37\x7c\x43\x91\xe3\x97\x3d\x80\x48\x90\x02\xa3\x31\x44\xf7\x1a\x15\x7c\x39\xb7\x26\x87\x73\x4a\xa5\x15\x26\x3a\x74\xef\x39\x49\x90\xbf\x65\x90\xa2\xa6\x8a\x95\x86\x49\x51\x99\xfd\xae\xc1\xe4\x4c\xa5\xa3\x92\x28\x33\x9b\x3b\x91\xe0\x04\x4c\x4c\xa4\x2a\x88\xb3\x07\x6d\xa4\x22\x19\x86\x40\x86\x64\x3a\x1a\xc3\x3f\x91\xd5\xa8\xa2\x43\x88\x24\xb1\x26\x77\x0f\x5a\x52\x46\xb8\x7b\xc2\x67\x83\x4a\x84\xe7\x52\xc9\x29\x4b\x51\x45\xff\xce\xdd\x13\xee\x98\x38\x56\x35\x5e\x2e\x58\xec\x23\xc5\xa4\x06\x1b\x20\xa2\xb2\x28\x50\x98\xc1\xa0\xf7\x00\x5e\xfd\xcc\x54\x72\x5b\x08\x8f\xdd\x47\x3e\x3e\x86\x3f\x7e\xe1\xbf\x2a\xe6\x47\xa2\x19\x85\x4b\x86\x3c\xd5\x3b\x9b\x27\x64\xaf\x96\x3f\x96\xce\xf3\xe5\x52\x3c\x2b\xfd\xd8\xd5\xc5\x72\x6c\xa1\x8f\xfa\x60\x2d\xb5\x5f\x15\x2b\x88\x9a\xc1\x23\xce\x80\xa5\x28\x0c\x9b\x30\xb7\xbc\x95\x69\x19\xde\x47\x63\x30\xca\xa2\x1f\x7d\x3d\xec\x86\xe2\x97\xb2\x0b\x8f\x36\x8a\x89\xac\x03\x93\xd7\xec\x1a\x60\x77\x38\x41\x85\x82\x22\x18\x09\x05\x61\x02\x5c\x7c\x58\x15\x89\x0b\x86\x22\x33\x79\x34\x86\x0f\x67\x67\x8b\x41\x61\x39\x9f\xeb\x6d\x42\xb8\xc6\xc5\x0b\x26\x52\x7c\xde\x86\xcc\x42\xbd\xdb\xb3\xf9\xda\x72\xa9\xd1\x09\x7a\xad\xa2\x82\x9b\x06\xf6\x33\x29\x33\x8e\x87\x40\xca\xd2\xfd\x97\x31\x93\xdb\xe4\x10\xd0\xd0\xa3\x83\x0e\x86\x67\x27\xc3\x08\xee\x52\xf5\x5f\xae\x2e\x3e\xc1\x37\x43\x44\x4a\x54\x0a\x9f\x38\x61\x85\x86\x89\x92\x05\x54\xe9\xa8\x2c\x17\x0b\x3a\x86\xdc\x98\x52\x8f\x8f\x8f\x65\x89\x82\xa5\x47\x02\xcd\xb1\x2e\x91\xea\xf9\xc0\x88\x4a\x21\x90\x9a\x11\x95\x0a\x47\xa7\xf1\xc9\x51\x6e\x0a\xfe\x5b\x35\x4b\x98\xe4\xfd\x4a\x4c\xdb\xa4\x87\x0a\xbe\xd9\xe4\x07\x52\xd3\x2d\x02\x97\x2c\x1d\x0c\x6a\xd5\x06\xfb\xda\x26\x40\x1d\xad\x83\x90\xbb\xb6\xfa\x76\x26\x73\xb7\x2a\x0a\xd3\xd8\x55\x97\x1f\xed\x23\xf8\xb9\x33\xdc\xb7\x9c\x9b\xac\x17\x13\x41\x35\xd1\x46\xa6\xa7\x27\x9d\x7a\xdf\xc8\x09\x0b\xc2\x78\x0f\x1a\x7f\xae\xda\x37\x91\xfb\x70\x40\xd2\x54\xa1\xd6\x43\x97\xc7\x81\xee\xbf\x3a\x7e\xea\x78\x8a\xca\xc9\xa4\x63\x63\x4d\xa4\xe4\x48\xc4\x3a\x4e\xf0\x57\xcb\xb3\x9b\x5c\x98\x81\x56\xdf\x4f\x62\xec\x5a\xa2\x29\x4e\x88\xe5\xa6\xa5\xb8\x3e\x0b\xd4\x53\x66\x97\x96\x73\xb8\x7d\x53\x5d\x13\x67\xb2\x95\xa8\x3e\x0c\x14\x55\xc6\xa6\x28\xe2\x9e\xc8\x3f\x3b\xa7\x0d\xd0\x7d\x60\x8f\x7d\x5f\x1f\x80\x54\x30\x61\x4a\x9b\xc5\xc0\xae\x8a\x64\x42\x0a\xc6\x67\x7d\x09\x5d\x7a\xaf\x0d\x8c\xb4\x55\x35\x3a\x9c\xbc\x03\x9b\x82\xa5\x29\xc7\xbe\x6c\x6e\xbc\xd7\x06\x36\x21\xf4\xce\x19\x08\x46\x1f\x7b\xc2\xbf\x6d\xb9\x34\xb1\x53\xa2\x2d\xd9\xb2\x30\x86\x02\x2f\x95\x9c\x30\xde\xef\xb3\xd1\xf0\x68\x7f\x2b\xbc\x01\x94\x24\x43\xb8\xbf\xbb\xde\x88\xfd\x6c\x28\x76\x46\x8d\x55\xbd\xb0\x37\x3d\xd6\x62\x0f\x86\x3b\x85\xff\x84\x89\x66\xa6\x0f\xfc\xef\x4d\x8f\x26\xfc\x27\x4c\x42\xda\xa5\x82\x84\xcb\x6c\xa7\xf8\x33\x14\xfd\x4e\xd8\x9f\x1b\x0e\xad\xbd\xd4\xbf\xdf\xe2\x1b\x30\x08\x6e\xc2\x94\xc9\x53\xd2\x2b\xe1\x1f\xdb\x3e\x4d\xd0\xf3\xb0\xb3\x55\xd8\xb0\xff\xf0\xf0\xf0\x30\xba\xb9\x19\x5d\x5c\x40\xb8\xdc\x76\x5d\x09\x4e\x87\x51\xf9\x4f\x0a\x74\x77\xe6\x1e\x4c\xfe\x96\x02\xe1\x6a\xc5\xa7\xc9\xc4\xb0\x02\xc1\x85\xf6\xf7\xf1\x2d\x64\x33\x08\x3b\x97\x94\xf4\xda\x6f\xae\x1b\x0e\x4d\xd8\x21\x60\x33\xfd\x9c\x88\xcc\x92\x0c\x47\xfe\xbe\xa9\x66\x5d\xd9\x1f\x28\xa4\x32\x97\x02\x63\x61\x8b\xa4\xdf\xfd\xd2\xb9\xc1\x6d\xc3\xad\xb5\x01\x79\xab\x10\x7c\x57\x4b\x50\x27\x30\xe8\x78\x5a\xa7\xb2\xc5\x29\x35\x70\x7a\xe7\x53\xea\xfc\xc4\xdf\xa6\xf5\x43\xcb\x2e\x4e\xe7\x4d\xfb\x36\x8b\x99\x66\x94\x70\x70\x67\x6e\x26\xb2\xee\x3b\x05\xec\x6b\xa3\xac\xff\x78\xa4\x35\xcd\xad\x41\xde\x0d\x5d\x91\xa7\xad\x61\xdf\xd5\x6d\x9b\x90\xa5\x62\x19\x13\x84\x87\xde\x8b\xaf\x6a\x85\xba\x94\x42\xaf\x3d\x50\xbc\x05\x74\x47\x3d\x88\x79\xbf\x13\x6e\x88\x20\x19\x3a\x02\xef\xde\x86\x73\xa7\xdc\x98\xcb\x8c\x89\x98\x98\x76\xee\xdd\xce\xa8\x0d\x29\xca\xae\xed\xc9\x1d\x90\xaf\x9d\x2b\x9c\x77\xb7\x0d\xbc\x85\x0f\x0e\x53\x46\xc0\xe4\x4c\xc3\x6a\x3f\x69\x6d\xfa\xfb\xdf\x39\x99\x8e\x09\x35\x6c\xda\xb1\xc3\xae\xaf\xe7\x2b\x0d\xe7\x0d\xa7\x1a\xfe\xef\x39\x9a\x1c\x55\x1d\xf8\xa2\x71\xab\x41\x1b\xc6\x39\x34\xe7\x5c\x56\xf0\x06\x1a\x7b\x00\xa1\xc1\xec\x5f\xe1\xb2\xcd\xdb\xd1\x2a\x7d\x8e\x6b\xed\x66\xff\xd8\x4e\x60\xad\x5b\xbc\xec\x68\x36\xbb\xd9\x2b\x69\xb1\x82\xfd\xb4\xdd\xcc\xef\xfd\x2b\xa0\x52\x68\xa3\x08\x13\x66\x0c\x6e\x27\xab\xd8\x97\xa8\x96\x75\xef\xfe\xf0\xad\xf5\xb7\x97\x67\x95\x44\xe5\x1d\xaf\x34\xa9\xea\x1c\x96\x0c\x43\x27\xeb\x57\xe0\x57\x48\xa5\x4a\x57\xe1\x2f\x5a\x58\xbd\xf0\x63\xb3\xf7\xd2\x0d\x3c\x98\xb5\xa1\x07\x39\x74\x21\xbf\x72\x6f\xdc\xc1\x69\xde\xe2\xe0\x52\x3e\xda\x52\x43\x32\x5b\x16\x4d\x1f\xa0\x4d\x7d\xd6\x91\xd6\x4a\xa6\xb9\x13\x0c\x83\x1c\xa2\x2d\x64\xf2\xd3\xa2\x62\xa8\xa3\x86\xe0\x15\x72\xff\x2d\x74\x20\x5e\xc2\x4f\x1d\x53\xc2\x6d\x28\x81\x60\x22\xab\xdf\x7d\x5e\x6a\x7b\x90\xae\x8a\x0a\x22\x2d\x27\x26\x4e\x91\xa3\xc1\x6a\x14\x5e\xf7\x5e\xf7\xfe\x0f\x00\x00\xff\xff\x19\x77\x85\x26\x7b\x1a\x00\x00") + +func yaoModelsUser_oauth_accountModYaoBytes() ([]byte, error) { + return bindataRead( + _yaoModelsUser_oauth_accountModYao, + "yao/models/user_oauth_account.mod.yao", + ) +} + +func yaoModelsUser_oauth_accountModYao() (*asset, error) { + bytes, err := yaoModelsUser_oauth_accountModYaoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/models/user_oauth_account.mod.yao", size: 6779, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoModelsUser_roleModYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\xcd\x6e\x1b\x37\x10\xbe\xfb\x29\x06\x7b\x72\x01\xa3\x71\x0f\x45\x01\x03\x39\xb8\x71\x8b\xba\xa8\x13\xc3\x81\xd1\x43\x11\x08\x63\x72\xa4\x65\xc2\x25\x15\x72\x56\x91\x10\xf8\xdd\x0b\x92\x5a\x89\xbb\xa2\x2c\x7b\x5b\xcb\x17\x43\xe4\x0e\xf9\x7d\xf3\x3f\xfc\x7e\x02\x50\x19\x6c\xa8\xba\x80\xea\xde\x93\x83\x3b\xab\xa9\x3a\x0b\xcb\x1a\x1f\x48\x17\xd6\x25\x79\xe1\xd4\x9c\x95\x35\x9b\x5d\x67\x35\x01\x1a\x09\x73\x72\x8d\xf2\x5e\x59\x03\x0d\x1a\x9c\x51\x43\x86\x93\x1c\xe3\xcc\x57\x17\xf0\x4f\xd5\x7a\x72\xd5\x19\x54\x2e\x1e\x09\xd5\x56\x26\xfc\xc2\x96\xeb\xea\xd3\x5a\xe2\x41\x07\x64\x01\x65\x86\x33\xc8\x4f\x5c\x87\x07\xa0\x12\xb6\x89\xd7\x3c\x13\xcd\x09\xc0\x63\x3c\x5f\x58\xdd\x36\x26\x82\x8a\x07\xbd\x79\x03\x6f\xff\xc7\xbf\xee\xcc\x5f\xd1\x2b\x01\xbf\x2b\xd2\xd2\xbf\xda\x3d\x49\x47\x99\x96\x94\x5c\xab\x27\x28\x72\x35\x8f\x6b\xd7\x57\xdb\xb5\x8d\x79\xf3\xc5\x4c\x93\xb7\x4e\x35\xe8\x56\xf0\x85\x56\xa0\x24\x19\x56\x53\x15\xec\xd6\x7d\x3a\x4f\xfb\xd5\x05\xb0\x6b\x29\xae\x3e\x9e\x95\xa1\x04\x7b\x4c\x4a\x78\x3c\x3b\x65\x66\x05\x4c\xc1\xdb\x60\x0f\xb0\x7b\xa3\xbe\xb6\x94\x8c\xbc\x05\x06\xa7\x28\x1b\x65\xce\x20\x78\xc7\x19\x34\x56\x92\x43\xb6\xee\x0c\x88\xc5\x8f\x3f\x64\x77\x90\x99\x71\x5d\x5d\xc0\xcf\xe7\x9b\xb5\x36\x1e\xb9\xa6\xb2\x59\x55\x46\xd2\x72\xb8\x68\x5a\xad\xd7\x6e\x39\x45\xed\x9f\x26\x1e\xff\x3f\x9f\xf5\xfb\xde\xe7\x19\xe5\x2b\xe5\xe7\x1a\x57\x10\xce\x03\x3b\x05\xae\x13\xff\x02\xab\x9f\xce\xcf\xc7\x61\xcd\xc3\x7a\x07\x32\xd3\x92\x0b\x80\xaf\x4a\x32\x39\x6e\x62\x54\x9a\x24\x64\x87\xe7\xf8\x63\x90\x2a\xf6\x30\x6f\xdd\xdc\xfa\x8c\x4f\x06\x3d\x77\xaf\xd7\x0c\xd3\xdb\x6d\xb2\x38\x76\xac\x6e\xf3\x94\xdf\xd5\xfd\x67\x9f\x6b\x77\xa3\xfb\xdb\x92\x4c\xa6\xfb\x3f\x3f\x7e\x78\x0f\xf6\xe1\x33\x09\x06\x61\x0d\xa3\x32\xca\xcc\x00\xb5\xce\xd2\xa2\x8f\x16\x40\x21\xc8\x7b\x70\x6a\x56\xb3\x3f\x68\x83\x72\x88\x53\xf0\x6a\xc1\x24\x27\x63\xc8\xdc\x6d\xc4\xe1\x59\xbc\xd0\x39\x5c\x05\x4f\xa2\xe5\x5c\x2b\xa1\x58\xaf\x40\x92\x51\x94\xe7\xfc\xc3\x54\x5e\xd3\x9d\xfe\x50\xe4\xd0\x89\x7a\x75\x7c\x6f\x42\x47\x86\x27\x2f\xcf\xba\xb7\x51\x10\x9e\x4a\xbe\xeb\x4f\x62\xf0\x4e\xad\x03\x65\x6a\x72\x8a\xd1\x08\x82\x53\x1b\x03\x1c\xf5\x81\x6c\x3b\x30\x46\x31\xdf\x3e\xe9\x6c\x9a\x16\xa4\x77\x79\x29\xc3\x34\xcb\x4b\xd4\x86\xd8\x5f\x7d\x81\x8c\x4f\xe4\x5a\x6f\x4c\x15\x4f\x86\xd3\x5a\xcd\x6a\x72\xf0\x16\x1a\xeb\x28\xf7\xa8\x8c\x99\xa4\x29\xb6\x3a\x1c\x32\x8e\xd9\x6b\xfa\xde\xcd\xa6\xd9\x39\x7e\xdb\xe1\x27\x28\x58\x2d\x0a\x75\xef\xc1\x5a\x4d\x58\x0a\xff\x6b\x0f\x97\x03\xa1\xcc\x46\x7f\xd7\xc4\xc1\x1c\x5c\x2b\xbf\x2e\xfb\x1e\x44\xeb\x82\x27\xea\x15\x0c\xaf\xdb\x1a\x66\x9c\x77\x29\x3f\xe9\x8e\x78\x19\x85\xab\xa1\xd4\x3e\x0e\xca\xc7\x0a\xb8\xbe\x65\x1b\x4c\x86\xbe\xc5\xf6\xc5\x97\xc8\xc4\x0a\x3e\x8a\x8d\x5f\x79\xa6\xe6\x85\x64\x3e\x0e\x84\x9e\xe0\x82\x90\x6e\x48\x44\x4e\x05\x1a\x63\x19\x1e\x02\x41\x4d\x4c\xb2\x18\x34\x23\xe9\x78\xeb\x78\x62\x9d\xcc\xc3\xfc\x70\xfc\x7f\xb4\x8e\xe1\x43\x5f\xaa\xd0\x5e\xc5\x73\xa3\x25\xc2\x35\xbd\x1c\xf9\x8c\x68\x3f\x46\x60\x77\x48\x8f\x1d\xd5\xc2\x6a\x5b\xd0\xf8\xde\x4a\xf2\xae\xff\x7d\xa6\xeb\xb8\x03\xc2\xca\xe4\xf2\xf7\xd7\x20\xd7\x9c\x4e\x6b\x5a\x86\xb5\x06\xb9\x54\x40\x7e\x19\xd5\x97\x28\x51\x6a\x67\xf7\xe2\xbe\x16\x7b\x3a\xd9\xb0\x91\x4f\x1b\x7d\xec\x2f\xaa\x77\xc7\xf0\x93\xcb\xd4\xd1\xbd\xb3\x86\x9d\xd5\x47\x77\x97\x06\x97\x93\x41\x22\x3b\x1c\xa4\x37\xb8\x84\xfb\xbe\x50\x66\x80\x1b\x5c\xaa\xa6\x6d\xc0\xb4\xcd\x03\xb9\xd0\xfa\xc5\x0b\x80\x6b\x64\x10\x68\xa0\xc6\x05\x65\x25\xe2\xf4\x1c\xde\x42\x6b\xb4\x6a\xd4\xbe\x14\x74\xd0\x42\x45\x6e\x8e\xbe\xb6\xca\x91\x9f\xe0\x7c\xee\xec\x02\x0b\x8d\xc8\xfe\xc4\x7a\xb7\x16\x86\xcb\x1d\xe1\x42\x82\x45\xef\xd5\x2c\x76\xed\x5b\x5e\xdd\xf5\x10\xc7\x5d\xd8\x05\x31\x48\xb1\x4f\x72\xc1\x96\xed\xc4\xd1\xc2\x7e\xa1\x89\xc4\xd5\x8b\xcc\x75\xd9\xb2\x85\xbb\x28\x0b\x57\x3d\xd9\x3c\xb3\xe2\xca\x03\x4e\x99\x1c\x7c\xab\x95\xa8\xfb\x35\x3c\x5c\xdf\x20\x2b\x81\x5a\xaf\x20\xe1\x90\xc9\x72\x86\x16\xe4\xc6\x59\xed\x35\xe3\xea\xb7\x25\x93\x91\x24\x43\x64\x4d\xd5\xac\x75\x18\x3a\xde\x23\x06\x16\x31\x4a\x64\x7c\xf6\x60\x75\xb3\x23\x90\x59\xe7\x52\x4a\x95\x3a\xf6\x64\x12\x91\x93\x8a\x93\xa1\x27\x0e\x75\x70\xe4\x50\x28\xac\x49\x17\x3c\x7f\x10\x7c\x57\x10\xe9\x55\x8f\x6e\x3b\x05\x7e\xd3\xfa\xd8\x69\x34\xc4\xc0\x76\x1d\x30\x6f\x1a\x54\x71\xde\xdd\x7a\xdb\x01\xfc\x27\x00\xe9\xc5\x31\xf6\x21\xb4\x7d\x11\x2c\xbc\xaa\xa5\xcc\x96\xa6\xab\x61\xeb\x99\x3d\x28\xe6\x8d\x70\xaf\x6d\xf9\x54\x88\xb1\xd0\xfc\x14\xab\x4e\xd8\x89\xb5\x26\x1d\x15\xb9\x78\xf8\xa6\xb8\x4e\xcd\x4a\xa8\x62\x4f\xd7\xbf\x1e\xde\xcd\xa0\x53\x86\x3c\x1c\x1c\xbb\x49\x6b\x1c\x64\xd7\x1f\xad\xbe\xb6\xe4\x14\xf9\x97\xc0\x1d\x36\xae\x03\xf5\x76\xdb\xf9\xd0\x31\x0e\x6a\xde\xbf\x8e\xc0\xb9\x33\x2e\x0c\x80\x6e\xf6\xff\x3b\xd2\xa9\x32\x32\x14\x84\x6e\x76\xc8\xfc\xa2\x1a\xf8\xb2\x23\x8d\x29\x92\x2e\xe0\x7b\x7a\xf0\x5e\xa0\x6e\x93\x77\xa7\x4f\x6c\xf7\x8a\xff\x1d\x2a\x56\x0d\x79\xc6\x66\xee\xbb\xc9\x29\xb8\xed\x94\x27\xa9\x8b\xef\x56\xe1\xf1\xe4\xf1\xe4\xdf\x00\x00\x00\xff\xff\x5f\x08\xce\x5b\x37\x18\x00\x00") + +func yaoModelsUser_roleModYaoBytes() ([]byte, error) { + return bindataRead( + _yaoModelsUser_roleModYao, + "yao/models/user_role.mod.yao", + ) +} + +func yaoModelsUser_roleModYao() (*asset, error) { + bytes, err := yaoModelsUser_roleModYaoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/models/user_role.mod.yao", size: 6199, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoModelsUser_typeModYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x58\x4d\x6f\xdb\x38\x13\xbe\xe7\x57\x0c\x74\x6a\x01\xe3\x6d\xde\x43\x2f\x06\x7a\xc8\x6e\x10\x20\x8b\x4d\x1b\x6c\x1a\xec\x61\x51\x08\x8c\x34\x92\x67\x97\x22\x15\x72\x98\xd8\x08\xf2\xdf\x17\x24\x25\x9b\x96\x69\x6f\x62\xb4\x41\x7d\x31\x30\xe4\xcc\x3c\xcf\x70\x3e\x48\x3d\x9d\x00\x14\x4a\x74\x58\xcc\xa1\xb8\xb5\x68\xe0\xeb\xaa\xc7\x62\xe6\xc5\x52\xdc\xa1\xcc\xc8\x6b\xb4\x95\xa1\x9e\x49\xab\xf5\x2a\xaf\x7a\x84\x4a\x0a\x6b\xa9\xa1\x4a\xf8\x35\x10\xaa\x86\x4a\xab\x86\x5a\x67\x82\x24\xaa\xb3\x68\x6d\x31\x87\xbf\x0a\x67\xd1\x14\x33\x28\x38\x58\x86\x62\x5b\x3d\x48\x82\x76\xf1\x6d\xd0\xbb\x93\x1e\xa6\x87\x9c\x80\xf6\x56\x4a\x1e\xc1\x81\x57\xea\x3a\x54\xfc\x4a\x68\x27\x00\xcf\xc1\x4d\xa5\xa5\xeb\x54\x40\x18\xec\x7d\xf8\x00\x9f\xbe\xe3\x6f\xb4\xf9\x8b\xb0\x54\xc1\x05\xa1\xac\xed\x0f\xf3\x13\x43\x95\x04\x8b\xea\x21\x4a\x30\x84\x7d\x0e\xc5\xe5\xf9\x46\xb6\x3e\xf2\x54\x98\x04\xf4\xda\x50\x27\xcc\x0a\xfe\xc1\x15\x50\x8d\x8a\xa9\x21\x7f\x88\xe3\xd6\x3e\xae\x17\x73\x60\xe3\x30\x48\x9f\x67\x79\x28\xde\x7d\x99\xc3\x63\xd9\x90\x6a\x33\x98\x7c\x06\xc2\x1e\x60\xb7\x8a\xee\x1d\xc6\xb3\xde\x00\x83\x77\xa2\xee\x48\xcd\xa0\x72\x96\x75\x87\x66\x06\xad\x43\xcb\x33\x40\xae\xfe\xf7\x3e\xf1\x81\xaa\xe5\x45\x31\x87\x8f\xa7\x6b\x99\x0b\x26\x07\x2a\x6b\x29\xa9\x1a\x97\x53\xa1\x72\x52\x0e\xd9\xd9\x08\x69\x0f\x13\x0f\xff\x2f\x67\xfd\x79\x6b\x7b\x42\xf9\x9c\x6c\x2f\xc5\x0a\xbc\x3d\xd0\x0d\xf0\x02\xc1\x8d\x09\x9f\xa1\xf6\xff\xd3\xd3\xe3\x00\xa7\xf5\xbe\x83\x9b\x71\xc9\x19\xd4\xe7\x39\x9d\x14\x3c\xb2\x20\x89\x35\x24\xc6\x0f\x90\x48\xf0\xa6\x89\xf5\x23\x0b\xf4\xd7\xb4\x3d\xbc\x79\xa1\xd6\xd8\x08\x27\xb9\x34\x5a\xbe\xb2\x4a\xce\xa3\x26\xfc\xa1\xe5\xde\x6a\x19\xf7\x78\xeb\xe0\x1b\x63\xab\xb0\x06\xd6\x21\xf4\x36\x9e\x03\xd9\x7d\x89\xf4\x31\x9b\x47\x7b\xab\xe4\x60\x6e\xd9\x6a\x81\x9d\xd8\xa5\xf7\xb7\x4d\x13\x67\x4d\xee\x66\xb2\x3d\xe1\xf4\xdb\xcd\x97\xcf\x10\xcd\x41\x8d\x0d\x29\x52\x2d\x74\xc8\xa2\x16\x2c\xc0\xb2\x71\x15\x3b\x83\xa1\xf5\xdf\x5e\x66\x06\xd3\xa1\x44\xcb\x62\x1f\x8d\xbf\x18\xfd\xd5\x8e\x42\x82\xff\xac\xae\xc9\x63\x11\x72\x1b\x5b\x00\x6c\x91\x99\x54\x6b\xa1\xd1\x26\x9e\xcd\xcf\x51\x24\x57\x42\x89\x16\x3d\x85\xb7\x1f\x65\xb6\x14\x15\xd3\x43\xa6\x97\xde\x69\x2d\x51\xe4\x4e\xe0\xd2\xc2\xd9\x44\x29\x39\x82\x3f\x17\xc8\x0b\x9c\x06\x18\xc8\x42\xe5\x8c\x41\xc5\x72\x05\x53\x9f\x43\xa1\x1e\x5d\x00\x64\xcb\xd1\xc4\xeb\x78\x9c\x4f\xb5\xf6\x11\xf1\x85\xbc\x40\x18\xbc\x24\xbc\x7c\x2e\x29\x7c\x04\x83\x2d\x59\x8e\xd9\x66\x73\xcc\xc2\x88\x38\xa2\xb6\xb5\xe1\x52\x9b\x3a\xbd\x20\x8c\xd4\x48\x31\xb6\xe9\xc2\xa6\xc4\xb5\x61\xf8\xb2\xad\x95\x99\x7a\xc1\x6e\xa0\xe0\xdd\x6c\xb5\xc2\x0d\xf0\xbd\x8d\xea\x2d\x6a\xe3\xac\xaa\xd0\x5a\x3f\x47\xd8\x68\xf9\xe6\xf5\xd1\x89\x65\x69\xd1\xda\xed\x43\xfd\xef\xf8\x5f\x89\x25\xdc\xec\xe8\x25\x27\x70\x25\x96\xd4\xb9\xce\x77\xa9\xa1\x2c\x60\xf4\x03\x42\x4a\xfd\x88\xf5\x31\x6d\x2a\x9f\x42\xd1\x70\xc9\xd4\xa1\x76\x99\x12\x39\x90\x47\x51\x15\xbe\x4e\x55\x13\x2a\xe3\x9e\xc1\x3c\x90\x82\x8e\x94\x63\xb4\xf0\xee\x14\x3e\x81\xd2\xe3\xd2\xfb\xa3\xd2\x2b\xcb\xa9\x17\xd6\x3e\x6a\x53\x97\xbd\x96\x54\xad\x5e\x3c\x3d\xae\x07\x3d\xb8\x9e\xe8\xa5\xf7\xf3\x71\x8f\xc1\x7b\x47\x26\x74\x66\x1b\x26\x48\x70\x46\xf8\xd3\x4d\x90\x0b\x14\x61\x2c\x5f\x48\xd1\xbe\x61\x75\x34\xd1\x6d\xa6\x32\xf6\x44\xff\x62\x47\x21\x09\xfb\x48\xa2\xf1\x24\xe2\xe3\x52\xf4\xe2\x8e\x24\xb1\x0f\xb9\x78\x10\x14\xe2\xea\xaf\x58\xdf\xa3\x2c\x24\x75\xc4\x2f\xc7\xfe\xfb\x64\xfb\xd6\x0b\x59\xb4\x08\xd1\x5e\x00\x7e\xef\x34\x8b\x23\xb2\xe4\x04\x20\x3e\xd3\xc3\x78\xc0\xcd\xfb\x39\xf3\x06\x5d\x96\xeb\x47\xfb\xce\x0c\x4f\x9e\xdf\xe9\x88\xdf\x9a\x26\xdf\x32\x6d\xc0\xcf\xa4\x1c\xc1\x4b\xbf\x12\xe8\x44\x53\x1b\x42\x16\x1e\x89\x17\x71\x90\xf8\xf9\x71\x78\x4c\x6f\x81\xde\x99\xd8\x13\xd4\xeb\xf5\xf4\x9a\x72\x1c\xea\x86\x54\xed\x6f\xb2\xe3\xf8\x9e\xb2\x78\x0d\x6c\x7f\xdd\xcf\x63\x9e\x3e\x37\x8e\xc3\x1a\x9e\x13\x06\x65\xbc\x49\x2c\xa8\xb7\xc5\x24\x39\xd6\x8b\xc5\x1c\x9e\xe2\xf7\x96\x07\x21\x5d\x4c\x97\xb8\x45\x8f\x1f\x96\x9e\xa0\xf0\xcd\xd7\xb2\xe8\x7a\x3b\xde\xaf\x7c\x1e\x34\x5c\xd6\x28\x91\x71\x94\xc2\xf3\xc9\xf3\xc9\xbf\x01\x00\x00\xff\xff\xde\x3f\xdd\xad\xca\x12\x00\x00") + +func yaoModelsUser_typeModYaoBytes() ([]byte, error) { + return bindataRead( + _yaoModelsUser_typeModYao, + "yao/models/user_type.mod.yao", + ) +} + +func yaoModelsUser_typeModYao() (*asset, error) { + bytes, err := yaoModelsUser_typeModYaoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/models/user_type.mod.yao", size: 4810, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2100,7 +2163,7 @@ func yaoReleaseAppYaz() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2120,7 +2183,7 @@ func yaoStoresAgentCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/agent/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/agent/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2140,7 +2203,7 @@ func yaoStoresAgentMemoryBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/agent/memory.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/agent/memory.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2160,7 +2223,7 @@ func yaoStoresCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/cache.lru.yao", size: 285, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/cache.lru.yao", size: 285, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2180,7 +2243,7 @@ func yaoStoresKbCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/kb/cache.lru.yao", size: 304, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/kb/cache.lru.yao", size: 304, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2200,7 +2263,7 @@ func yaoStoresKbStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/kb/store.badger.yao", size: 349, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/kb/store.badger.yao", size: 349, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2220,7 +2283,7 @@ func yaoStoresOauthCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2240,7 +2303,7 @@ func yaoStoresOauthClientBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/client.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/client.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2260,7 +2323,7 @@ func yaoStoresOauthStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/store.badger.yao", size: 376, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/store.badger.yao", size: 376, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2280,7 +2343,7 @@ func yaoStoresStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/store.badger.yao", size: 341, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/stores/store.badger.yao", size: 341, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2300,7 +2363,7 @@ func yaoUploadersAttachmentLocalYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/uploaders/attachment.local.yao", size: 1131, mode: os.FileMode(420), modTime: time.Unix(1754100796, 0)} + info := bindataFileInfo{name: "yao/uploaders/attachment.local.yao", size: 1131, mode: os.FileMode(420), modTime: time.Unix(1754103221, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2448,6 +2511,9 @@ var _bindata = map[string]func() (*asset, error){ "yao/models/history.mod.yao": yaoModelsHistoryModYao, "yao/models/kb.mod.yao": yaoModelsKbModYao, "yao/models/user.mod.yao": yaoModelsUserModYao, + "yao/models/user_oauth_account.mod.yao": yaoModelsUser_oauth_accountModYao, + "yao/models/user_role.mod.yao": yaoModelsUser_roleModYao, + "yao/models/user_type.mod.yao": yaoModelsUser_typeModYao, "yao/release/app.yaz": yaoReleaseAppYaz, "yao/stores/agent/cache.lru.yao": yaoStoresAgentCacheLruYao, "yao/stores/agent/memory.badger.yao": yaoStoresAgentMemoryBadgerYao, @@ -2682,15 +2748,18 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, }}, "models": {nil, map[string]*bintree{ - "assistant.mod.yao": {yaoModelsAssistantModYao, map[string]*bintree{}}, - "attachment.mod.yao": {yaoModelsAttachmentModYao, map[string]*bintree{}}, - "audit.mod.yao": {yaoModelsAuditModYao, map[string]*bintree{}}, - "chat.mod.yao": {yaoModelsChatModYao, map[string]*bintree{}}, - "config.mod.yao": {yaoModelsConfigModYao, map[string]*bintree{}}, - "dsl.mod.yao": {yaoModelsDslModYao, map[string]*bintree{}}, - "history.mod.yao": {yaoModelsHistoryModYao, map[string]*bintree{}}, - "kb.mod.yao": {yaoModelsKbModYao, map[string]*bintree{}}, - "user.mod.yao": {yaoModelsUserModYao, map[string]*bintree{}}, + "assistant.mod.yao": {yaoModelsAssistantModYao, map[string]*bintree{}}, + "attachment.mod.yao": {yaoModelsAttachmentModYao, map[string]*bintree{}}, + "audit.mod.yao": {yaoModelsAuditModYao, map[string]*bintree{}}, + "chat.mod.yao": {yaoModelsChatModYao, map[string]*bintree{}}, + "config.mod.yao": {yaoModelsConfigModYao, map[string]*bintree{}}, + "dsl.mod.yao": {yaoModelsDslModYao, map[string]*bintree{}}, + "history.mod.yao": {yaoModelsHistoryModYao, map[string]*bintree{}}, + "kb.mod.yao": {yaoModelsKbModYao, map[string]*bintree{}}, + "user.mod.yao": {yaoModelsUserModYao, map[string]*bintree{}}, + "user_oauth_account.mod.yao": {yaoModelsUser_oauth_accountModYao, map[string]*bintree{}}, + "user_role.mod.yao": {yaoModelsUser_roleModYao, map[string]*bintree{}}, + "user_type.mod.yao": {yaoModelsUser_typeModYao, map[string]*bintree{}}, }}, "release": {nil, map[string]*bintree{ "app.yaz": {yaoReleaseAppYaz, map[string]*bintree{}}, diff --git a/model/model.go b/model/model.go index fd0d9aa5..36166640 100644 --- a/model/model.go +++ b/model/model.go @@ -20,15 +20,18 @@ import ( // SystemModels system models var systemModels = map[string]string{ - "__yao.assistant": "yao/models/assistant.mod.yao", - "__yao.attachment": "yao/models/attachment.mod.yao", - "__yao.audit": "yao/models/audit.mod.yao", - "__yao.chat": "yao/models/chat.mod.yao", - "__yao.config": "yao/models/config.mod.yao", - "__yao.dsl": "yao/models/dsl.mod.yao", - "__yao.history": "yao/models/history.mod.yao", - "__yao.kb": "yao/models/kb.mod.yao", - "__yao.user": "yao/models/user.mod.yao", + "__yao.assistant": "yao/models/assistant.mod.yao", + "__yao.attachment": "yao/models/attachment.mod.yao", + "__yao.audit": "yao/models/audit.mod.yao", + "__yao.chat": "yao/models/chat.mod.yao", + "__yao.config": "yao/models/config.mod.yao", + "__yao.dsl": "yao/models/dsl.mod.yao", + "__yao.history": "yao/models/history.mod.yao", + "__yao.kb": "yao/models/kb.mod.yao", + "__yao.user": "yao/models/user.mod.yao", + "__yao.user_role": "yao/models/user_role.mod.yao", + "__yao.user_type": "yao/models/user_type.mod.yao", + "__yao.user_oauth_account": "yao/models/user_oauth_account.mod.yao", } // Load load models diff --git a/test/utils.go b/test/utils.go index 44f71397..e20c5999 100644 --- a/test/utils.go +++ b/test/utils.go @@ -36,15 +36,18 @@ var testServer *http.Server = nil // SystemModels system models for testing var testSystemModels = map[string]string{ - "__yao.assistant": "yao/models/assistant.mod.yao", - "__yao.attachment": "yao/models/attachment.mod.yao", - "__yao.audit": "yao/models/audit.mod.yao", - "__yao.chat": "yao/models/chat.mod.yao", - "__yao.config": "yao/models/config.mod.yao", - "__yao.dsl": "yao/models/dsl.mod.yao", - "__yao.history": "yao/models/history.mod.yao", - "__yao.kb": "yao/models/kb.mod.yao", - "__yao.user": "yao/models/user.mod.yao", + "__yao.assistant": "yao/models/assistant.mod.yao", + "__yao.attachment": "yao/models/attachment.mod.yao", + "__yao.audit": "yao/models/audit.mod.yao", + "__yao.chat": "yao/models/chat.mod.yao", + "__yao.config": "yao/models/config.mod.yao", + "__yao.dsl": "yao/models/dsl.mod.yao", + "__yao.history": "yao/models/history.mod.yao", + "__yao.kb": "yao/models/kb.mod.yao", + "__yao.user": "yao/models/user.mod.yao", + "__yao.user_role": "yao/models/user_role.mod.yao", + "__yao.user_type": "yao/models/user_type.mod.yao", + "__yao.user_oauth_account": "yao/models/user_oauth_account.mod.yao", } var testSystemStores = map[string]string{ diff --git a/yao/models/user.mod.yao b/yao/models/user.mod.yao index fe6ac750..3b9073fe 100644 --- a/yao/models/user.mod.yao +++ b/yao/models/user.mod.yao @@ -239,20 +239,20 @@ "nullable": false }, { - "name": "role", + "name": "role_id", "type": "string", - "label": "Role", - "comment": "User role for authorization", - "length": 100, + "label": "Role ID", + "comment": "User role identifier (references user_role.role_id)", + "length": 50, "nullable": true, "index": true }, { - "name": "type", + "name": "type_id", "type": "string", - "label": "Type", - "comment": "User type classification", - "length": 100, + "label": "Type ID", + "comment": "User type identifier (references user_type.type_id)", + "length": 50, "nullable": true, "index": true }, diff --git a/yao/models/user_oauth_account.mod.yao b/yao/models/user_oauth_account.mod.yao new file mode 100644 index 00000000..27633c06 --- /dev/null +++ b/yao/models/user_oauth_account.mod.yao @@ -0,0 +1,255 @@ +{ + "name": "User OAuth Account", + "label": "User OAuth Account", + "description": "User's third-party OAuth account information storage", + "tags": ["user", "oauth", "social", "external", "provider"], + "table": { + "name": "user_oauth_account", + "comment": "User's third-party OAuth account information storage" + }, + "columns": [ + // ============================================================================ + // Basic Fields + // ============================================================================ + { + "name": "id", + "type": "ID", + "label": "ID", + "comment": "Primary key identifier", + "primary": true + }, + { + "name": "user_id", + "type": "string", + "label": "User ID", + "comment": "Reference to main user account", + "length": 255, + "nullable": false, + "index": true + }, + { + "name": "provider", + "type": "string", + "label": "Provider", + "comment": "OAuth provider name (google, apple, github, etc.)", + "length": 50, + "nullable": false, + "index": true + }, + + // ============================================================================ + // OIDC Standard Claims from Provider + // Reference: https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + // ============================================================================ + { + "name": "sub", + "type": "string", + "label": "Subject", + "comment": "OIDC subject identifier (sub claim) from provider", + "length": 255, + "nullable": false, + "index": true + }, + { + "name": "preferred_username", + "type": "string", + "label": "Preferred Username", + "comment": "OIDC preferred username from provider", + "length": 100, + "nullable": true + }, + { + "name": "email", + "type": "string", + "label": "Email", + "comment": "OIDC email address from provider", + "length": 255, + "nullable": true, + "index": true + }, + { + "name": "email_verified", + "type": "boolean", + "label": "Email Verified", + "comment": "OIDC email verification status from provider", + "default": false, + "nullable": true + }, + { + "name": "name", + "type": "string", + "label": "Full Name", + "comment": "OIDC full name from provider", + "length": 200, + "nullable": true + }, + { + "name": "given_name", + "type": "string", + "label": "Given Name", + "comment": "OIDC given name(s) or first name(s) from provider", + "length": 100, + "nullable": true + }, + { + "name": "family_name", + "type": "string", + "label": "Family Name", + "comment": "OIDC surname(s) or last name(s) from provider", + "length": 100, + "nullable": true + }, + { + "name": "middle_name", + "type": "string", + "label": "Middle Name", + "comment": "OIDC middle name(s) from provider", + "length": 100, + "nullable": true + }, + { + "name": "nickname", + "type": "string", + "label": "Nickname", + "comment": "OIDC casual name from provider", + "length": 100, + "nullable": true + }, + { + "name": "profile", + "type": "string", + "label": "Profile", + "comment": "OIDC profile page URL from provider", + "length": 500, + "nullable": true + }, + { + "name": "picture", + "type": "string", + "label": "Picture", + "comment": "OIDC profile picture URL from provider", + "length": 500, + "nullable": true + }, + { + "name": "website", + "type": "string", + "label": "Website", + "comment": "OIDC web page or blog URL from provider", + "length": 500, + "nullable": true + }, + { + "name": "gender", + "type": "string", + "label": "Gender", + "comment": "OIDC gender from provider", + "length": 20, + "nullable": true + }, + { + "name": "birthdate", + "type": "string", + "label": "Birthdate", + "comment": "OIDC birthday from provider (YYYY-MM-DD format)", + "length": 10, + "nullable": true + }, + { + "name": "zoneinfo", + "type": "string", + "label": "Zone Info", + "comment": "OIDC time zone info from provider", + "length": 50, + "nullable": true + }, + { + "name": "locale", + "type": "string", + "label": "Locale", + "comment": "OIDC locale from provider (language-country)", + "length": 20, + "nullable": true + }, + { + "name": "phone_number", + "type": "string", + "label": "Phone Number", + "comment": "OIDC phone number from provider", + "length": 50, + "nullable": true + }, + { + "name": "phone_number_verified", + "type": "boolean", + "label": "Phone Number Verified", + "comment": "OIDC phone verification status from provider", + "default": false, + "nullable": true + }, + { + "name": "address", + "type": "json", + "label": "Address", + "comment": "OIDC physical mailing address from provider (structured)", + "nullable": true + }, + + { + "name": "raw", + "type": "json", + "label": "Raw", + "comment": "OIDC original user info response from provider", + "nullable": true + }, + + // ============================================================================ + // Account Management Fields + // ============================================================================ + { + "name": "last_login_at", + "type": "timestamp", + "label": "Last Login At", + "comment": "Last login via this OAuth provider", + "nullable": true, + "index": true + }, + { + "name": "is_active", + "type": "boolean", + "label": "Is Active", + "comment": "Whether this OAuth account is still active", + "default": true, + "index": true + } + ], + "indexes": [ + { + "name": "idx_user_oauth_user_provider", + "columns": ["user_id", "provider"], + "type": "unique", + "comment": "Unique constraint: one account per provider per user" + }, + { + "name": "idx_user_oauth_provider_sub", + "columns": ["provider", "sub"], + "type": "unique", + "comment": "Unique constraint: one record per provider sub claim" + }, + { + "name": "idx_user_oauth_email", + "columns": ["provider", "email"], + "type": "index", + "comment": "Index for email lookups by provider" + }, + { + "name": "idx_user_oauth_active", + "columns": ["is_active", "last_login_at"], + "type": "index", + "comment": "Index for active account queries" + } + ], + "relations": {}, + "values": [], + "option": { "timestamps": true, "soft_deletes": true } +} diff --git a/yao/models/user_role.mod.yao b/yao/models/user_role.mod.yao new file mode 100644 index 00000000..0993af37 --- /dev/null +++ b/yao/models/user_role.mod.yao @@ -0,0 +1,217 @@ +{ + "name": "User Role", + "label": "User Role", + "description": "User role and permission management", + "tags": ["user", "role", "permission", "auth"], + "table": { + "name": "user_role", + "comment": "User role and permission management" + }, + "columns": [ + // ============================================================================ + // Basic Fields + // ============================================================================ + { + "name": "id", + "type": "ID", + "label": "ID", + "comment": "Primary key identifier", + "primary": true + }, + { + "name": "role_id", + "type": "string", + "label": "Role ID", + "comment": "Unique role identifier (admin, user, moderator, etc.)", + "length": 50, + "unique": true, + "index": true, + "nullable": false + }, + { + "name": "name", + "type": "string", + "label": "Name", + "comment": "Display name of the role", + "length": 100, + "nullable": false + }, + { + "name": "description", + "type": "text", + "label": "Description", + "comment": "Detailed description of the role and its purpose", + "nullable": true + }, + + // ============================================================================ + // Permission Fields + // ============================================================================ + { + "name": "permissions", + "type": "json", + "label": "Permissions", + "comment": "JSON object containing all permissions and access rights", + "nullable": true + }, + { + "name": "restricted_permissions", + "type": "json", + "label": "Restricted Permissions", + "comment": "JSON array of explicitly denied permissions", + "nullable": true + }, + + // ============================================================================ + // Hierarchy Fields + // ============================================================================ + { + "name": "parent_role_id", + "type": "string", + "label": "Parent Role ID", + "comment": "Parent role for inheritance (optional)", + "length": 50, + "nullable": true, + "index": true + }, + { + "name": "level", + "type": "integer", + "label": "Level", + "comment": "Role hierarchy level (higher = more permissions)", + "default": 0, + "nullable": true, + "index": true + }, + + // ============================================================================ + // Management Fields + // ============================================================================ + { + "name": "is_active", + "type": "boolean", + "label": "Is Active", + "comment": "Whether this role is currently active", + "default": true, + "index": true + }, + { + "name": "is_default", + "type": "boolean", + "label": "Is Default", + "comment": "Whether this is the default role for new users", + "default": false, + "index": true + }, + { + "name": "is_system", + "type": "boolean", + "label": "Is System", + "comment": "Whether this is a system role (cannot be deleted)", + "default": false, + "index": true + }, + { + "name": "sort_order", + "type": "integer", + "label": "Sort Order", + "comment": "Display order for sorting", + "default": 0, + "nullable": true + }, + + // ============================================================================ + // Display Fields + // ============================================================================ + { + "name": "color", + "type": "string", + "label": "Color", + "comment": "Color code for UI display (hex format)", + "length": 7, + "nullable": true + }, + { + "name": "icon", + "type": "string", + "label": "Icon", + "comment": "Icon identifier for UI display", + "length": 50, + "nullable": true + }, + + // ============================================================================ + // Access Control Fields + // ============================================================================ + { + "name": "max_users", + "type": "integer", + "label": "Max Users", + "comment": "Maximum number of users that can have this role (0 = unlimited)", + "default": 0, + "nullable": true + }, + { + "name": "requires_approval", + "type": "boolean", + "label": "Requires Approval", + "comment": "Whether assigning this role requires admin approval", + "default": false + }, + { + "name": "auto_revoke_days", + "type": "integer", + "label": "Auto Revoke Days", + "comment": "Days after which this role is automatically revoked (0 = never)", + "default": 0, + "nullable": true + }, + + // ============================================================================ + // Extended Configuration + // ============================================================================ + { + "name": "metadata", + "type": "json", + "label": "Metadata", + "comment": "Additional role configuration and settings", + "nullable": true + }, + { + "name": "conditions", + "type": "json", + "label": "Conditions", + "comment": "Conditions that must be met to assign/maintain this role", + "nullable": true + } + ], + "indexes": [ + { + "name": "idx_user_role_active", + "columns": ["is_active", "sort_order"], + "type": "index", + "comment": "Index for active roles with ordering" + }, + { + "name": "idx_user_role_hierarchy", + "columns": ["parent_role_id", "level"], + "type": "index", + "comment": "Index for role hierarchy queries" + }, + { + "name": "idx_user_role_system", + "columns": ["is_system", "is_active"], + "type": "index", + "comment": "Index for system role queries" + }, + { + "name": "idx_user_role_default", + "columns": ["is_default", "is_active"], + "type": "index", + "comment": "Index for finding default active role" + } + ], + "relations": {}, + "values": [], + "option": { "timestamps": true, "soft_deletes": true } +} diff --git a/yao/models/user_type.mod.yao b/yao/models/user_type.mod.yao new file mode 100644 index 00000000..0c7c4986 --- /dev/null +++ b/yao/models/user_type.mod.yao @@ -0,0 +1,169 @@ +{ + "name": "User Type", + "label": "User Type", + "description": "User type classification and configuration", + "tags": ["user", "type", "classification", "config"], + "table": { + "name": "user_type", + "comment": "User type classification and configuration" + }, + "columns": [ + // ============================================================================ + // Basic Fields + // ============================================================================ + { + "name": "id", + "type": "ID", + "label": "ID", + "comment": "Primary key identifier", + "primary": true + }, + { + "name": "type_id", + "type": "string", + "label": "Type ID", + "comment": "Unique type identifier (admin, customer, guest, etc.)", + "length": 50, + "unique": true, + "index": true, + "nullable": false + }, + { + "name": "name", + "type": "string", + "label": "Name", + "comment": "Display name of the user type", + "length": 100, + "nullable": false + }, + { + "name": "description", + "type": "text", + "label": "Description", + "comment": "Detailed description of the user type", + "nullable": true + }, + + // ============================================================================ + // Configuration Fields + // ============================================================================ + { + "name": "default_role_id", + "type": "string", + "label": "Default Role ID", + "comment": "Default role assigned to users of this type", + "length": 50, + "nullable": true, + "index": true + }, + { + "name": "schema", + "type": "json", + "label": "Schema", + "comment": "JSON schema defining metadata structure and UI configuration", + "nullable": true + }, + { + "name": "metadata", + "type": "json", + "label": "Metadata", + "comment": "Additional configuration and settings for this user type", + "nullable": true + }, + + // ============================================================================ + // Management Fields + // ============================================================================ + { + "name": "is_active", + "type": "boolean", + "label": "Is Active", + "comment": "Whether this user type is currently active", + "default": true, + "index": true + }, + { + "name": "is_default", + "type": "boolean", + "label": "Is Default", + "comment": "Whether this is the default user type for new registrations", + "default": false, + "index": true + }, + { + "name": "sort_order", + "type": "integer", + "label": "Sort Order", + "comment": "Display order for sorting", + "default": 0, + "nullable": true + }, + + // ============================================================================ + // Access Control Fields + // ============================================================================ + { + "name": "max_sessions", + "type": "integer", + "label": "Max Sessions", + "comment": "Maximum concurrent sessions allowed for this user type", + "nullable": true + }, + { + "name": "session_timeout", + "type": "integer", + "label": "Session Timeout", + "comment": "Session timeout in minutes (0 = no timeout)", + "default": 0, + "nullable": true + }, + { + "name": "password_policy", + "type": "json", + "label": "Password Policy", + "comment": "Password requirements and policies for this user type", + "nullable": true + }, + + // ============================================================================ + // Feature Flags + // ============================================================================ + { + "name": "features", + "type": "json", + "label": "Features", + "comment": "Feature flags and capabilities available to this user type", + "nullable": true + }, + { + "name": "limits", + "type": "json", + "label": "Limits", + "comment": "Usage limits and quotas for this user type", + "nullable": true + } + ], + "indexes": [ + { + "name": "idx_user_type_active", + "columns": ["is_active", "sort_order"], + "type": "index", + "comment": "Index for active user types with ordering" + }, + { + "name": "idx_user_type_default", + "columns": ["is_default", "is_active"], + "type": "index", + "comment": "Index for finding default active user type" + }, + { + "name": "idx_user_type_role", + "columns": ["default_role_id"], + "type": "index", + "comment": "Index for role relationships" + } + ], + "relations": {}, + "values": [], + "option": { "timestamps": true, "soft_deletes": true } +}