layout: restructure into src/ tests/ android/ scripts/ tools/

- extension/src/{port,platform,codepage} -> src/; native_render -> src/host
  (+ dxt, shaders/); libgr2 -> src/gr2; extension/third_party -> third_party
- extension/tests -> tests/port, libgr2/tests -> tests/gr2
- android-native -> android (build.sh, push-client.sh moved in)
- script -> scripts; tools/40250 -> tools/server; oracle -> tools/granny-oracle;
  perf tools -> tools/perf
- all build trees under build/ (native, release, android, port-gate)
- xrender:: CMake aliases -> mt::; port-map ledger impl paths rewritten

No code changes. ctest 15/15, port_gate macos+android PASS, port_map check 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-29 19:08:19 +09:00
co-authored by Claude Opus 5.5
parent 70710477cf
commit a46093104c
2817 changed files with 13728 additions and 13744 deletions
+90 -90
View File
@@ -10,8 +10,8 @@
"pack://uishop.py:ShopDialog.__init__"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__del__": {
@@ -20,8 +20,8 @@
"pack://uishop.py:ShopDialog.__del__"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__GetRealIndex": {
@@ -30,8 +30,8 @@
"pack://uishop.py:ShopDialog.__GetRealIndex"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.Refresh": {
@@ -40,8 +40,8 @@
"pack://uishop.py:ShopDialog.Refresh"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.SetItemData": {
@@ -50,8 +50,8 @@
"pack://uishop.py:ShopDialog.SetItemData"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.LoadDialog": {
@@ -60,8 +60,8 @@
"pack://uishop.py:ShopDialog.LoadDialog"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__ShowBuySellButton": {
@@ -70,8 +70,8 @@
"pack://uishop.py:ShopDialog.__ShowBuySellButton"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__ShowMiddleTabs": {
@@ -80,8 +80,8 @@
"pack://uishop.py:ShopDialog.__ShowMiddleTabs"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__ShowSmallTabs": {
@@ -90,8 +90,8 @@
"pack://uishop.py:ShopDialog.__ShowSmallTabs"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__HideBuySellButton": {
@@ -100,8 +100,8 @@
"pack://uishop.py:ShopDialog.__HideBuySellButton"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__HideMiddleTabs": {
@@ -110,8 +110,8 @@
"pack://uishop.py:ShopDialog.__HideMiddleTabs"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__HideSmallTabs": {
@@ -120,8 +120,8 @@
"pack://uishop.py:ShopDialog.__HideSmallTabs"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__SetTabNames": {
@@ -130,8 +130,8 @@
"pack://uishop.py:ShopDialog.__SetTabNames"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.Destroy": {
@@ -140,8 +140,8 @@
"pack://uishop.py:ShopDialog.Destroy"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.Open": {
@@ -150,8 +150,8 @@
"pack://uishop.py:ShopDialog.Open"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.Close": {
@@ -160,8 +160,8 @@
"pack://uishop.py:ShopDialog.Close"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.GetIndexFromSlotPos": {
@@ -170,8 +170,8 @@
"pack://uishop.py:ShopDialog.GetIndexFromSlotPos"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnClickTabButton": {
@@ -180,8 +180,8 @@
"pack://uishop.py:ShopDialog.OnClickTabButton"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.AskClosePrivateShop": {
@@ -190,8 +190,8 @@
"pack://uishop.py:ShopDialog.AskClosePrivateShop"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnClosePrivateShop": {
@@ -200,8 +200,8 @@
"pack://uishop.py:ShopDialog.OnClosePrivateShop"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnPressEscapeKey": {
@@ -210,8 +210,8 @@
"pack://uishop.py:ShopDialog.OnPressEscapeKey"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnPressExitKey": {
@@ -220,8 +220,8 @@
"pack://uishop.py:ShopDialog.OnPressExitKey"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnBuy": {
@@ -230,8 +230,8 @@
"pack://uishop.py:ShopDialog.OnBuy"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnSell": {
@@ -240,8 +240,8 @@
"pack://uishop.py:ShopDialog.OnSell"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.CancelShopping": {
@@ -250,8 +250,8 @@
"pack://uishop.py:ShopDialog.CancelShopping"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.__OnClosePopupDialog": {
@@ -260,8 +260,8 @@
"pack://uishop.py:ShopDialog.__OnClosePopupDialog"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.SellAttachedItem": {
@@ -270,8 +270,8 @@
"pack://uishop.py:ShopDialog.SellAttachedItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnSellItem": {
@@ -280,8 +280,8 @@
"pack://uishop.py:ShopDialog.OnSellItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnCloseQuestionDialog": {
@@ -290,8 +290,8 @@
"pack://uishop.py:ShopDialog.OnCloseQuestionDialog"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.SelectEmptySlot": {
@@ -300,8 +300,8 @@
"pack://uishop.py:ShopDialog.SelectEmptySlot"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.UnselectItemSlot": {
@@ -310,8 +310,8 @@
"pack://uishop.py:ShopDialog.UnselectItemSlot"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.SelectItemSlot": {
@@ -320,8 +320,8 @@
"pack://uishop.py:ShopDialog.SelectItemSlot"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.DropToInventory": {
@@ -330,8 +330,8 @@
"pack://uishop.py:ShopDialog.DropToInventory"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.AskBuyItem": {
@@ -340,8 +340,8 @@
"pack://uishop.py:ShopDialog.AskBuyItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.AnswerBuyItem": {
@@ -350,8 +350,8 @@
"pack://uishop.py:ShopDialog.AnswerBuyItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.SetItemToolTip": {
@@ -360,8 +360,8 @@
"pack://uishop.py:ShopDialog.SetItemToolTip"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OverInItem": {
@@ -370,8 +370,8 @@
"pack://uishop.py:ShopDialog.OverInItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OverOutItem": {
@@ -380,8 +380,8 @@
"pack://uishop.py:ShopDialog.OverOutItem"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"ShopDialog.OnUpdate": {
@@ -390,8 +390,8 @@
"pack://uishop.py:ShopDialog.OnUpdate"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.__init__": {
@@ -400,8 +400,8 @@
"pack://uishop.py:MallPageDialog.__init__"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.__del__": {
@@ -410,8 +410,8 @@
"pack://uishop.py:MallPageDialog.__del__"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.Destroy": {
@@ -420,8 +420,8 @@
"pack://uishop.py:MallPageDialog.Destroy"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.Open": {
@@ -430,8 +430,8 @@
"pack://uishop.py:MallPageDialog.Open"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.Close": {
@@ -440,8 +440,8 @@
"pack://uishop.py:MallPageDialog.Close"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
},
"MallPageDialog.OnPressEscapeKey": {
@@ -450,8 +450,8 @@
"pack://uishop.py:MallPageDialog.OnPressEscapeKey"
],
"evidence": [
"script/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"script/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
"scripts/verify_root_pack.py: uishop.py bytes match 40250 source and root.epk",
"scripts/python_game_render_test.sh: embedded CPython loads system.py and game modules through CEterPackManager"
]
}
}