═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ EXERCISE ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 2026-06-17 00:03:33.127 | INFO | <<< UI ENSURE >>> 2026-06-17 00:03:33.132 | INFO | UI get current page 2026-06-17 00:03:33.194 | INFO | [UI] page_event_list 2026-06-17 00:03:33.198 | INFO | Goto page_exercise 2026-06-17 00:03:33.203 | INFO | <<< UI GOTO PAGE_EXERCISE >>> 2026-06-17 00:03:33.244 | INFO | Page switch: page_event_list -> page_main 2026-06-17 00:03:33.247 | INFO | Click (1240, 31) @ GOTO_MAIN 2026-06-17 00:03:33.818 | INFO | Click (1184, 104) @ LOGIN_ANNOUNCE_2 2026-06-17 00:03:34.349 | INFO | Page switch: page_main_white -> page_campaign_menu 2026-06-17 00:03:34.354 | INFO | Click (1203, 492) @ MAIN_GOTO_CAMPAIGN_WHITE 2026-06-17 00:03:39.448 | INFO | Page switch: page_main_white -> page_campaign_menu 2026-06-17 00:03:39.452 | INFO | Click (1185, 514) @ MAIN_GOTO_CAMPAIGN_WHITE 2026-06-17 00:03:40.041 | INFO | Page switch: page_campaign_menu -> page_exercise 2026-06-17 00:03:40.045 | INFO | Click (1069, 606) @ CAMPAIGN_MENU_GOTO_EXERCISE 2026-06-17 00:03:40.347 | INFO | Page arrive: page_exercise 2026-06-17 00:03:40.360 | INFO | Bind task ['General', 'Alas', 'Exercise'] 2026-06-17 00:03:40.364 | INFO | Save config ./config/alas-pc.json, Exercise.Exercise.OpponentRefreshValue=0, Exercise.Exercise.OpponentRefreshRecord=datetime.datetime(2026, 6, 17, 0, 3, 40) 2026-06-17 00:03:40.376 | INFO | [Change_opponent_count] 0 2026-06-17 00:03:40.382 | INFO | [Exercise_ExerciseStrategy] fri18 2026-06-17 00:03:40.419 | INFO | Loading OCR model: ./bin/cnocr_models/cnocr 2026-06-17 00:03:40.593 | INFO | [OCR_PERIOD_REMAIN 0.206s] 11天23:56:19 2026-06-17 00:03:40.597 | INFO | Exercise period remain: 11 days, 23:56:19 2026-06-17 00:03:40.600 | INFO | Preserve 5 exercise 2026-06-17 00:03:40.645 | INFO | [OCR_EXERCISE_REMAIN 0.043s] 10 ═════════════════════════════════════════════════ EXERCISE REMAIN 10 ══════════════════════════════════════════════════ 2026-06-17 00:03:40.652 | INFO | EXERCISE REMAIN 10 ───────────────────────────────────────────────────── OPPONENT 0 ────────────────────────────────────────────────────── 2026-06-17 00:03:40.657 | INFO | OPPONENT 0 2026-06-17 00:03:40.661 | INFO | <<< OPPONENT: 0 >>> 2026-06-17 00:03:40.666 | INFO | Click ( 228, 216) @ OPPONENT_0_0 2026-06-17 00:03:41.677 | INFO | Click ( 674, 570) @ EXERCISE_PREPARATION 2026-06-17 00:03:42.599 | INFO | <<< TRY: 1 >>> 2026-06-17 00:03:42.604 | INFO | Combat preparation 2026-06-17 00:03:42.608 | INFO | Click (1213, 626) @ BATTLE_PREPARATION 2026-06-17 00:03:48.889 | INFO | [BattleUI] PAUSE 2026-06-17 00:03:48.893 | INFO | Combat execute 2026-06-17 00:03:49.341 | INFO | [99% - 99%] 2026-06-17 00:03:54.614 | INFO | [95% - 79%] 2026-06-17 00:03:59.719 | INFO | [95% - 18%] 2026-06-17 00:04:04.810 | INFO | [00% - 00%] 2026-06-17 00:04:09.005 | INFO | BATTLE_STATUS_S -> CLICK_SAFE_AREA 2026-06-17 00:04:09.008 | INFO | Click (1233, 672) @ CLICK_SAFE_AREA 2026-06-17 00:04:09.311 | INFO | GET_ITEMS_1 -> CLICK_SAFE_AREA 2026-06-17 00:04:09.314 | INFO | Click (1243, 656) @ CLICK_SAFE_AREA 2026-06-17 00:07:09.479 | INFO | Function calls: gui.py L94 process.py L112 start() context.py L223 _Popen() context.py L277 _Popen() popen_fork.py L20 __init__() popen_fork.py L74 _launch() process.py L297 _bootstrap() process.py L99 run() gui.py L85 func() main.py L463 run() server.py L60 run() runners.py L43 run() on.py L84 main() proxy_headers.py L75 __call__() applications.py L112 __call__() errors.py L146 __call__() base.py L21 __call__() exceptions.py L58 __call__() routing.py L569 __call__() routing.py L540 lifespan() routing.py L481 default_lifespan() routing.py L518 startup() app.py L1543 process_manager.py L227 restart_processes() process_manager.py L51 start() process.py L112 start() context.py L223 _Popen() context.py L277 _Popen() popen_fork.py L20 __init__() popen_fork.py L74 _launch() process.py L297 _bootstrap() process.py L99 run() process_manager.py L166 run_process() alas.py L555 loop() alas.py L69 run() alas.py L254 exercise() exercise.py L229 run() exercise.py L115 _exercise_once() combat.py L188 _combat() combat.py L53 _combat_execute() device.py L188 screenshot() device.py L250 stuck_record_check() device.py L43 show_function_call() 2026-06-17 00:07:09.500 | WARNING | Wait too long 2026-06-17 00:07:09.502 | WARNING | Waiting for {'BATTLE_PREPARATION', 'GET_ITEMS_1', 'POPUP_CANCEL', 'GET_MISSION', 'GUILD_POPUP_CONFIRM', 'EXP_INFO_S', 'MISSION_POPUP_GO', 'PAUSE', 'QUIT_RECONFIRM', 'POPUP_CONFIRM_WHITE', 'EXP_INFO_D', 'OPTS_INFO_D', 'BATTLE_STATUS_S', 'EXERCISE_CHECK', 'BATTLE_STATUS_D'} 2026-06-17 00:07:09.593 | INFO | [Package_name] com.bilibili.azurlane 2026-06-17 00:07:09.596 | ERROR | GameStuckError: Wait too long 2026-06-17 00:07:09.598 | WARNING | Saving error: ./log/error/1781626029598