From abd47153ad47e5c2d5300dcab27ac4628f468ab1 Mon Sep 17 00:00:00 2001 From: avery Date: Thu, 26 Feb 2026 16:28:26 -0500 Subject: [PATCH] Reflection Better, About to delete a lot of stuff --- .../Kernel/Component/Component.cs | 57 ++++-------- .../Kernel/ComponentDocker/ComponentDocker.cs | 69 ++++++--------- .../Kernel/Overhead/Awperative/Awperative.cs | 81 ++++++------------ AwperativeKernel/Kernel/Overhead/Base/Base.cs | 30 +++---- AwperativeKernel/Kernel/Scene/Scene.cs | 3 + .../net8.0/AwperativeKernel.AssemblyInfo.cs | 2 +- .../AwperativeKernel.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/AwperativeKernel.dll | Bin 24576 -> 20992 bytes .../obj/Debug/net8.0/AwperativeKernel.pdb | Bin 19440 -> 18504 bytes .../obj/Debug/net8.0/ref/AwperativeKernel.dll | Bin 9728 -> 8704 bytes .../Debug/net8.0/refint/AwperativeKernel.dll | Bin 9728 -> 8704 bytes 11 files changed, 80 insertions(+), 164 deletions(-) diff --git a/AwperativeKernel/Kernel/Component/Component.cs b/AwperativeKernel/Kernel/Component/Component.cs index 569b538..e4f7652 100644 --- a/AwperativeKernel/Kernel/Component/Component.cs +++ b/AwperativeKernel/Kernel/Component/Component.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Collections.ObjectModel; using System.Linq; using System.Reflection; +using Microsoft.VisualBasic; namespace AwperativeKernel; @@ -37,15 +39,7 @@ public abstract partial class Component : ComponentDocker /// - internal List EventDelegates; - - - - /// - /// - /// - internal Type _type; - + internal Collection EventDelegates = []; @@ -69,23 +63,20 @@ public abstract partial class Component : ComponentDocker /// /// Docker that this spawned in this Component /// Name of the component - internal void Initiate(ComponentDocker __parent, string __name, ICollection __tags) { + internal void Initiate(ComponentDocker __parent, string __name, ICollection __tags, Type __type) { ComponentDocker = __parent; Name = __name; _tags = [..__tags]; - _type = GetType(); - EventDelegates = new List(); for(int i = 0; i < Awperative.allEvents.Count; i++) EventDelegates.Add(null); - - - if (Awperative._TypeAssociatedTimeEvents.TryGetValue(GetType(), out HashSet presentEvents)) { - foreach (Awperative.TimeEvent presentEvent in presentEvents) { - MethodInfo info = GetType().GetMethod(presentEvent.ToString()); - Action newAction = (Action)Delegate.CreateDelegate(typeof(Action), this, info); - EventDelegates[(int)presentEvent] = newAction; + if (Awperative._TypeAssociatedTimeEvents.TryGetValue(__type, out byte eventProfile)) { + + for (int i = 0; i < Awperative.ComponentEvents.Count; i++) { + if ((eventProfile & (1 << i)) > 0) + EventDelegates.Add((Action)Delegate.CreateDelegate(typeof(Action), this, __type.GetMethod(Awperative.ComponentEvents[i])!)); + else EventDelegates.Add(null); } } else { - Debug.LogError("Awperative does not recognize the given type! Perhaps it was created after Start() was called?", ["Type"], [GetType().ToString()]); + Debug.LogError("Awperative does not recognize the given type! Perhaps it was created after Start() was called?", ["Type"], [__type.Name]); } } @@ -106,6 +97,10 @@ public abstract partial class Component : ComponentDocker + public void TryEvent(int __timeEvent) { + EventDelegates[__timeEvent]?.Invoke(); + } + @@ -239,26 +234,4 @@ public abstract partial class Component : ComponentDocker for (int i = 0; i < targets.Count; i++) targets.InsertRange(i + 1, targets[i]._Components); return [..targets]; } - - - - internal ImmutableArray GetAllEvents() { - if (Awperative._TypeAssociatedTimeEvents.TryGetValue(this.GetType(), out HashSet timeEvents)) { - return [..timeEvents]; - } else { - Debug.LogError("Awperative doesn't recognize this type. Perhaps it was created after Start() was called?", ["Type"], [this.GetType().Name]); - return []; - } - } - - - internal ImmutableArray GetAllGlobalEvents() { - if (Awperative._TypeAssociatedTimeEvents.TryGetValue(this.GetType(), out HashSet timeEvents)) { - foreach (Awperative.TimeEvent timeEvent in timeEvents) if (!Awperative.globalEvents.Contains(timeEvent)) timeEvents.Remove(timeEvent); - return [..timeEvents]; - } else { - Debug.LogError("Awperative doesn't recognize this type. Perhaps it was created after Start() was called?", ["Type"], [this.GetType().Name]); - return []; - } - } } \ No newline at end of file diff --git a/AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs b/AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs index 9ce1306..837a7b9 100644 --- a/AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs +++ b/AwperativeKernel/Kernel/ComponentDocker/ComponentDocker.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Collections.ObjectModel; using System.Linq; using System.Reflection; @@ -60,45 +61,22 @@ public abstract class ComponentDocker internal void UpdatePriority(Component __component, int __priority) { //add ownership enforcement/method - foreach (String tag in __component._tags) _taggedComponents[tag].Remove(__component); - foreach (Awperative.TimeEvent timeEvent in __component.GetAllEvents()) { Awperative._TimeBasedComponents[timeEvent].Remove(__component);} - _Components.Remove(__component); + foreach (String tag in __component._tags) _taggedComponents[tag].Remove(__component); _Components.Remove(__component); __component._priority = __priority; - foreach (String tag in __component._tags) _taggedComponents[tag].Add(__component); - foreach (Awperative.TimeEvent timeEvent in __component.GetAllEvents()) { Awperative._TimeBasedComponents[timeEvent].Add(__component);} - _Components.Add(__component); - } - - - /// - /// Chains an event to all children, NOT MEANT FOR UPDATE OR DRAW ETC, JUST CREATE AND DESTROY - /// - /// - internal void TryEvent(Component __component, Awperative.TimeEvent __timeEvent) { - __component.EventDelegates[(int)__timeEvent]?.Invoke(); + foreach (String tag in __component._tags) _taggedComponents[tag].Add(__component); _Components.Add(__component); } //internal void TryEvent(Component __component, Awperative.TimeEvent __timeEvent) => __component.TryEvent(__timeEvent); + - - /// - /// Chains an event to all children, NOT MEANT FOR UPDATE OR DRAW ETC, JUST CREATE AND DESTROY - /// - /// - internal void ChainEvent(Awperative.TimeEvent __timeEvent) { - - if (this is Component dockerComponent) { - - TryEvent(dockerComponent, __timeEvent); - foreach (Component component in _Components.ToList()) { - component.EventDelegates[(int)__timeEvent]?.Invoke(); - component.ChainEvent(__timeEvent); - } - } else Debug.LogError("Please do not call chain event on anything besides a Component! It is meant for Create() and Destroy()"); - } + internal void ChainEvent(int __timeEvent) { foreach (Component component in _Components) { component.TryEvent(__timeEvent); component.ChainEvent(__timeEvent); }} + + + + @@ -110,47 +88,50 @@ public abstract class ComponentDocker /// /// Arguments to construct the Component with /// Type of Component to instantiate - /// - public __Type Add<__Type>(IEnumerable __args, string name = "", ICollection tags = null) where __Type : Component { + /// s + public __Type Add<__Type>(object[] __args, string name = "", ICollection tags = null) where __Type : Component { - if(name == "") { name = typeof(__Type).Name; } + Type newComponentType = typeof(__Type); + + if(name == "") { name = newComponentType.Name; } if (tags == null) tags = []; //Component does not have a constructor that matches the given args - if (typeof(__Type).GetConstructor(__args.Select(x => x.GetType()).ToArray()) == null) { + if (newComponentType.GetConstructor(__args.Select(x => x.GetType()).ToArray()) == null) { Debug.LogError("Component cannot be constructed with the given arguments", ["Type", "Args"], - [typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]"]); return null; + [newComponentType.ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]"]); return null; }; Component newComponent; + //Tries to instantiate Component, and sends a fail call if an issue occurs. - try { newComponent = (__Type)Activator.CreateInstance(typeof(__Type), __args); } + try { newComponent = (__Type)Activator.CreateInstance(newComponentType, __args); } catch { Debug.LogError("Component creation failed!", ["Type", "Args", "Docker"], - [typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null; + [newComponentType.ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null; } //If Component is null do not add if(newComponent == null) { Debug.LogError("Activator created Null Component", ["Type", "Args", "Docker"], - [typeof(__Type).ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null; + [newComponentType.ToString(), "[" + string.Join(", ", __args.Select(x => x.ToString())) + "]", GetHashCode().ToString()]); return null; } //Add to docker and initialize the new Component _Components.Add(newComponent); - newComponent.Initiate(this, name, tags); - foreach (Awperative.TimeEvent timeEvent in newComponent.GetAllGlobalEvents()) { Awperative._TimeBasedComponents[timeEvent].Add(newComponent); } + newComponent.Initiate(this, name, tags, newComponentType); - newComponent.ChainEvent(Awperative.TimeEvent.Create); + newComponent.TryEvent(4); + newComponent.ChainEvent(4); return (__Type) newComponent; } @@ -531,13 +512,13 @@ public abstract class ComponentDocker [__component.GetHashCode().ToString(), __component.GetType().ToString(), GetHashCode().ToString()]); return; } - __component.ChainEvent(Awperative.TimeEvent.Destroy); + __component.TryEvent(5); + __component.ChainEvent(5); foreach (string tag in __component._tags) UnhashTaggedComponent(__component, tag); __component.ComponentDocker = null; _Components.Remove(__component); - foreach (Awperative.TimeEvent timeEvent in __component.GetAllEvents()) Awperative._TimeBasedComponents[timeEvent].Remove(__component); } diff --git a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs index 5a4a635..ae6b605 100644 --- a/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs +++ b/AwperativeKernel/Kernel/Overhead/Awperative/Awperative.cs @@ -111,24 +111,22 @@ public static class Awperative foreach (Type type in Assembly.GetCallingAssembly().GetTypes()) { if (type.IsSubclassOf(typeof(Component))) { - List presentEvents = []; + byte eventProfile = 0; + List debugProfile = []; - foreach (TimeEvent timeType in allEvents) { - if (type.GetMethod(timeType.ToString()) != null) { - presentEvents.Add(timeType); - Debug.LogState("Found Event Method " + timeType); + for(int i = 0; i < ComponentEvents.Count; i++) { + if (type.GetMethod(ComponentEvents[i]) != null) { + eventProfile |= (byte)(1 << i); + debugProfile.Add(ComponentEvents[i]); } } - Debug.LogAction("Evaluated Component! ", ["Type", "Time Events"], [type.Name, "[" + string.Join(", ", presentEvents.Select(x => x.ToString())) + "]"]); - _TypeAssociatedTimeEvents.Add(type, presentEvents.ToHashSet()); + Debug.LogAction("Evaluated Component! ", ["Type", "Time Events", "Profile"], [type.Name, "[" + string.Join(", ", debugProfile.Select(x => x.ToString())) + "]", eventProfile.ToString()]); + _TypeAssociatedTimeEvents.Add(type, eventProfile); } } - - foreach (TimeEvent timeType in globalEvents) - _TimeBasedComponents.Add(timeType, new SortedSet(_componentSorter)); } @@ -140,56 +138,25 @@ public static class Awperative Base = new Base(); Base.Run(); } + + //Load, 0 + //Unload, 1 + //Update, 2 + //Draw 3 + //Create, 4 + //Destroy, 5 + + // 0000 0000 + // + + + internal static ReadOnlyCollection ComponentEvents = new(["Load", "Unload", "Update", "Draw", "Create", "Destroy"]); /// - /// + /// List of all type of components and the associated time events + /// Each event is a 0 or 1 based on true or false, stored at their index in the byte /// - internal enum TimeEvent - { - Create, - Destroy, - Load, - Unload, - Update, - Draw - } - - - - internal static ImmutableHashSet allEvents = [..Enum.GetValuesAsUnderlyingType().Cast()]; - internal static ImmutableHashSet globalEvents = [TimeEvent.Load, TimeEvent.Unload, TimeEvent.Update, TimeEvent.Draw]; - - - - /// - /// List of all type of components and the associated time events - /// - internal static Dictionary> _TypeAssociatedTimeEvents = new(new TypeComparer()); - - - internal class TypeComparer : IEqualityComparer - { - public bool Equals(Type __a, Type __b) { - return __a.Equals(__b); - } - - public int GetHashCode(Type __type) { - return __type.GetHashCode(); - } - } - - - internal static Dictionary> _TimeBasedComponents = []; - - - - /// - /// How Priority is sorted. - /// - internal readonly static Comparer _componentSorter = Comparer.Create((a, b) => { - int result = b.Priority.CompareTo(a.Priority); - return (result != 0) ? result : a.GetHashCode().CompareTo(b.GetHashCode()); - }); + internal static Dictionary _TypeAssociatedTimeEvents = []; } \ No newline at end of file diff --git a/AwperativeKernel/Kernel/Overhead/Base/Base.cs b/AwperativeKernel/Kernel/Overhead/Base/Base.cs index 5465e3a..b3974c8 100644 --- a/AwperativeKernel/Kernel/Overhead/Base/Base.cs +++ b/AwperativeKernel/Kernel/Overhead/Base/Base.cs @@ -22,7 +22,15 @@ public sealed class Base() : GameWindow(GameWindowSettings.Default, new NativeWi /// LoadContent() is called when the program starts; right after Initialize(). Override Load() in scripting tools or use hooks to call from this event. /// /// It is recommended to load content during LoadContent() - protected override void OnLoad() { foreach (Component component in Awperative._TimeBasedComponents[Awperative.TimeEvent.Load].ToList()) component.ChainEvent(Awperative.TimeEvent.Load); base.OnLoad(); } + protected override void OnLoad() { foreach(Scene scene in Awperative._scenes) scene.ChainEvent(0); base.OnLoad(); } + + + + /// + /// EndRun() is called if the program closes. Override Terminate() in scripting tools or use hooks to call from this event. + /// + /// This event may not trigger if the program is force closed. + protected override void OnClosing(CancelEventArgs __args) { foreach(Scene scene in Awperative._scenes) scene.ChainEvent(1); base.OnClosing(__args); } @@ -32,9 +40,7 @@ public sealed class Base() : GameWindow(GameWindowSettings.Default, new NativeWi /// Update() is called every frame; before Draw(). Override Update() in scripting tools to call from this event. /// /// Hooks are unable to receive both Update() and Draw() - protected override void OnUpdateFrame(FrameEventArgs __args) { foreach (Component component in Awperative._TimeBasedComponents[Awperative.TimeEvent.Update].ToList()) component.ChainEvent(Awperative.TimeEvent.Update); base.OnUpdateFrame(__args); } - - + protected override void OnUpdateFrame(FrameEventArgs __args) { foreach(Scene scene in Awperative._scenes) scene.ChainEvent(2); base.OnUpdateFrame(__args); } @@ -42,19 +48,5 @@ public sealed class Base() : GameWindow(GameWindowSettings.Default, new NativeWi /// Draw() is called every frame; after Update(). Override Draw() in scripting tools to call from this event. /// /// Hooks are unable to receive both Update() and Draw() - protected override void OnRenderFrame(FrameEventArgs __args) { foreach (Component component in Awperative._TimeBasedComponents[Awperative.TimeEvent.Draw].ToList()) component.ChainEvent(Awperative.TimeEvent.Draw); base.OnRenderFrame(__args); } - - - - - - /// - /// EndRun() is called if the program closes. Override Terminate() in scripting tools or use hooks to call from this event. - /// - /// This event may not trigger if the program is force closed. - protected override void OnClosing(CancelEventArgs __args) { foreach (Component component in Awperative._TimeBasedComponents[Awperative.TimeEvent.Unload].ToList()) component.ChainEvent(Awperative.TimeEvent.Unload); base.OnClosing(__args); } - - - - + protected override void OnRenderFrame(FrameEventArgs __args) { foreach(Scene scene in Awperative._scenes) scene.ChainEvent(3); base.OnRenderFrame(__args); } } \ No newline at end of file diff --git a/AwperativeKernel/Kernel/Scene/Scene.cs b/AwperativeKernel/Kernel/Scene/Scene.cs index 58c9d56..6915962 100644 --- a/AwperativeKernel/Kernel/Scene/Scene.cs +++ b/AwperativeKernel/Kernel/Scene/Scene.cs @@ -1,3 +1,6 @@ +using System.Collections.Generic; + + namespace AwperativeKernel; public sealed partial class Scene : ComponentDocker diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs index 408b563..1c415ff 100644 --- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs +++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("AwperativeKernel")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+abccecd29531912f8bab0e06c70666b1a8d88ceb")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+32fdae32482131f6e177956aee0f9ddcdf9877cf")] [assembly: System.Reflection.AssemblyProductAttribute("AwperativeKernel")] [assembly: System.Reflection.AssemblyTitleAttribute("AwperativeKernel")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache index d21f970..d42d723 100644 --- a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache +++ b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.AssemblyInfoInputs.cache @@ -1 +1 @@ -eaefd8ded26140e2f41a812ea39f0e84a94c9d2484a5baede0586b90e9c4efcb +22a4163440a667e1fc9f683e846ca5e0db424c2a4e8629dde601d67fa1038af8 diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.dll index b7fb2e942c5ae63e84a5795499c1fad72d0a3908..f7d5ab880b308dca136f294676735d6390e299f2 100644 GIT binary patch literal 20992 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

E4jr*)_npJ|u0yA&}C&mqu4{o6^0P?hxo}bQjja zUizI6y=b{+FLkbF%CFJw#xXNPkNePlfDThNHkp`zV!=LISb{3C6S!O;HC{ip3#7*D zr%pvl-Sm*vPj{A49-;foD38!z`jlaMN~Kt4U~=nU0k2VBC{@Wc znow$lJEBs(ARNAm{bsRODpXmi(``m&r9nRnR#s|K*HLF0MgJ6b7#gYao)F7Wj!`sf z-12%+9v$?IACr(VuYivxT5vf=!+I4luY`2e3t=u5{n#ivuG82) z*Q3;EzC?&Br%3!v!IpY@P{TotSM%v8L$nxWB`uS3jg&1?woAE3$^%lSQEHS$Y0(JE zsT9CLvYSG>dUrX&;t7+k_X2R;D`)Q3aL`&!|?GK=S zi+&TOwY}zTNI>^%_W{rQh#R!s#>2oc%`NmR9b;)LBTrywyCCvSS|?+z6Z&W9Y5gI( zMf-;JFg-)F%-^Eq`Z`(}`2)2HWt&j831&q5r|{)kn{aNUSM?pJ^N1^ia=X;A-wx)q zPSN5ZC~wiW(@tw2e!0WCY!|(@gXV6nS7>?#pVdAP`I1%;KDTR+>d$JQ(w>hzkG@Tz zeRNQC-;P$&4}wEjj|k6$Ql6#fBU|*dq}dPAS&^+Ek`$zVoAA6%w75<1?-%;pM5Fgh zuY+`XWFOrDkAFeGLw3P;;O)gz`aS6TEqz40A@U-|Wgk5w<%5F%0&O$T>yK&&Bh|*E z+CSS5)0eanV}|hzd|F9aZEkq3@g?nLd#>?K?L)zZ#)#GwN*OO|+stO;=i24)>Fc1h zgmM$`?}WD*F~K}8R(jGOeQo%C#@C?fgBYb<#(FIHRpWlzXMMvspnW*<9it%HecPw6 z5C6=_V%&d4IX7&XzY+f~08Ln5tZm1s>v7S7t*z0&Xg>;1Gyg^Vvc16kJ}kBlTd(QC zR&#;S1oe&Kon}mDITu5=4)byG?%2BC)_6@?tnpfOi?-W2W4v%vGm5ho*Y}~Gz}f00d!An&rT=bUO4rh_>;`zjL|H`@C}+|Vl$X#- zlqt%iTu!&3TuXPLY^D2AZWDY5$_>Kpvp8@4!oEaf{w;pV{9C1-_Dja}Nd1hIpOx|% zzvR}ROa12>*EOBFX*$>ENqwHwH`t87UdmA^KO^Oakl>~KjFeAH`Kpu@=GKIi8>F01 z=jaDGC5E*nT9@{5?ep4CwAZxXX;pecU!phayYy@Hyna^yg&sAoF!mUSj6vgL#vR6A z8x`gu^Q6h^gn{#siPNoxOhR=5Amm*K0w9RKw{wVl$l&s{qm1Hoq~kO*1?4nkQ5`w73gu-uQETwzRMgkuJgw2?D0Q5`r=#A1l7IU*6Xiaf zq&2zh z;>wYKL6rEFC-iinr*E-!>(_L3EpO~pWxO(mkcb(& zULn)lktv{lWjf!lYVF&zdB(I44h|Q1=oZgQk1!%vSl&dNhjTsGH&I(wBuINB0ANL0 zx5Mon9>}bxj*)yJGuY6+3wK!EY_1|^OvHS{7AWs!duY4cSFE<=^BJ#Dgm&e&yXjtP z>FuRWIhLZA`Z9&C_Pm%EP<|Y=uGFypXjj+9bk9*-4R6k726|~7#@L)4$m~oHW+pdo zOy@6xZO`u=&gH;jatEK=?sTDlawD7C&1G_hHn-MM{HoYT)%Ruw-D5?(Ke<&4Mpu=tu06vUZ=?w1**P#Dt5#GIV1dCt z#2W{Ts3H{^788MOSoDnVptj6FrVnbs0og*9E8?BLjJMHqkBi0ORG?uKRZ-Ee>KsL| zrYCa&RJ|<)yz1y427RfvkNsPMeD*S1OSF@Q93$t^2D=AFIv*r3Om1w?9d^CJG$*F?z`If*%^uG74SPa2#$<2ia7X%ZrZBP>NhCjp zSGEx1y_tdZjZ!OXFG{xCL;C3{jCCwFNcPK(j5YZ2BltqLJ3Ejql(lXgQC_(!JusZ1 zPHzOUqUy}h^Xtc?wdME_l5-(@EJHgGX~@MKaD-Ge+}*C5@1tl7_g3Oi<=Z5b~IGB#4nz<_TIt||L+ zZ6a|)FOVE=P%M)kR0hMk;)??Pc{$`sir%gL*@0d!lY?=4(gOn>*}fcYb+bA0ZReYz zM}mi~*dmLUZ$uv`rkBiNe|2SUZmt&-*v-+V8+$TCQrk6@$#rgPxH_Bbb&tc+4Tz*c zP{3a#LFHvST~gVcrv$2l-5F1+llr!0@<$8qP|?8Kv$-2YSY}kVkci(V;#j=#RAUHP z+C5fvljpgfuc@jRcNNIJY(IZNV2CYoEX}nB&dey~;ajF`Nh-=)j8SY2GM+osk@1dY zdouZn%`7=5v{JiDO)wruN}i=)SLa1_Nye(`ua=^Hu?|{J&w1K(jMrH|(dOYSnUty{ zCK_Wf)4&`niE%ASP6o?Ag!7V!=BXP(4wr=+K;`uh{*z}N*|J0tBbt~ zL@oFg-i%YH%X?bMKRfx4KU;<{hkKDYIvE-Zka2-Q9sTZcoD5s?rOYThVQ^E=Vkm6O zjBo_EBJ&`+I5G3mDpTvmOwTZfTnX8d8^Mmj-}sO_)V1k`;WV#6TyM{1iV&-^+snEh zH}O`t1gQN{3GC_`Dw1s)90D=X=u<6p9IuiyV3du>3u>~!0T$J?(_TQP%q#LlKIU;eK(#SXwtwiudHx74w#`H;mM$97bWRfd=xor+upmLDtP#4?2#`Qwr|%@l?MFvBo0|qvV9f^W$PZ$TN@Bcxsi1 zCi`X{I8bdTxbfHt{Ou@53D1r^{vc&H?9WlGd_~5!uqEdQG7cd{Eu#j!-`|KDTZQA6 zD)yo8Kp8XytV)CwYy&s;9aXf7hkg8%HjJ3Zh&&dj?$__0`7d?-y&GN$wiB2dZ`YzzU@EILo3!|z*yzL7)cEK}WTYx`Fj9Q>6U z-lD}fu_VHYMT~~*Ks*t5^msy#RBGDnIT(6Gn?puOi!x$r>;ND}+Zgze7LVYc1BtmI z9sy6rK}1NDpxISqh5*~P!91O6TM;4xyadDA?}4QH9KwIN z($=F<82ykI#l`ll_@3FbEW9d)_AtjR2s{VB$2N6n@7Ts{u)`S2Kw;K{$3$BQ28JtM z#4t9buc9g~VuP#SjQ`(&;RA8Uz3Fm5(4Z7(2l;u)}9*A;xPpo36(0u5zt_08&QNeUImT**d)-y%26)0*-?(LB4>z% zI39f?${ieZ(4w=M7Cm5do+BJE2?zE^z$SROcEF~s#T%8l3B9^fGm3%ZOF9QHn6&r` z$CgNrC&Z}n1bn2dTSaj@I6J<_iSOY#2+#9mL?m-O!xVe)ZbQf9QS;{{M6a#%MTVX{ zQ`A6nG!y?fj3}rPm^_IsGN2~rmjT0%-VVNDDC@_zgI^#(0HC=)`w4O}5kj^SvsZ=C zX`ZO26+aya!Vh@FPX{HKZ-C;W3RlntcKZ}RVx#xMdXD2DYimnIfE&f*4k06#hH z@Nkls(6|8KCEURF;@lA7q!W)+ButdB&kijb-@^?Fo2TyqmGdN{Fjmb|j(PNpCnR~Y zqA-HvR5Y@aXU|e>oJI`+iBRFGhB*?k8Z{m&43PaGC~0CYoIQ{>qm^+ds3HIukOHG- z6tHom8-xL4r2^WDBCQ~%lv-4uK%<7gE3h%HUO9(?fEYiA!h%tCI0XN%6f_~WAfCfj z4TJeI^6yyijhcj|0&hb&_Eq%j2q_bDfZ-4Yz(uO?Uwjtkh!&rPmm(rZf-B;ZAn>XN zo;vg7=>$8Xs`JcawwDanzZFq3eUktF=ZJUb@oJ4QW`#I>i5={Yc#E4=cdk9*UR9f zx5U2$y8Kvk15DK!tu9?~`Y(6*0@~po2~bSMFDNHoM&U>58U@si8sSH(_A>lD9sh`y zYt$e>YI)P)-gIVp(~9P%Wy_ZxUX@w4di9!>tJ0ZFEy*<5$*EFwQ-GjZGsX-Y? zt3IfVN*xva=4b5ltu24^25CEX>p+d-JJgTw*0FZ(RE6)Q_`Zds*;Pc&)$x< zj@f_v);*6d+rRNE&%Jv0eeJ{Nna9$8cQCUweGK>DOL2?Jw|e=dV-_f@s%yN-2)Fyl zQZdfbT&4gMPNHZS>g}eED_fdYt|DKAub%KlU^Ndny>a&J*B8GK{o9`871=SF4{$v( z2A9{0|NA6`!@1vU8yMJuO92|p_rUWRxj~fH3k$(yqB+WW{U@mN?{?*H3P#5Z!!b{U zNSlObx-0SBkCt9}gUlGN^Unycq7J;*z6!hAy{NV0|FpFea68J)>i@b$Pno|yuijzv z2>ek`9Kq$od7Wdg{L==2->CCxb+f-WZpXg&F!rzfSwP&YQ+B&K>}>f&%=>jdzpKw9 z=GVYfgG{{ZRXh2~oIWEojnG^DTY)!;umN`5_|? zKpOsR6&}Sg)efAmE%@YGF6(>Y)ri!jl`L_UjFd0acNxwJjioP-&A(k>i}3{sOU0*} zF%ACIm<>2n@QI#3Nq9%YnGdg~gbSZ=hF}lYqz`AS0%#KW?v*j|e|!-dz3L zfBv-X%EwlIP-moGoXUDI+L#u9niqzn57JV|Kc2@#3y#?@MayyGIxJ_ZjMP_9Gce0g zUk3at=&+1dV9`Q c*q{GFpX=4%2@S~KIQ<9l{QqqJpRvII0esooApigX literal 24576 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 diff --git a/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb b/AwperativeKernel/obj/Debug/net8.0/AwperativeKernel.pdb index 390174190db604415ae7006762004271300b8e73..33d249e5d91392734a40944dbda88b8d33857584 100644 GIT binary patch delta 5620 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 delta 6613 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 diff --git a/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/ref/AwperativeKernel.dll index 9c2280bf1bec5ec8363d439652174257d6ee6030..7ca0f88623ea83f511720c0b34789312da4310fe 100644 GIT binary patch literal 8704 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 literal 9728 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 O@+-3Uj+y^g5%_P1TZQHT diff --git a/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll b/AwperativeKernel/obj/Debug/net8.0/refint/AwperativeKernel.dll index 9c2280bf1bec5ec8363d439652174257d6ee6030..7ca0f88623ea83f511720c0b34789312da4310fe 100644 GIT binary patch literal 8704 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 literal 9728 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 O@+-3Uj+y^g5%_P1TZQHT