From c06b6c51e116022245ea2945d94ed7f1c3387366 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 3 May 2026 17:00:55 +0200 Subject: [PATCH] fix(motion): full queue reset on locomotion-cycle direct transitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When AnimationSequencer.SetCycle transitions between forward-locomotion cycles (Walk↔Run, Walk↔WalkBackward, etc.) — i.e. when both old and new motion's low byte is in {0x05 WalkForward, 0x06 WalkBackward, 0x07 RunForward} — do a full queue drain + _currNode/_firstCyclic reset (matching the existing skipTransitionLink branch) instead of just ClearCyclicTail. Without this, _currNode is left pointing into the previous cycle's non-cyclic head (link frames from the prior Ready→walk transition), and the visible legs continue playing those head frames before reaching the new run cycle. Investigation findings (cdb live trace of retail at tools/cdb-scripts/walk_run_motion_trace.log): Retail's actual approach is "additive add_to_queue with no truncate" — MotionTableManager handles the natural progression via per-tick CheckForCompletedMotions / remove_redundant_links cleanup. Acdream doesn't have that machinery, so this fix is the closest viable emulation: force the queue back to a clean state and rebuild from scratch on the locomotion-cycle transition. User-reported symptom this addresses (walk→run direct transition, release shift while W held): visible animation cycle did not switch until next motion event. Verified via FWD_WIRE + SETCYCLE diags that both ACE and our SetCycle are firing correctly on the transition. Co-Authored-By: Claude Opus 4.7 --- .../Physics/AnimationSequencer.cs | 24 +- tools/cdb-scripts/walk_run_motion_trace.log | 386 +++++++++++++++++- .../walk_run_motion_trace.log.console | Bin 0 -> 99876 bytes 3 files changed, 408 insertions(+), 2 deletions(-) diff --git a/src/AcDream.Core/Physics/AnimationSequencer.cs b/src/AcDream.Core/Physics/AnimationSequencer.cs index fb33c0f..76de86a 100644 --- a/src/AcDream.Core/Physics/AnimationSequencer.cs +++ b/src/AcDream.Core/Physics/AnimationSequencer.cs @@ -434,7 +434,29 @@ public sealed class AnimationSequencer // cycle. Without this, the old RunForward → ??? link would // continue draining for ~100 ms before the new Falling cycle // starts, defeating the "skip the link" intent. - if (skipTransitionLink) + // + // 2026-05-03: ALSO do a full drain when transitioning between + // FORWARD-LOCOMOTION cycles (Walk↔Run, Walk↔WalkBackward, etc.) + // — i.e. when both old and new motion's low byte is in the + // {0x05 WalkForward, 0x06 WalkBackward, 0x07 RunForward} set. + // ClearCyclicTail alone leaves _currNode in the previous cycle's + // non-cyclic head (link frames from a Ready→walk transition), + // and the visible legs continue playing those head frames before + // reaching the new run cycle. The user-reported symptom: walk→run + // direct transition (release shift while W held) did not visibly + // switch the leg cycle — body advanced at walk pace until the + // next motion event (turn / stop) re-fired SetCycle and finally + // aligned the queue. Live cdb trace of retail acclient.exe + // 2026-05-03 (tools/cdb-scripts/walk_run_motion_trace.log) shows + // retail uses an additive add_to_queue with no truncate — the + // MotionTableManager's per-tick CheckForCompletedMotions handles + // the natural progression. We don't have that machinery, so we + // emulate via a hard reset on the locomotion-cycle transition. + uint oldLow = CurrentMotion & 0xFFu; + uint newLow = motion & 0xFFu; + bool oldIsForwardLoc = oldLow == 0x05u || oldLow == 0x06u || oldLow == 0x07u; + bool newIsForwardLoc = newLow == 0x05u || newLow == 0x06u || newLow == 0x07u; + if (skipTransitionLink || (oldIsForwardLoc && newIsForwardLoc)) { _queue.Clear(); _currNode = null; diff --git a/tools/cdb-scripts/walk_run_motion_trace.log b/tools/cdb-scripts/walk_run_motion_trace.log index 39a793e..41880c5 100644 --- a/tools/cdb-scripts/walk_run_motion_trace.log +++ b/tools/cdb-scripts/walk_run_motion_trace.log @@ -172,4 +172,388 @@ breakpoint 6 redefined [124] MotionTableManager::PerformMovement: motion=001af3e0 speedBits=15f356a0 holdkey=13cf1420 [125] CMotionTable::StopObjectMotion: motion=6500000d [126] MotionTableManager::PerformMovement: motion=001af3e0 speedBits=15f356a0 holdkey=13cf1420 -[127] CMotionTable::StopObjectMotion: motion=6500000f \ No newline at end of file +[127] CMotionTable::StopObjectMotion: motion=6500000f +[128] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[129] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[130] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[131] CMotionTable::DoObjectMotion: motion=8000003d +[132] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[133] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[134] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[135] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[136] CMotionTable::DoObjectMotion: motion=10000053 +[137] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[138] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[139] CMotionTable::StopObjectMotion: motion=6500000f +[140] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[141] CMotionTable::StopObjectMotion: motion=6500000d +[142] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[143] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[144] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[145] CMotionTable::DoObjectMotion: motion=8000003d +[146] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[147] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[148] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[149] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[150] CMotionTable::DoObjectMotion: motion=41000003 +[151] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[152] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[153] CMotionTable::StopObjectMotion: motion=6500000f +[154] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[155] CMotionTable::StopObjectMotion: motion=6500000d +[156] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[157] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[158] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[159] CMotionTable::DoObjectMotion: motion=8000003d +[160] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[161] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[162] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[163] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[164] CMotionTable::DoObjectMotion: motion=10000053 +[165] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[166] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[167] CMotionTable::StopObjectMotion: motion=6500000f +[168] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[169] CMotionTable::StopObjectMotion: motion=6500000d +[170] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[171] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[172] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[173] CMotionTable::DoObjectMotion: motion=8000003d +[174] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[175] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[176] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[177] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[178] CMotionTable::DoObjectMotion: motion=41000003 +[179] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[180] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[181] CMotionTable::StopObjectMotion: motion=6500000f +[182] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[183] CMotionTable::StopObjectMotion: motion=6500000d +[184] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[185] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[186] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[187] CMotionTable::DoObjectMotion: motion=8000003d +[188] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[189] CPhysicsObj::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[190] CPartArray::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[191] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[192] CMotionTable::DoObjectMotion: motion=10000054 +[193] MotionTableManager::add_to_queue: arg1=10000054 arg2=00000001 +[194] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[195] CMotionTable::StopObjectMotion: motion=6500000f +[196] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[197] CMotionTable::StopObjectMotion: motion=6500000d +[198] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[199] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[200] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[201] CMotionTable::DoObjectMotion: motion=8000003d +[202] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[203] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[204] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[205] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[206] CMotionTable::DoObjectMotion: motion=41000003 +[207] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[208] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[209] CMotionTable::StopObjectMotion: motion=6500000f +[210] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[211] CMotionTable::StopObjectMotion: motion=6500000d +[212] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[213] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[214] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[215] CMotionTable::DoObjectMotion: motion=8000003d +[216] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[217] CPhysicsObj::DoInterpretedMotion: motion=10000052 speedBits=001afcb4 +[218] CPartArray::DoInterpretedMotion: motion=10000052 speedBits=001afcb4 +[219] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[220] CMotionTable::DoObjectMotion: motion=10000052 +[221] MotionTableManager::add_to_queue: arg1=10000052 arg2=00000001 +[222] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[223] CMotionTable::StopObjectMotion: motion=6500000f +[224] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[225] CMotionTable::StopObjectMotion: motion=6500000d +[226] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[227] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[228] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[229] CMotionTable::DoObjectMotion: motion=8000003d +[230] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[231] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[232] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[233] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[234] CMotionTable::DoObjectMotion: motion=41000003 +[235] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[236] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[237] CMotionTable::StopObjectMotion: motion=6500000f +[238] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[239] CMotionTable::StopObjectMotion: motion=6500000d +[240] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[241] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[242] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[243] CMotionTable::DoObjectMotion: motion=8000003d +[244] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[245] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[246] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[247] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[248] CMotionTable::DoObjectMotion: motion=10000053 +[249] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[250] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[251] CMotionTable::StopObjectMotion: motion=6500000f +[252] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[253] CMotionTable::StopObjectMotion: motion=6500000d +[254] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[255] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[256] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[257] CMotionTable::DoObjectMotion: motion=8000003d +[258] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[259] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[260] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[261] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[262] CMotionTable::DoObjectMotion: motion=41000003 +[263] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[264] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[265] CMotionTable::StopObjectMotion: motion=6500000f +[266] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[267] CMotionTable::StopObjectMotion: motion=6500000d +[268] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[269] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[270] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[271] CMotionTable::DoObjectMotion: motion=8000003d +[272] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[273] CPhysicsObj::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[274] CPartArray::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[275] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[276] CMotionTable::DoObjectMotion: motion=10000054 +[277] MotionTableManager::add_to_queue: arg1=10000054 arg2=00000001 +[278] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[279] CMotionTable::StopObjectMotion: motion=6500000f +[280] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[281] CMotionTable::StopObjectMotion: motion=6500000d +[282] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[283] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[284] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[285] CMotionTable::DoObjectMotion: motion=8000003d +[286] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[287] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[288] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[289] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[290] CMotionTable::DoObjectMotion: motion=41000003 +[291] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[292] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[293] CMotionTable::StopObjectMotion: motion=6500000f +[294] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[295] CMotionTable::StopObjectMotion: motion=6500000d +[296] MotionTableManager::PerformMovement: motion=001afbe4 speedBits=16f5e1f8 holdkey=16fa5c38 +[297] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[298] CPhysicsObj::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[299] CPartArray::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[300] MotionTableManager::PerformMovement: motion=001afc14 speedBits=16f5e1f8 holdkey=16fa5c38 +[301] CMotionTable::DoObjectMotion: motion=6500000d +[302] MotionTableManager::add_to_queue: arg1=6500000d arg2=00000000 +[303] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[304] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[305] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[306] CMotionTable::DoObjectMotion: motion=8000003d +[307] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[308] CPhysicsObj::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[309] CPartArray::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[310] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[311] CMotionTable::DoObjectMotion: motion=10000054 +[312] MotionTableManager::add_to_queue: arg1=10000054 arg2=00000001 +[313] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[314] CMotionTable::StopObjectMotion: motion=6500000f +[315] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[316] CMotionTable::StopObjectMotion: motion=6500000d +[317] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[318] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[319] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[320] CMotionTable::DoObjectMotion: motion=8000003d +[321] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[322] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[323] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[324] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[325] CMotionTable::DoObjectMotion: motion=41000003 +[326] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[327] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[328] CMotionTable::StopObjectMotion: motion=6500000f +[329] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[330] CMotionTable::StopObjectMotion: motion=6500000d +[331] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[332] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[333] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[334] CMotionTable::DoObjectMotion: motion=8000003d +[335] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[336] CPhysicsObj::DoInterpretedMotion: motion=10000052 speedBits=001afcb4 +[337] CPartArray::DoInterpretedMotion: motion=10000052 speedBits=001afcb4 +[338] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[339] CMotionTable::DoObjectMotion: motion=10000052 +[340] MotionTableManager::add_to_queue: arg1=10000052 arg2=00000001 +[341] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[342] CMotionTable::StopObjectMotion: motion=6500000f +[343] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5ec78 holdkey=16fa4498 +[344] CMotionTable::StopObjectMotion: motion=6500000d +[345] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[346] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[347] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[348] CMotionTable::DoObjectMotion: motion=8000003d +[349] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[350] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[351] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[352] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[353] CMotionTable::DoObjectMotion: motion=41000003 +[354] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[355] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5ec78 holdkey=16fa4498 +[356] CMotionTable::StopObjectMotion: motion=6500000f +[357] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5ec78 holdkey=16fa4498 +[358] CMotionTable::StopObjectMotion: motion=6500000d +[359] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[360] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[361] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[362] CMotionTable::DoObjectMotion: motion=8000003d +[363] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[364] CPhysicsObj::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[365] CPartArray::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[366] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[367] CMotionTable::DoObjectMotion: motion=10000054 +[368] MotionTableManager::add_to_queue: arg1=10000054 arg2=00000001 +[369] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[370] CMotionTable::StopObjectMotion: motion=6500000f +[371] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[372] CMotionTable::StopObjectMotion: motion=6500000d +[373] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[374] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[375] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[376] CMotionTable::DoObjectMotion: motion=8000003d +[377] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[378] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[379] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[380] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[381] CMotionTable::DoObjectMotion: motion=10000053 +[382] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[383] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[384] CMotionTable::StopObjectMotion: motion=6500000f +[385] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[386] CMotionTable::StopObjectMotion: motion=6500000d +[387] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[388] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[389] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[390] CMotionTable::DoObjectMotion: motion=8000003d +[391] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[392] CPhysicsObj::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[393] CPartArray::DoInterpretedMotion: motion=10000054 speedBits=001afcb4 +[394] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[395] CMotionTable::DoObjectMotion: motion=10000054 +[396] MotionTableManager::add_to_queue: arg1=10000054 arg2=00000001 +[397] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[398] CMotionTable::StopObjectMotion: motion=6500000f +[399] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[400] CMotionTable::StopObjectMotion: motion=6500000d +[401] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[402] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[403] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[404] CMotionTable::DoObjectMotion: motion=8000003d +[405] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[406] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[407] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[408] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[409] CMotionTable::DoObjectMotion: motion=41000003 +[410] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[411] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[412] CMotionTable::StopObjectMotion: motion=6500000f +[413] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[414] CMotionTable::StopObjectMotion: motion=6500000d +[415] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[416] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[417] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[418] CMotionTable::DoObjectMotion: motion=8000003d +[419] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[420] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[421] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[422] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[423] CMotionTable::DoObjectMotion: motion=41000003 +[424] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[425] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e978 holdkey=16fa3328 +[426] CMotionTable::StopObjectMotion: motion=6500000f +[427] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e978 holdkey=16fa3328 +[428] CMotionTable::StopObjectMotion: motion=6500000d +[429] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[430] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[431] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[432] CMotionTable::DoObjectMotion: motion=8000003d +[433] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[434] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[435] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[436] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[437] CMotionTable::DoObjectMotion: motion=41000003 +[438] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[439] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e9f8 holdkey=16fa6538 +[440] CMotionTable::StopObjectMotion: motion=6500000f +[441] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e9f8 holdkey=16fa6538 +[442] CMotionTable::StopObjectMotion: motion=6500000d +[443] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[444] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[445] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[446] CMotionTable::DoObjectMotion: motion=8000003d +[447] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[448] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[449] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[450] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[451] CMotionTable::DoObjectMotion: motion=10000053 +[452] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[453] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[454] CMotionTable::StopObjectMotion: motion=6500000f +[455] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[456] CMotionTable::StopObjectMotion: motion=6500000d +[457] MotionTableManager::PerformMovement: motion=001afc60 speedBits=16f5e1f8 holdkey=16fa5c38 +[458] CMotionTable::StopObjectMotion: motion=6500000d +[459] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[460] MotionTableManager::PerformMovement: motion=001afc2c speedBits=16f5e1f8 holdkey=16fa5c38 +[461] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[462] MotionTableManager::PerformMovement: motion=001afbe4 speedBits=16f5e1f8 holdkey=16fa5c38 +[463] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[464] CPhysicsObj::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[465] CPartArray::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[466] MotionTableManager::PerformMovement: motion=001afc14 speedBits=16f5e1f8 holdkey=16fa5c38 +[467] CMotionTable::DoObjectMotion: motion=6500000d +[468] MotionTableManager::add_to_queue: arg1=6500000d arg2=00000000 +[469] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[470] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[471] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[472] CMotionTable::DoObjectMotion: motion=8000003d +[473] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[474] CPhysicsObj::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[475] CPartArray::DoInterpretedMotion: motion=41000003 speedBits=001afcb4 +[476] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[477] CMotionTable::DoObjectMotion: motion=41000003 +[478] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[479] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5eb78 holdkey=16fa6a48 +[480] CMotionTable::StopObjectMotion: motion=6500000f +[481] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5eb78 holdkey=16fa6a48 +[482] CMotionTable::StopObjectMotion: motion=6500000d +[483] MotionTableManager::PerformMovement: motion=001afc60 speedBits=16f5e1f8 holdkey=16fa5c38 +[484] CMotionTable::StopObjectMotion: motion=6500000d +[485] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[486] MotionTableManager::PerformMovement: motion=001afc2c speedBits=16f5e1f8 holdkey=16fa5c38 +[487] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[488] MotionTableManager::PerformMovement: motion=001afbe4 speedBits=16f5e1f8 holdkey=16fa5c38 +[489] MotionTableManager::add_to_queue: arg1=41000003 arg2=00000000 +[490] CPhysicsObj::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[491] CPartArray::DoInterpretedMotion: motion=6500000d speedBits=001afcc0 +[492] MotionTableManager::PerformMovement: motion=001afc14 speedBits=16f5e1f8 holdkey=16fa5c38 +[493] CMotionTable::DoObjectMotion: motion=6500000d +[494] MotionTableManager::add_to_queue: arg1=6500000d arg2=00000000 +[495] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[496] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[497] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e4f8 holdkey=16fa5218 +[498] CMotionTable::DoObjectMotion: motion=8000003d +[499] MotionTableManager::add_to_queue: arg1=8000003d arg2=00000000 +[500] CPhysicsObj::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[501] CPartArray::DoInterpretedMotion: motion=10000053 speedBits=001afcb4 +[502] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e4f8 holdkey=16fa5218 +[503] CMotionTable::DoObjectMotion: motion=10000053 +[504] MotionTableManager::add_to_queue: arg1=10000053 arg2=00000003 +[505] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e4f8 holdkey=16fa5218 +[506] CMotionTable::StopObjectMotion: motion=6500000f +[507] MotionTableManager::PerformMovement: motion=001afc40 speedBits=16f5e4f8 holdkey=16fa5218 +[508] CMotionTable::StopObjectMotion: motion=6500000d +[509] CPhysicsObj::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[510] CPartArray::DoInterpretedMotion: motion=8000003d speedBits=001afcb4 +[511] MotionTableManager::PerformMovement: motion=001afc24 speedBits=16f5e4f8 holdkey=16fa5218Detached diff --git a/tools/cdb-scripts/walk_run_motion_trace.log.console b/tools/cdb-scripts/walk_run_motion_trace.log.console index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3b916dc19129430d021ec509be6b0a3e99ed10ba 100644 GIT binary patch literal 99876 zcmeI5eRCW)a>n=XROLJHu97<6C8t;v#TTc16afPv!rY^81clIb6J#@4S+CT)DgW zQNGRh-pcp*)?2yyh1~tMy!gyd@_&{1ee;=j&Ara#Z+x;})88y;$yW2~N_i~bzmPj2 zRqu$LPvqyG=zSrw&lX3`-@;v<$)`^mjV~I_&Xz4i+t20NOS#wkM%&LDEgv*(J&~(V z#6nmMD6=j8$D0u&aWEJTaQ4_YJ91#;rkky+=bWg&b&O@_`BZM+z{kQJg7aMergsyZoC;HaclAM;+p*M z+G=os@12YN-!9{#AB(mYUrQ8elq+HmMMN+QtUABCEB%SS148ucp_rKS&y>3Qtbb#1 zJ!$=EVw=bZy^a>&$-j(Xj6k&Dz4+l>)9*fx5Ms=}U82wS;$Rt{_a#D(8jO1@I-iQh zTZ@kbb$%_szm~rd&5S>^sykADCGEYGzbP_ri6^v2Tw81}_OE)zHMzRKxFIsP7XKpe zb{pBZ<*pYpj>8vT3FfNYqegB@Cq94KpeN&mjRn`_o;pUt2kcJh3f6+pm(6H*Ed7)S z=SO?Omb6KGAMfae-^#Zb!)dW0Hj)^{j^wYa-%s@?jRd{Z5ArQ~pN`RHpSKbfZ{)>j z2ac!iV%Lxd`oC>j&3H;b_P(Bq4sb5K`bO@7U+rZhh*=Yf`1n+QE*lFTFF$MF8TR{a z;}1ogCt`s&G7^6;c2e}jDp(pnV0qr1iO!7V?QbdrIucvr8y(B@cc69mMcQ%09$w0C z?hAJBTt%wlIR73-^=Z)O=*%t3K zmTmX4odzEcH?s9B={0AK&t%c^ZT;~R~{Ed+@8oaBvHx4`hn=LE%!-& zENt_(;OkTI-TF4~ie+G4!Ma-Gm9jwlkgJw+G#NVqN{F=m_ zW~Owmk<(>Ytgvba@csIRcF=iQd5?P;#XV@VDZ=ADIQ7L9>g8L0xa`}8^T*O>Hj6$u z>Pb;=2USc)z?q|^F21OLC~@%4mJZ;z`v$plJ!SmG_gI>A0j6k1kHg zWXA9?WAaI6?*3Y2lcUW^ekoGge31x8pUvV-d)5=-4-e(_rAWUczW=IsPRz{6BLEYVs$&6R+0z6ghByb@o(5*DksswK_cM<7JOuZ}oU?a!L^y@~FAj`ktyN zXgpeRf)OFCbF}s7W~^e2B5V6lWdBj@f?d~h%rN@WFUgj1<>nGI+p;&a!Q%oOkQa_; zH(WW8R|#Ik{RSIsOU&dgVEsd-U;(|7p2_+w@aJZf0Poj(L3?kTgXxu!y>5FU9|3oo z2zb_H@pF=yVT2e^){Fm*BlslisuG-=JuN4~MZkvj`5f9x4kdU%ubhe&CBBd2pM4O2 z5)8U%aOkwa_B%^S*86rO9ygP&b38DyESo`F4fklR%{#6aMt&TxLJ#i+^vf=dyaR{?jGm1)X-pGhLnX{SWkK zSiXHM(Q(j>0Qt5bNpFwm2>VU{-NgGU{UB>`q?*0e?_Al`;;Z=RC3yfOg|QAV=#|p7s~CO1lQ_N<+&K}Hx+eXJ z^;)yZ`X0#2&GnU$m@C^74;GniuXHgeWFLr`lh$lc%_G;*kF!pHXeS$wieA+7N z>C#U=ZJ4>C5qmHGBil1r!Lrdndj=TUH zm;c?6PcerAYw1a3$Dc1gllw4NVjjLL|JS`uii@v>BeCv*W_gahEB6cIk$L2$+}qf* zFB;}$ms>JQ-jV%d53Ve+Zk~-lm{*4g;R^XAyXLb5dq|$jX#J>Y1rUa27>x$T70D^7 zM(d@=Xhkf%lIU9BD?r4MJu!^DA$`>54L+%#$vAGvv|h5t-6|^~63MHTv^PeAdBvUf z<}+E5`L3uBvcle84N|@yuKB#s-ktuVAOYwAqUfFncAl}v2z*%YBi+$uk)Y8*pEwrW z*~CX$2k=xda=lzy4@*`V))&YSS=P~K5B8Z+8v@o|G&$B&X*)hTk=Z0GmERR;biC|| zrV-qJGbVq#k$NKN#CXk07JZfd+beKq4e8!l`ZmDK+3@hLHR9NR+nKqr&z9bLE*v2znK&~k+G?%@*1o>garCk3 zgvEalURtu6P9HN&3DQHBVZHP?{@9fS&OVe`(_Q(=p)As^mznf1XX6U5((Dm?lBif= zO&_MoXvhAMBk_-}K-!-B_4!q_3T&Nmhbx=1fj>!HvC{rteiI8+pQQJ_tDIE?MsgU1 zefDTe*7c;E>^KftlQsYNWZx3(XGdy2`a^agL;$<5^Zl+{-$2HI3Ja|}D6zKn_#iv1 zEc#kZmIiLF`&jbrUfltV?-^}vp0Fw#{$OjjsZ2?{BNWEBUIU^kpc}2%EBY^1S=C^* zvZRZ6Se}Y7YH)LWTV=Gz9=#H9&?lSfU9gUNsFLamvg77=YxkxRcSpur_KTJ50uD1i zwJ$m2Q|V!bHS1d4jrDsXlRd~G1F??LD#x-`tG_k(ks9yg5w4q?qt*EsV`sTB8I`G5 z(owz|V_liLLPwT1Ket8B>fDwq$3bLchnOl=>Fh6Ua>7}&VkbRxxuEkHKPcx@x^kjcXPCA(-i)Px*o-M9eUtg7; zLp5gc;Q6t%J6|^ia}2xrk*-&6B&B;-M>v(?U1Nt(xffW(MGa;rHvfHerRy<5vxsBdq`m5&5HIH`a& z8|sVE@w~aquN#Je%pVt@HqpRNn=qy_kF>v7tneE>j+(!~J7|Md8uAyij-NKyO z+Q^o~@kMiwGx?X#Zb=1$cO6gF?`3vFOhjPylV~@lVL>YDF*jYW8`w<(<5LE~rGc(RZ?%!s#gI@|)c%)^lFS zJFtWPWO`zWhgZ51$y-T0Gj*Eakr=?BIOGJD_?)zLaz8r}vxLiA!e zMuzgb>@hT;zMD3li|^EbKAn!5TJ87J9-?yd=xkdB%UET8_xJyW%KwM57ct;K?RR6u zNsLn3J3y&-i@%e$d@OOqDASE<{fwTy*T zu6|$8hFtdx>5p1*{zCXNteN@>xHG$asP{mV^!>Jz_tV{h59F@w5$gXoqhePZva+Ac z&trMrm9gW6%pe}hz1Vr!cQ3eO>R#;GW#;oj?x@`Tg|v;@H1192weOBP&UdvlU0%pN z9*7m6$_$4)f6;R%%@(F~dmycP(d?%BXZiP*wDMk~Wm%h*EvN4Lx!miX+zr1zmUnm& z4|7GW`cST?Y}w9ic3ZCXeCW&y#b=Gax0ClVCZG0+wwwK9x5R39<$gpQ9=R>H?E1r) z`MSGNt%0wJXKh*B%RoijnXt9^2N^f$Kk$t7Nf)c%N2}Ebw^mkJsDG2L)3kzcDB>~7N6K!{8D%XyOWd| z(Yohy?YX?p7vC)YR>q`%lWRleFjr{vm`~--WTSqR>o8*G(#H}T>;{5o+F#LyGk*T* z%4WQWU7g7c0Y-Wu$j4kHb$ws1|D$|9wz%DEt3l1{&1cxpLfb!DO4<@Gh<`LDIY;I{ z<%d}!b|eB|B>&Z1BSIK`^)s*JZ~Wz#O-yz@dng*|oJm`PkB9?3#fSUD+gQsyPTXN# zB!KJhq(^X?4X0v^69=11`Tr=;83z439R-ZDM8~F4(C*t$B?k1gp!@QUnV_CHNmM)% z8J7}g>>+p~_{W)loN1%02&Je{N7|-Qu_Zl_+0?PjmQEzv>!C&pP2fbF*Y)8b3LI;S zSR#vcETb{A+ZVEv^1XP2pW0E>Cx`d}lU~UTKE!}s+iqR^%Nb3`$4udS&GwO5VvbHl z97v-pMImPaQ_@Uc8QUnu6`%Cj`yWnEX1+7Tn^gRV98wq;j2|d#BtQCY<&&j7c+>m$ zBY*6x6e7d>J{%w39MOlmkNe_^{g30voQ%IDU+xzA@>Rp%VSC>Qzh@qm?uTA}*0nWR z8cuqnZjxGo^sI^#OQ>@@k5hi~4z&xZkC1*Txg}8ffp_U+Ppd2QWmV1DCHhkFz7ez}j&})-;E! zWbyjgS+`%rmQ=5CYJ~^S$|5?Jl}A-hFVOZ5%UO2Y9WuS(J1d|mJZQ%>EAnO?MSFT$ z&8QxxlMls*#5F7LX?q3y+{v;9>ihy*Q1q`iD~N4ro*M(HV_79}Jr-7nbrn7RB<-iZ zxE=?shv_sOUe}LnRs!ncb!<{#yz}$MDBK_DLfc?N8 zE0uBEZY=5g0&59GQ2V8r%^p;Xpdst=U2faWUX;f*ReGjXO>R3(rzx{5wYe=PpQuIq zb78(YTWm{8$G*$3GM1IcN>1&v2>N+Bz-kNy#$7Y6yJLwbu9a`6 zQMu-7*f?=*nU%EuxmEQ%$FsQhWlPH9y6d+bx25WhxK6ir?%v`&up9~v9oZ}oz_W0s zvXs__rTW~acuf`8*p@O5z{xAqSZa**a8PABOZgc1cqlLxW*sovtU|#I?_jk7ZD8wtj;BGvuc|7y=5x~rNggl%UL!|FIEXqi?unbt6!rpva}Um@pI(HzeD zW)QJ0m1%LcK03s*@-v9t$+9iX!Kpe=Mfaxsff~a4R`l~#&YHD;`18)gc+Rla+xveNr=D#Hi9gQ`{_T&6)LT(X{@Xj4I*WDEw=l^Pzd^ zsIn@npL5zSAI|Ex2&&7Lx*7D;=pW*mthKE>?q4DJ&%G;iRVQC2X7llv{8E1n$EI}8kZ;hWhH^#sC?&oq`|mq5RzHmgqLMDeLCrMsv-wkjLnx>=k)959B2CR5=y zPejk}r1RF4at7vHEa}7c&5?qYt=i0vNH7lHKL+}-A|9J`97LKgyHdLc*hq*bmMN*d z4%F?B>*p?mbJ#f@l|VC=2xF(?}_sH#g?J}G_e&hy>6Z?MxiurGPlma%4R1x&9y)^zje z>*qB*^E#ZA!4tE_7;A=U<*fnT9Jkn+n$LqAWKPQfQQBu~h1${n*z(P5Vtd+HWA&hE zIo(mYY~~(ID;aCpg=CRbH^P~_*-M{G;)(E3-&uF&K2$4T#$|pHo@eU52#@U(_zC z_6!m3%e0g+;81sj8@|iLCDfofae5Pe}XD(ys5Bw3H$MB)+3n71Cb)WTX znc|Vd#}7h9=bZ8f-ullWu~o9Z;EgS-8?86HioI;;$(c0s;0IO#T0g?Ob3M;YeXqsL zYck-WTKTf(^NVoH%B1n1xu}l;$My^n?#r~4@q<`eKR*ch1Nxw+ug%S8`x9i$L;k?3 zI@9qne}1sPTrW+xphmVO@Pql(gs$#Cm`hb?td%coK6X#^u3hafvoig$#h@Tb=9m?G_2UIagz8toqQQT1{7JRKkG05njJWG`6SlgK?@vV`=^TAk@Z8 zS0`GQKk)l({QZf6A52#(dL(nC`uh*2tQNg4*lB#bHhRV*hcAB+DnaLyKVT>MyqLPL zC!&9TZ%Yk+fTS@hLc1}QtF1*7TivW3;oZ4jdHw*stU{=6gb&rqmo=Xk1IDVhURsL* z$M#fyfFxh0Wvu)Gn#^m}(~nBV;QM_xG-Gc3fEu0YFuXoLK>s|354D!%50Ey;{fX!m zP`zgMwL8LiFr9OA=ak9w_C$6dp#RwG3;55MX(>a`uJ`i%;QBIWQkx&F&h@rkI{~p! zVCFR=e5h8wtohvd0i$Kz2#@V)`~VMnu%Il$V`=&P0kxn$E8P-q152mXI9V35$ zuk#pQj~`eyX#LgME|z;n;(0y?bZ$=q_40#IHQL`3>*No-m7rzl*^Q|@KL|CQwfR9j zv-D)hcqVdS<~8}jP_5>*KhYcEp=z{Ngva(Ye!x@s>hptGT0cLq{Rc#nkBiTZA58gd zP^>jwwq=a`!IaMjg-aRVu8p2uEcfsO`iag1>SkYuYBevW?%SV;xARQB4nN>T!}{pi z^kCs>gO>0EzqRrhKGa%aeZi_h z=axSRRi1Uxvpd3gSc_GImSV!(&@)txrd#0O-5uN0&~u!pgvQeP(KF1hLQQ9Fe$buk zd1A>bKlvWk5ype*Rt-9rp2%L-b>|;&b|7ma zhH0T{G~EI}ddBt)l6;w#GW3k4m7r&+>8#BUR_A(s^Qv_H0_$hv>`xr3l`m^P_E_VO zaLdZnityN;A;Nu`ma+(srS(U+)h`f9(`C#{@&|sOO}Rf24Dn<(heUV@Kk!;>ifYin z53Cw=Zu}rrdDfj>bw?NvKd@@hH1>4o3`1gTjGh>(M$;{*#}D?MYocZ7+4Ww2eIe9z z*5(J@xt=eUEE8Tg!iQ=#xBZDe1{|tJYejf$PvZv%qwG(NrS7ES{>9+?uH`?$F=%$D~o&&$MEDs{fEQMkXefmLG@E z#8y6QGp#P~D`#5hHBKgGs8%0xCI+k4&cwv_3=uvChR4#%B77_i@8*Sk5k3xv57UZo zPnC(OKU-$sdTk7k?P(EiRif#!qRZgRX3Md({s^~RBW<4B{&Ua#5B&}6)3#*X9lHC* z<`PJo4#VruCD1>Q;X|!uxkjWZj?XLCh+YBJYwqOejxZif=WLk|89nP)ipKUd^c<&B zG?vzno;H_aEjH8?)t%#YXPll`qUwTJn$un-tmWH-KCf&#`seq(_;%~ZUJeniIGrBT zHsuGgw6X~Iaq;>2%&OIr4x_%pCtugokvpmI(bPH-&EARtGVneCA=-I_` z4|>wmO|SXz1AA_0+B0=yt7LX{)a+B}e^v_>N1T>tm{z}1H1=|k8p{UB6YP8SQxB0QGXAK@W? z0H^S1GGxRX1C_$_MANpcG2(^%fz^AaWp({F#9Af%z>DElMLOonZQuvvRf=}8+`|vX zsuUfn)x4OxKeqBr-8Z|6?HSP1muV?O&sbVNdWQUgRf^W<2i>`zC&EJoXx%m9p<4M? zK8K*^7-J33)YExI8vp(LAhxGPxK)X!<#flHvIvi*l|{IZi_gzz<7dnRKd^ewQojwc z))@T2sz|5d2jf+WcCp-po?}&t4%KR2Ox;&!&rI5~GU?voN6*-vhMwb8ipJ7P(9+^%vxnAFXsP-PRL&@g^3t1+-Ef|;RoIbx95qDX|0ey7_U;ai{&1EFjl4L zP_5?0)O{yWlF`mH^*Z^3y{qhbX)i28&#w1!wNA9zawfHR;I3l1?<_U+vP}4x{J^Uf z7M@eC+8f~|m7=}~kG*XCz^X*+MtCf(pC8y+YMdQ9xBZEyqEr8>C;RBpI#_bb{fSoZ zS?aeTY^sDG_#-@z;q~?>j#nw##c~fnuxEwV-n}(cD__=pNNknNu6%X&oZ_3`+u}pd z*q+ws$Eg&JrS+p{SYNP8(YfUhLIvoU{J@*ln6grIoCvq9Od9|F8M4(8JLG@7Rib4K zIF{BQ;URzEt@oTCDj9?C_u0@9FXRvGDWPdub+avH{J>M~!5#A$KGa&4KS0_X_a~y4 zWy0&CXLp1tXDw(oFQ)FxO`(6Dsn_5KNb+S`%Fwgxy7VHq*B$Z3KqW@eT+PYQ5ijHqu&{^M4aty|@dF=*Pf-mT_<>b} z&W#_0D$hCb1FHs|OHcIXrb5+dx&?mp?BfSJGufX=92wuP%@5l1baq^&Gl|UOuglZg zP8UauP`{ujQz$CdjqqVwSv6=nKBgaQyb&I%M$;|uM|f;cW5C{LhL-VzSXw_nu>FZ( z(sUW~5`N(KS$@^C9zU?Bgr?)8ZiJWc1HZM#&$a}9Fl99;HH&Es-SjMW`i7x@+TS&D zQ*CSc_9vEM!X|SDtN%>5x^9$j%g9#SZ{BB$j%mrMGU{VIjR3~y8y&{9q~UyRCe}SU zKDSmGo<@L$Y|mm{CN@+n#rY|EaQ&wdVAa~0n%JJk#O!&arIsp-@K{%tdewY zv*}PFS~tSu*O^rDY6xGfQedrc{&7 zEji9?df)kkjPWcPYDwoco3_f++WQ{5^RXO1Y|rtn3U&OrJCfC&zN*j7^O&JpHQfUL zx<+hIV`AP4)UpVVrIj$T@YK=T5#F8o^%J>zAwMV0`{R|<;6IU7fj9EWcZ)Om_k8iG+*NnA^RIWs9Id9x#2<;IJcj!s z9Q~F3uVc@?2#@WleF;fp>}`*w^<%iLO{0mA!*9;_#`4+ttF5+o4Qow@;U%+ae}v~T weCSHPt+rw