From 205b4d70718cd8e7d46c1caad6bf85674608d4bb Mon Sep 17 00:00:00 2001 From: AlexCube Date: Wed, 30 Sep 2026 10:48:20 +0300 Subject: [PATCH] =?UTF-8?q?1.4.3:=20=D1=81=D0=BF=D0=BE=D0=BB=D0=B7=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20FPS=20=D0=B8=20=D1=82=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D1=82=D1=83=D1=80=D0=B0=20=D0=BF=D0=B8=D1=80=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=D0=B4=D1=8B=20-=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=201.5.1=20=D0=BD=D0=B0=20=D0=B8=D0=B3=D1=80=D1=83=203.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В 1.4.2 (игра 3.2) оставалась та же утечка, что чинилась в 1.5.1: шкала некромантии fill="{% cvar('necroNecromancyProgressCVar') / 20 }" набирала по одной отслеживаемой переменной за кадр (ошибка игры в BindingNcalcFunctions.cvar / BindingInfoNcalc.RegisterVariable; в 3.2 эти классы совпадают с 3.3 построчно). CVarBindingLeakPatch - без изменений из 888cf1e. Пирамида Ереси при Texture Quality ниже Full: CustomBlockPaint берёт мип под размер атласа, бандл necroatlas - пересобранный с ignoreMipmapLimit (оба из 888cf1e). Сборка: игра на машине уже 3.3, поэтому DLL собрана против справочной сборки 3.2, сгенерированной из декомпиляции 3.2 (только метаданные). Проверка метода: пересборка нетронутой 1.4.2 дала те же 1049 ссылок на внешний код, что и опубликованная DLL; в 1.4.3 добавилось 9 ссылок, все есть в DLL 1.5.1, собранной против настоящей игры. В игре 3.2 НЕ проверено. Co-Authored-By: Claude Opus 5.5 --- HarmonySrc/CVarBindingLeakPatch.cs | 42 ++++++++++++++++++++++++++++ HarmonySrc/CustomBlockPaintPatch.cs | 21 ++++++++++---- ModInfo.xml | 2 +- NEXUS_CHANGELOG_1.4.3.txt | 4 +++ NEXUS_FILE_SUMMARY_1.4.3.txt | 1 + NecromancerHarmony.dll | Bin 122880 -> 123904 bytes NecromancerHarmony.pdb | Bin 37588 -> 38304 bytes README.md | 8 ++++-- Resources/necroatlas | Bin 347215 -> 347216 bytes 9 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 HarmonySrc/CVarBindingLeakPatch.cs create mode 100644 NEXUS_CHANGELOG_1.4.3.txt create mode 100644 NEXUS_FILE_SUMMARY_1.4.3.txt diff --git a/HarmonySrc/CVarBindingLeakPatch.cs b/HarmonySrc/CVarBindingLeakPatch.cs new file mode 100644 index 0000000..133b754 --- /dev/null +++ b/HarmonySrc/CVarBindingLeakPatch.cs @@ -0,0 +1,42 @@ +using HarmonyLib; + +namespace NecromancerTome +{ + /// + /// Утечка в самой игре, на которую наступала шкала некромантии в поясе (1.3.0+, + /// fill="{% cvar('necroNecromancyProgressCVar') / 20 }" в Config/XUi_InGame/windows.xml). + /// + /// Найдено 28.09 замером (NecroProfiler): FPS 60 -> 30 за 10-15 минут в любом мире, в теле; + /// группа окон toolbelt росла 2 -> 23 мс/кадр при неизменных 573 элементах; в режиме змеи пояс + /// скрыт - и тормозов нет; перезаход в мир сбрасывает. + /// + /// Механика (декомпиляция 3.3): BindingNcalcFunctions.cvar при каждом вычислении выражения + /// регистрирует НОВЫЙ VariableStateCVar, а BindingInfoNcalc.RegisterVariable добавляет его в + /// список без проверки. Новая переменная начинает с 0; если шкала не пуста, её RefreshValue в + /// следующем кадре видит «изменилось» -> выражение пересчитывается -> cvar() добавляет ещё одну. + /// Плюс одна переменная за кадр, пока CVar не 0, и каждый кадр обходится весь список. + /// + /// Лечение: одну и ту же CVar в одной привязке регистрируем один раз. Значение cvar() берёт + /// прямо у игрока, так что отслеживающая переменная нужна только одна - для «изменилось». + /// + [HarmonyPatch(typeof(BindingInfoNcalc), nameof(BindingInfoNcalc.RegisterVariable))] + public static class Patch_BindingInfoNcalc_RegisterVariable_CVarLeak + { + public static bool Prefix(BindingInfoNcalc __instance, BindingInfoNcalc.VariableStateAbs _var, ref bool __result) + { + if (!(_var is BindingInfoNcalc.VariableStateCVar added)) + { + return true; + } + foreach (BindingInfoNcalc.VariableStateAbs existing in __instance.variables) + { + if (existing is BindingInfoNcalc.VariableStateCVar known && known.cVarName == added.cVarName) + { + __result = true; + return false; + } + } + return true; + } + } +} diff --git a/HarmonySrc/CustomBlockPaintPatch.cs b/HarmonySrc/CustomBlockPaintPatch.cs index bd5d84b..5ec8cf6 100644 --- a/HarmonySrc/CustomBlockPaintPatch.cs +++ b/HarmonySrc/CustomBlockPaintPatch.cs @@ -269,7 +269,15 @@ namespace NecromancerTome return -1; } - if (ours.width != src.width || ours.height != src.height) + // Качество текстур ниже Full уменьшает атлас игры вдвое/вчетверо (Half: 256 вместо 512). + // Раньше тут был пропуск - и пирамида оставалась без текстуры (28.09, игра на Half). + // Наши уменьшенные копии уже лежат в мипах: при Half берём с мипа 1, при Quarter - с 2. + int mipOffset = 0; + while (mipOffset < ours.mipmapCount && (ours.width >> mipOffset) > src.width) + { + mipOffset++; + } + if ((ours.width >> mipOffset) != src.width || (ours.height >> mipOffset) != src.height) { Debug.LogWarning("[NecromancerTome] CustomBlockPaint: " + label + " size mismatch, " + "atlas is " + src.width + "x" + src.height + " but ours is " + @@ -283,11 +291,11 @@ namespace NecromancerTome " - skipped"); return -1; } - if (ours.mipmapCount != src.mipmapCount) + if (ours.mipmapCount - mipOffset < src.mipmapCount) { Debug.LogWarning("[NecromancerTome] CustomBlockPaint: " + label + " mip mismatch, " + "atlas has " + src.mipmapCount + " but ours has " + ours.mipmapCount + - " - skipped"); + " (from mip " + mipOffset + ") - skipped"); return -1; } @@ -303,11 +311,14 @@ namespace NecromancerTome // GPU-side copy: the game's arrays are non-readable, so nothing can be pulled back // to the CPU. CopyTexture moves whole slices with their mip chains. for (int i = 0; i < slice; i++) Graphics.CopyTexture(src, i, grown, i); - Graphics.CopyTexture(ours, 0, grown, slice); + for (int mip = 0; mip < src.mipmapCount; mip++) + { + Graphics.CopyTexture(ours, 0, mip + mipOffset, grown, slice, mip); + } target = grown; Debug.Log("[NecromancerTome] CustomBlockPaint: " + label + " grown from " + slice + - " to " + (slice + 1) + " slices"); + " to " + (slice + 1) + " slices" + (mipOffset > 0 ? ", ours taken from mip " + mipOffset : "")); return slice; } diff --git a/ModInfo.xml b/ModInfo.xml index 9f6a970..e355626 100644 --- a/ModInfo.xml +++ b/ModInfo.xml @@ -4,6 +4,6 @@ - + diff --git a/NEXUS_CHANGELOG_1.4.3.txt b/NEXUS_CHANGELOG_1.4.3.txt new file mode 100644 index 0000000..ad69f32 --- /dev/null +++ b/NEXUS_CHANGELOG_1.4.3.txt @@ -0,0 +1,4 @@ +FIX: the frame rate no longer sinks during a session. Before, FPS went from 60 down to 15-30 within 10-15 minutes of playing, even standing still, and only reloading the world brought it back. Thanks to Megaladon43, sanovskiy and zomb1 for the reports and tests. +The cause is a bug in the game's own UI bindings: an expression that reads a CVar registers one more watcher each time it is recalculated, and a fresh watcher triggers a recalculation again the next frame. The purple Necromancy progress bar above the XP bar (added in 1.3.0) hit exactly that, so it gained one watcher per frame and the game walked the whole growing list every frame. The mod now registers a CVar watcher once per binding. +FIX: the Pyramid of Heresy is textured again when Texture Quality is set below Full. On lower settings the game's block atlas is smaller than the pyramid texture and the mod used to skip it. +This is the same fix as in 1.5.1, brought to game 3.2. Drop-in over 1.4.2, saves carry over. For game version 3.2 only; for game 3.3 use 1.5.1. Single-player. The mod ships Harmony libraries, so EasyAntiCheat must be off. diff --git a/NEXUS_FILE_SUMMARY_1.4.3.txt b/NEXUS_FILE_SUMMARY_1.4.3.txt new file mode 100644 index 0000000..43400ac --- /dev/null +++ b/NEXUS_FILE_SUMMARY_1.4.3.txt @@ -0,0 +1 @@ +FPS fix for game 3.2: the frame rate no longer sinks over a session (a bug in the game's UI bindings, hit by the Necromancy bar since 1.3.0). Pyramid of Heresy textured again below Full texture quality. Drop-in over 1.4.2. diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index c2e2a0628a8adb31abccecb3a599b55370eac83d..c52439f3e405bc8b71b40995cbc594feaec4ed21 100644 GIT binary patch delta 45038 zcmcG%2Y6J~)&{)KnVB;sg-ps!+9Z>ZghMhD(g+;_geD!8j)H)QhzCxh5ub^pP2;p`@a8q{^!pl`|MTrT5GSpc0K!y z?N7VgpL4Ihs8s#EZJ)6J-WR3e6s1Op1BwuuM4tNJb$3io&-$+-#xp_{Z#dSKWTl2x zkqX4MKP%z{t3-`h)0A$$i}s^n80Z7mB}$cY(0WMerhI4}R7&$kKmz@Z#6MNI#J3L# zao1o)C|8&4Q+nM$L7k^4H(3ulW-2$`pXv0g0Lru*kVf5k)fEigy<)M^OUpve4S9*W!_&(lcF>ilO^pTjz?pn75;rON3JPEBz; zj4?v^dSp3_5qP?bi%*`bakl3DKcVUa4g-}s{;(7<}|FuXGFqkM|Yr&2x*NgzwB@@sz0>(}&jz&;FxMZCadiZ)VR%iQ^k@hzxe`Cwi{5H2DFCW8+FpVBk@!UkyYaqccA@p zh42@r{z1D++JClw4fRzrtj3~K;srITm;>%Sa66Wx>nJ`gss=07n4g@Gi6o_}68f@` zV|uD5lJALS1JpRxXFzep?F>!|q#Y~(XAVfwe;!QFRE`9~LKGNTU^o!0^ujoyWKg%t z6}`rbbbvmX>kuY#`PPj^AthivRa6%bLPGAz5x=`UM%m)uPj02B+t*ftE~FW`0Jx?O z(G^7tU^`QcJP>?ZwmyqYO4nrZ+}T{ZvbrT7p5BnBtt1kA#+;mxAIR1}B7^_PaLOMUC{nc}+85B*(iNHl!5l3{3ZjnO zDkY$o#mTmp+sM0)dZkj;>%poTw5}^DW9O8!N#)X{|AHvZ&|-H{ zHQZ)?J{RtfM=HC`BmG3fi|r?m$&TrS;VulveA~$}@CG@9Emg%RJgufujcw>q&UJD` za?I(_XGbX%89Eg;-%21=y%CZ*1_K5KuoUYOS3_(u9AGvTpeA~EkbGLiqZyURMN-T& zf#&F`45p~DDn*>=i)3)dr?~^!Mg(jr?m%s>8jDg1(CEpuYMT}|OA3$aQsx7II|8%P ze96l18j1G+f3%CVI7Kwf>i7VC*ju`fO&_Xwu^KuU68o?65Mv)%_% zXn4Gf;XHJ}oGSDYDxcbEq~6Kof&`hQc909ry-W_d5hH3b$4C(#9b7#Z&dp#A45hXRQk+z6tg2uGw&i9Q~|vgh$*W1 zfc0ZpIRC%Ea1ShRe-Lue4`sL^(0h~@6!!)%O&(elt=@-#fdCE``^*c&=)u;RXXjh1 z%Jbv)4CW|dN11u_tjsrS@xFaY^Tpmg)5O#|CeX=l*Rur5#3EY@8s8FO#3)F@s`?e^w z3pv)_i+qP-?hBfD1QIY&`B{^X=36a=i_-LNjqO$%Pg=gUJkJbPQ#0jf3UerOTp_Hf z%<+sajQ51OM*>(MszxvP1#38S5tEASRmIlwVz2o(Miu+o5L8ZMFr1Q>>0lc{PB9-R zGOs(RqH$m4S!!{lxY`&3#^Q2gC?4F_4!s%K$|6-CMo;S74uJ(4|FsPVuI*_kD34}U zWFOJSqGl~4fGlq(tTB@4qbS+c!GzLU%W=#^SYxyzbYJDC($F!)jN!m(jHMi=6{j(d za+s-|#&~PJUc3M+SiidbUs#Jou+V9n0J0jJh}4*bgvZ6$@yJD0j3ej}PK`n11mGfs z+th(O5jfO}t91lV4EFvu^lPU+*(&JXG`fiKeTESmNnewwSYeSUbDtj+gxCpd>loZJa_Sv483)De-fye^v&2Lb2a*BnR!O zszJjkL=}AR)GjB#Yx?o1Lq#B^LvX5g`NEcYR$f&YTco~K;rMYVnCbCrtz;WA?$*bV z@q3K

U72aX&nW)w^4tNdDlRk>7;{w#)DGJ1<{Ycd^53oC@C7Cs2;IJ94x36kLpj zx@s&S^C=Q&R`AvkHm_sJXvHsdjR`T9R=tQS-WPRaObEtiVfSOBi_BU^7kfMEYk3!~Lt8)`AwoStNw0FasFY8=zyj5_PBXhj`{ zRljO(s>2w$2;7l0)x0|aaF=UOLK2dRXxTctGc=D<@7saODW^RA&QGd?^aj6bEVQ1gD^(U*AJ&!Sp9L8y zfh<>5wdQvjX9LQw4^j3UD_mcr^t^v!eYTp?2FM8A4jFIwB_!b z($*I`-Nw0KiFmPhrb#KHRJQcT6Nf9LEiI7ctvW~ZdyR7dW%(#adb3hI9%BVE$>Rx^ znUw~I#enns@PIdp`x+|=Ou2L(#x$eVYVBFj>tAGn%lw4AOUxC1F9v3>-|IzlalBE4 z&=%OEA|5E@vRvjj)+;>=%Q*&W{ORWJD6RU_Wk7Yw?6Q*L$6oYU8I57(8>_alFwFc_ z{tWYoLi`!VGO%U&GyMtH#f>Gke?1;ypOED-yY!^J;X(LPvgy3{0(yL$SPA(AgV@FbC zzQRDU*AEStDSogn=v5zYLoM2AS<^zh>2?ag{KOR2tC0;dhw(GloWajLb16OBX@Cv3 z(>gF&fW}Hv-f9=P%r0;f7og!an2`M_qk3aNbhfmUW?CV(oJTo|q?Wf(k9Jyu75frJ zXs9OXf48N-X-of%pZTVv7tssMJbo6Mwfqd3L-|=`PT?n3rAsN(j>tr%Nn^RW3K)*v zigNSDPWfG(@*gDg?X;Y$#5T(%yx6RuUVcYA?XXODZ?UB1e2A1AqQ2YFe+w?l;1$8% z07ia&zHFbpa5({I@Umbp2GRs6Z!hMk1dzWMW2p_$EI!Na*_@_%ja5)#T!5s)>;;ux zV=%;;&mb#z$~epL9gJi-%{MxzdLQeCKHYm?NJUp8(a*(Dt7G}2k!1>7X7=v`5vLFi z2HLopgqve2eT(DR<@r@dcDDXE2%w?hB0M9FiTE>511p+HWqT-&_b?*QLDBmH<>e_O zs_4V&>|&JW1F6_0$VDB2suVY8jWvK%>8L7pX$R#}3Q;Dd(ZMf!)y(Yszo;C;#De6$ zyU;v?F`?uxq{v)N7-<%{trBy!Q{0D!Lqz_evZVk2x7vpO?;3T77yn$P1AnLhwn>*+ zd-`?Fy&UFN;Xv#PJh2+V`V}Xv04=3|Nxv!}%cIVU>?)VO7J2lAK`E*Pf#YU~E!uy#^#q|uv--3VA7 z3sXI5fgWlg)ol>j(28tzq=OTSE3{lOc1i2*SHf{zRUPw6o8jexjm?>`o zLS2r{h?3=&QjA+I&!FlB+dwFfIx4E%?x21f07><`u|skiw^Om$9Y~|;TCnv_0)wr0 z;Zb><8aoH=LOyXgxr&uT%-dmwemBVNIC8;=N_Bo8{uy9hHz*iS`Uf(p{xpx{$dIy~ zoj}8eChL%@u`3&@J%QRv&!S^IYCa5Q_CR1Z4T54inPHdN&ExJQDb4Fitv;?W(Iv04 z1~uhmS2fX4)A@Z%zb5Onrm%+jz~Azlb$QdN@v-2s&(o42Z_Wj>^^Jl;GnYIx^3_X<%sp|;3DM#tILq%PJEEd&!Xnxw*@gm#2!LI zo7`l#@Vm@|kY_wh1iZfLAZYp{z+o-^5^A77ioEfdbgivaDH+k`UkXPHg|L!6w#EPH`ID@SV&udQnBN$ zuZNY6$Ku29h@`b)a&S6$8AaXPK8#7O4F(UD(n!YjoTtO_K$QcB94X18k9>2Rb@K2@ z6KJzY??5RcaSDU2+Cwlc%Tt`0=#$S%d0uM@yy@zh*8*mQNtEyqSEw zhShg*s<}pTq=Do11V_Y`O`x@TL~;GIlHLV~uM+gm5;DxJVN{!9KR9R|jve=xBbqaY zbP5xXy8J<_X=EVfbyUkN2fy)#HD_cFf|lStFE*G$$b1(_-t!H0xiZN~24GX!%!CuKiBjk7yax9S4r)U|5AY zhZ@Da(W*Eu>a|ydPYtt{`m?j`80!>SuHn`N$3=O`-%hbg6V4yck>3K|K1V)}M&S`K zpuC;1oz9W})xoran2uv6!qPc1FCiU#^@ElcZIcQAHt>Pk8nef6yo2aK`4UI=4-HSu zNVEu*4EwCk}s#(tK|Gh_gbHO%_^=oQL4R@0d79=qCaSxd*{sAVIpB^PF^ zlSWuu#zd6a){A38!;ZCr4rNPOfo2?l)Yx9wr`D&~sCR*~&tv!V0ih;lLg8>LIyT(* zAo171Kn%(^G#zpJRO3CMQnYAo;>b*Q%Y*2!x-!Y_UU|^^+t{Ls?}Jy>KS0|0A!TD9 zA&uaz5j~BMk$55=H9Nq=km?AiF}w&OU7|@}4Mzu!Pr#F$mERgp4IRI71o!)6hN*me zh`|fCI`a`QzyuU!+dCOH&HM>8{Zo+4Bb1{xK~YM;p3Y|1I|UASD3EaY zLVixHj-zE?&<}}7njnD zb#d!4MQ z_VQ~YZ^vsQd!NOx2lQpAoX4x5jYli-dt$Fr=`63_4it3gZFu%xkC1=|AYRs{?*(TP zh7GXoKp-|aHO1=YEJ2h$L>A0HmJs>r&^#^*;U_YSsu%#crAWof@cQV*}(ko1V8#Y`{2d9@W zoV5{wn>2>j?%3b`2pRfMl(03FV1S??ce{9L$p)r6J;r~4lS^Z#Sc#&esh`9!Ao~*D znTtHneGxYE09wp!SkO3M#jfM*8w`XwWf(rcRau+{Q1EpvF#zS8$l1Urr_Z{hL3hWPtY2ZZOddSuQqrc%)(K8+rAAW! zqO}68XK4k<5whf--Izd+x&Lrl)}0-Bo8XHaFjP3Px@>7oh!(k6)?g$LS^Cb zBDGLIYK@yx*c*4xd;!%^@TlC09WFUT1tMi-pN5oLAx7ukARqjg-OytqJ2sA(a2%WVV(=6wOL2 z+xb)_xYpbPt@)Q_VYV#~sJa79$L3K8U3!a^K0Oe9S=uGFa4+xVHCm`SQAl@DNnNuh zPS1%dFQ|R41Wx4_^ZM0rAiZqF z3e6WSKzHIyX6M@kJ`|CKQ;_2ztD!q2?SrZsG)Ih(sczK~OGU@n2OY*aCrCT666rJq1}n|e#)u`(2_5Z*f^?OKj<+tKksimw-`|F5 z$EjwDBRP{$pG@Is#q8{ao6@D7YX?tl-3N?jbOEBWQSuuZ04ijka|pZ`6qp*4vJ5|{ zQLLd@h!&&rjp?0BW>?~3nziNPJgZ@*pLeskk(r57?PLx&x+-uwCtwsdrQXDQNSuEd zSU6(|l~e6Scc7k)!!AvaTNlqPh+|UK+TayuaB6uwJ;TpIMqNsP0ev&bm2|BN8F75V zU?YpH#Y-;CK0Y5?X=DSHQl(>N$U!cZ>wyJX0D!Dbng%ck&}c^~@Z}=!jlLppx;9#o zSzU3dcEYS?_X*I`A{6VIS;Mk-!~OCgCtHiX1N(3X&pJG-I`vy>7l}E=sy?YKvTQ7! zl?JjoL<~5@r^WW803W}Z+i`%C6QrZm_NRzs8Trs(-qr$^*3ZG6;>H1#qF`6^ zZ$QSENC=}QF$LhaHL_I*b|2mbo)5iv7q=S^jQ6Bb4_W^?sm|>jhl5e`6szXs;NJw4EUy#j$IP9#4#px>vdtp^}ji&4s#XXRbf6;P45 zR{C_OynTbzNw#-IAKNvq0NkVo@CK6NnBtt$A3`MK!VH*CWCSXlI__&iT}8Uf{5gnQ;10UNK4mk`ZPD8o zC^Bd?qc8GU-DrA0WGEN~E#L=oPVNe5Ly*G3rkTINB)8r_!P?`4toh<@oP-lxQWnL&g1Vw>dGI%^{ zW{}0rY%wDi{jsVBKLKsZ;L= z8g9DchO2-foXX(ZjX`JZ*z?OHc87hquJXY*t+4l4E9OT#&b<>S-VVQuPrNf#ul`R+ z=)Dy_=H|@O{47F+2gC0GeOU3mm#fRD58O<*`;T2*mHEQH`ZS$ce;=BRhI06XTuxC**hF>fn~NiAyL#4+g|(?C z0oh8UqpF{5eZ82OZCsduew# z2LsM*ig9_9fZpYISR2I!%%oYEzm$ak0xydzv<@-=ePCT-0j$1=hSp zjpa0@<5i2(pb6Xjklo9*#{zT6@w~u1?s)5|MNQ>2-7_am@a6>2aIi(z|ADh47t-cI z1ASSB&dMtan#TKCv(D(FJYijZMp=A5=)w9f`m>M~&C~P;Nw^<9tcd2(VkG)*py*wR zSKv*in8R*(1h`0+YJLjso!5Ys@+GxA+>`IB^&8RE=<*}pRcrjdJ;hB+zwqE0`ZaMH z!99T*h$=hb52D)6N1fz$1=lG~g`v^2+g1Zt9(7lES{4A2=4C|vnB=RrnUI3rt=BjW zL$a<8!t)@8Xo`XVZU3xaqV z=em5Meg;6g9=#aPx-f^>aZ4u6F@k;N?Hk`~jRbwT<3Yl;5!oB5=*7rd$T8Ryn zpdIaaJaJCyZ)pS4r?tfKNO1>^c0ASWBaT$J$2bpp4^I2s#`(y(ja5iB;{v2<2eaJ~ z+`h9&=6~S^5 zXmmi-e+ma_kd`kOSp`c&S+pdNy0WvJ2aDYL#Q?IL))h+v)|{o?;(t-e_c~XSwh*tO zk~j(StM~%!1W3nA5ejP`Ur$ZJoha%k#wAF&hwx=m+;>ePPeK`a!&K|D3bJq&?_3R6 z@w|~UPxl&ELR9orZ_J_~OOsC{43A(e;xDc;I^m2pY`)t(Jt5O06)#D^7_efHWFBTx!9~BQ5FXvmhRB zKIYUd*SyyH&I~9IS)P^>~<+%9Y9vI2bdzJFP)qg zwOO{0Jo=N?4a>V}H$Vl~KHvImdHM9y5T>@Bg6%|g16u5T=#Qj3WJbRV_8%O9=_H%J zEu>1MINbVU@Hvy*QJ+~g6Fcl42*QK7j&KNo2M#W<&O0j@UkDWreLZAgM(ScNo@MXF z-+dLKO*bL62=;jNsIsHTOg{mMGQb zlsvyA}+Q;{aVpnZXJ4 z7C`iY!u5FmSx&q|jvHLkXdUN~bpH=Adjm=ZY7>>YENL91-v|=j*@}3vQm&-oD8cq{ zlFjY4B|a}D+RzJtXa^Bh>MLoA54LQDFykg9Nk{yc6ynkULHzEPL#SqXi_f~~-2PMY zNxR4IX~Th8;u6K*!Nwhox52ihSioYsQM&X4#KIcAMM`Df%sB0d88EU!8&`Zh`~o;`@I9;3|zb)7|lL zCSaeLGuPU?A~$sr%?y09wS0a0b@pzNxyIVQGS`0w`}Sj$#d#pU-@nV+x3YWIUC`>? zOdn_T8LfcBX;fM{ttIgr$t`Gi?4Kn1ZZIOCo#nB6kW*uyK+x1y%DZhK#qSE#gw5ws z63c~dC~Nkd2PxIa@%Y#KpBS6aZKx2gy!KiMBarp#_afaIOihl~&(DqXEMkkH8dl6F z3_inHNu@j2FW>CXw1VWV48Dipfyy|npq=m6V(1Jd>wYHGH@N!f`_>EpmuR`Yn;4u9Gg-yTM-mr$)EsA2_JBBdRN z{0<++!r$6+<8(UzSGV=Mp#a(?&Ha~0{5+>p?4_Dl!jewk8h5PyGbe+oQ{ZH;x&v4OJQ=L{Tj&TPpH+{6JX60#*@~Q=S2eq(5oA4GIHt*&0Y(zXNo;> z<@v$*PEgX4cgHLc_ysT(psxNSBk)$54g>5DZu8BY(}=CWYdi&P$4XU$%fs%*3tuL_o!@I@QB0{;GMpWL#lIz9z@z#u&( zo#W)|2{kQFrE z^6+~Q2s!-H0?iw=CS8zOg_ld1W6OZRJmA$Fxds-Sz6uNhbPLR(<7iBCVTqL%6EHWUn8Wm)o-m76 z#g&?zDdi89B!8y_`*!156dQ_f_OLJLs`C9j@<=2IUqoS5B;C%q4Vq=a)i=2h=?@*W z$)bS5t+NYr;&%{6h6}5uI|&gL*5a>aH_FS8&sx%Gdu|>AcPo}u&T=!n2w4iAa&sJI zzu@d8l*OvaSsrNpk{-d&{5X z4zg^!D1G;47d?qMqEBwftnNDOk5#k<(WiR0p!_qFf=-~U6ohMX2|>@CY3*HI8vh?8eF;V>Dcd&3 zXC$TcrmQq)8D)=ci@$CJwy=E@+`y+xC&{b|8@{*$*3i36BcH+Wm4G(mQ;i#!&II=E2zraHy5SC7RtgA1o z;ZBx36vcs-I16SuM?@SB3>Te@F-}C>1Lar_75Hf{d-=%^+xy0b2>-I6e zlK8Id-AlSD=UA>aRr(ubLfE{ENSy}W!+<;1y_GFjT2t3VdVLR#S`06zd@(AQ=QiHN zBROP^TPlaF4mmVq#Y8Y>!T-z4P{R_D|jj@#y^ENQPs%1EO z-G>~$Rh32d1ITh#g|Ih$hqClz76*{Qy_a|KsCNca(dbV7Ab{w8I2AuCGcwue7=SbD z6#YFAIaJcTIn|jg*lPy=AG%`0Gh;8bY%H+9@?Mdiws=;w%nI@>qUps$(!F4&zT+>vG{Jr?`%MdiAzg^1bQVEwPc^_ zZ_U44Kj9-_%1xdY(rM}mwo=`Vj~UHFKBEI2=yq!PmQTRYPSKFlegjhUeJsq<#dLK3 zmDUHBm&89MRWz1;hKzB@hOoUx4%U8whyHIQk=o)35|rDMFM&go5FH!mBRTbm0#8u> z1@y0g_GxWj<1yXW_6;7964OMRbUqNj4{+Cxl?M%!--6Tl4oSxkb(toAHBj2Z4XT-^ zBEw$*Pso_m& zcXUP7>b2G%z@o=*rY{45R;;+1R-a-HS!SKIw*2_7(YE+etGq!p>I+WfYuV%-?G(+; zw;lBclwFP{p?%QFau0t1D38&IG}+H(wd;O|HpFqK5eC(EAaF~TbG^pn(WzdQ=EYXw zx=EEkph~Sbqrugd!<4;+vp-VyR?6yhgNS~h=`w5Mx>BW!_4v9fWr_9Kx|%psvT8hH zC)EUhD*s?$u(rx!`~(4k&E}71VY8wh(J-0HS3tpzS_h2(fC*ofLQT{zlDpZ=I~#3( zM8oj<7bSj13EcN1>B0DBa{zcrJZ9&=U?%aB7h>nwtXM+*53H4w)Y$D*Wm$`9)TY`W zkW(eHkvLDmokD6Nt&%~!gOw2ZihOoY(hC>MDt-5ts<}$Xsj)j*^<7Byo+Pv{x%_Nv zuu@|^YK62%AQInR9tJ5i2l zN3OyU^Ia6s^}+!h8%(Zj<>5zWsC@O>^Z#F9|u#-H<0h>I~?NpWkPH8`X+os zdFlGDLz2;#h(db8TNujGQ12ksuO)9`ta6I62^IP0(&mt;xSsgk`tHYEPn1^})2LLU z>L^EVBagGoCmU`p$vL9A=tR?iZ~j#4WO!`>XZA7Vqu{TsQ~5??T*nZL-|}m5LsI*@ zuq&y$I&n4!?u0pid_oGHV)MPqKQWyu!%cOx9tMx93kSOHPozSApm7c=rL-9>2_7 zc;Tu6zwATlfBWn%^oecxRLTlddKRQ<;x%=W<`WIYgsCW@v}=IU+7WP!PwZ(B z;!d#~*7?MnT_`=SAEg%3tA$=8#KYo9FCiZ1)F*lXpD9N7crsfPPe8OLW;-TnnWBgD z$?Vse|6iPHqKWbQqh#EM5=!^waH>+-lT>&mE-qsm#}goWvvqI79|7@D2KnH`LaITK zo2HnRMFZ3XLo&!8+j{J1)Wk~0H)c?Nc3ziSpIEF>D0~IedntETawD=2E<`ua6m8`s z`K<_5GCmn$;S>AVX#<%xn@#c15r-H6r)lEcZe*MfVVWs==G_qTi79=Fn%12#`BfzD zuHHhdQsUf{>6||f`ApF}=N?2)J|aL98_M^Utx}>Yl^x8@A>t_%6hnuXXz8MVeF@s> zLnge+X-W>UK8TseCw6eL6qxuArI`J+fsSItVK)7FbP%7|!0JChyZS`WM*K>$c(v@w z?9Y@rejz?nW(=hC4CM30v~)6hME5xT)a_udK>-KFvn=8ZcFy~7piivGr8I?&7z@z_ z>gkL*0#gdq)7<2tb&h>yS?c^M;_S-xo->eI`m|w`{*%*t>qzBMgn5y;vOh&YuH%b1 zI?TkfOPreUS5xY&y2R-d525N4 zGh8RZ;nksiWtr$~r0f?oYo>TC^kjCaSl2|R+<<66{O^DoO{m?scJqlo5TS|t(N3C} z#9gj#809ZP{d{5=+Eo+JAoP6V9Mn}4e?vY~96(+3#ZHd%Ckv>?pK^yhK9}-GYA9`i z5kAq6JM(FcBw;-yRK!I~w;llU&{{{;SI{;`)en&R#CEinPfUO(G;vQ6`R1#POPrbF z-G<$T5Sm6pb#BFK9uL;CnwPUl4L-p~*;lza*1;Y<(auX9GT(}3u(M)kJgrzd(p7EjNSe!D_Fz9xQb0|#E?}X`jqu3s}$D^AqhPYm_9LzeQ++sVe%m+bNi108fHk9je z6(ZRureX9%%ERpqO*k1*e+Uw0JUr(UVfMtGZ0NJnTyBD|%7mDq%+*nA4e!$_h~7i( zHL-c%K5M}BdGT$z!+Z9`)P>0jzk$9V;~zn)I1kW+>6^31BJW`6-4H<<{@(*c`<@|> z@G!Knf@nTWcSK7oCnybbDM2r$5!3}15VXZ3p)7`8h}&ScWF0JtISl<4ASfTbmqVC6=%TZU7)L1H%3{=uGU!Z$-CGbM#+L&XAy2H4PP z49yt4InKn>8T57~)=_wIL#o*h_ zdXadVp%ZLq7ei4SdWNA7yOYq1#Ip>Y!lrE!|77S8*KiX)JR}u2vq!HLuQPNyLtDff z48>SVe2aLK!9D#*=oaxWhMp@R=thBUFFMAv=wf5VP57SRdioQ$*KNb$CD8f2%tk@<#!6=y_?m?d)D{d2? zF%55M82X$c9G?QZQ+&fvJB%GG?iSw*M@fblhv{pqxL^D%e2~(PseHZikob+EH!&=& zR~{2_2~NOpvtD@uM0}PdTGNHtq&x|T)UU?EWh|QIH&%g_DxhbG6J}>()ihSTD2_1X zz=Cb8ctsrTRPHT!kkpUMB@J%_q6%KbQubq7WbkDM4?sbO-R}xbAr+4gCZX@)hw%vN z!FBoob?7kdQ<1__K4K}K0V2*`STl_kheR4fRSf+g(v=)k5dXoL!=j54Cu`;b9xDi} z5SLeM6O-G!WNmOYin6j$;pBFsV4G+ZO}>)CiS1qcY!iM_jdXJR!RAB2uWlfoXdUIB zst*-5iuv{Bz{E2*xF)wR;q?9@qCV8r9r!6e!jG+>v`^ikI0zLD)hM>BiPCM}Mx?j* z8VuHRS+TES3>42T+Tfbl-rS$kiJZopZ+y9_21?`kHV zHA5+#$fkUwQGNu>o!ox?;6ozr7yHw;iCR%zUyWj!J*e22MoRxNWP{5up7Wjpd|D|L z_|t)qNwYkT8It+cL=Q5-p_YM^X#Ip1@q&ZcqfY}WUYRu`I-iwewwU>o750z;Y zZ!o_<3ORA{n%6?HrnGCI=2f<_y&EYT+=YyIk}*9{%gOEEmlCFg^8=993P<4$D0LNl z6A%@>w}Ph;{Egy=p?5&dQ=Hz7baK1dlNxbL4K=}Y!>Ix}(2HjJHkFhus-*O22@#I( zeJ>0m>n69aX8hlMr1;)`M16o;_XtX1CQKuqE1738yYy2xVJ;X#sgyjA<&0+jpnDri zRrUH9>E+FoH{#hO=mv<;M9}?e5 zd%q0o-zt7~Hj2Q=eQ@dO-XFn~(12!lKz!$>Qq#HKW|&GXN5mkuLzHF)D4jZz(gk5k zk1MA%SVrlHLQ3~LH^lKcC4+z;xMS?&^gUP_5KnS#;#|v3rY= zVm7?hDDKbt6~>j;YN3F527MvX@ur|+^~#41f2cxS)hmGXxt?L9p@zy3mO#PvB90%U zL7-s+UEKhbuM0Ux=6es@iUXKmg4-}$%xbzmi6?#qt7lJ&A{IMH{SHSTD85n|h;*bF z3OO4}#v)yT+H2yr8j^WkJ~i?F=p^93?l}eNRlR0~w79mzN%kJDYD4|*_fZ#mBsdp> zw(5())IY7wjm?Um1Ub=Tj$UyvzB3z}i>9`{P* zUt*7b*=NDGhhWTy@ zxy5ZZ)UVr)kXNL4<8rJaU5sXELtKog*cD0_CrA(O~CwhUCTcf)U?kZ@wxL(tkBwWvrOwxRABUi>dZvU^C{S-~zvVX@tYE)RN(O2inf zaH!meO*uuSIAxH~LU48!*D@siTP6EhmJQue zG*z*na9~TeVU_@U7;*&P?V0VIc z+tB>{-9_WY+gPNMiizp37EKg2!zJ|d;C)5Mi^De5bKpPRCy2}uM3en~vM6L|gUA|i zAZxN{v7v4H!J^3`zTE~V4f!xMMWl|DLZ1wNS~OMUj*`&neZMZ6CT7}@E9XGgbn(6o zrDXhAG+i`}mYm-XK3X(WwA)bW@E@{H65ra8zsgs9lK6Ry zAfY2oKV+RQ9+)Vhc_T*`pDxBslF*@GPSGN9=y)7Ukox;lyA_`yZk|k#jOWGT@DzeR zRetkLDqbuKrxCP4G4ITqrg&L_vB_@rB}olli=!)IV6fT1=QN z)$eJ3uJ{U(J(tCB!FA$WhBk=bi(e~VCsOB2&Sz5h7h58-KtkK29~7?_8*OM_Np|rD z@udx2-{38}THx9k{-l35il+&R!=)6L8%6HvQVhlAMsbD>6;&T9-Xxy3q5jds#n+3E z7fH@;)oVjH3i=^nYMAHCe=FW9)-IM%dOv6QX5lbdDKlvcU z9`VIsoF$3}Y^c0|XyIj&wmV2P{Val3$Hmz=c)Lfekf1mBpO;|gNk zAbzZ@4c{+bx1pci2KQSZ~J}sQ>lD4OL zc=&0tmZ3djf63VJF7cEN9dsW}dq#X>L#Gya({~H?JSw+GEX(bZ{&!JiLo3|z()53b zCL4USHj@6l*lRaF2V#U<;A zCRKbUZeWPazB~MxXs~2Cf<70X^$Fm{*r_`vXQ;uVHuEslr-HjRSqh`8Yf$@y?|ddX4IzEwhdnu8^ZGW#Y8 zh58khsLBBwdZ?^hiKcA4nP^g`N7;L;8eai zLbrsRbsNTq9md`#>91EXWe-vQDwIc?Pu+a~@Z z)|K>7=Go8_5L%<0%@A=afL1f~fwCF{a;L}^T|vWKBnViJt0Ra_5{&{g7E7*nSN7?PZIO4z22QXH;2 zWqT)Dz4FL0(9_32&oLBVB}T#d^~wPTF@&irN*a`&50XNuqNmct&?=D&clT5_*w8C5 zrct?xAsJqc%DtV+H7XC=oKIkz+NeBx4DCe;#d&sWR9-)Z_>NsL6{a;RhdR-EDc>Fg z{hWjpyn@brh|HD^(_6{5A!?Z3%0>x!uOGCrq_=W|O^Z{@^j5anL~5Dd%66N0e~&F- z{mh26ni-(c;c1JD(xZbZ9j(D-qM%gJ{f_`)?#oZ4st63EyepG%Hc2&HsGbYX`BB){&x2q&O`*g5IJ;xT7A`)p2_SwlfBq0+`rijjYiY--~ zko2M=LM&POJ2MC4pF`YRLB&R;k?p^6Xi!Th@{)D`aN_9*RaKP2TM~o#=O8UANMIBk z+>r#QpX57-(xsrO(Bi_u9liFQikNWY;12Qc!O0!n6^ewV5mbyCLJ?<0DWB1w@|3Eg zJ&W?>*n~4BRW`xd%O}PBa*aEBM51?)0!92 zC4NNYYvK^AoLWvyGtsjhVi;0I+|NNO^HPnhWkwxQJCAX4ocLp95~j--`aXl?_m0C- zMWhu{`YO9c5+p{ZQjIM3=RDOlF{Dsk6CtT_Bi;ayDxwcJ^kNB6P zu^cj0AqgFEo)C9?vRxC(tyQ0L)MwF&gDTm#}z{KGMiIPsM z;(=4oGzaG_^)&^YW^h`9 z)fP}Xr<&-l5_zz?3Cp-qDybLG$Xx-)8~;+a}6CbQu$6CESiCI zQU4jrFQT%T(!#zc1LN&GA8FoTqUK|Kn8Q`|EAb)Wvy?n#dnOq%aO6rQ&*dvVPg&|Z zY2;N(84S8ZDN*Wc9z=e>dneMGVY|WqV`Q(=M|ra98|6ILzP^W1>K-_DqVnm$^`Zn$ zzE12AH&&_YI@j8swQ5ATpg4kt8?82QV=YuhH=LyQ7yILtnmA8v%2=wNr<|N~E>bsM zVuJu>4T2(Ioof?BG_#0i7BPlJEQN^m>Iq^$BwWm8FIJ|Z?8VABq`*VMQsr#CpBuw+ zc8KNuZc}%NU0G{j+)EAjsuPt53*rx`iqng5n8^y}aTCmhn)lT+Sj}K1b>w&IJQjBb z3!2A9EMw|SaazFZy)P#q42&#HGT@U+K7tOI^#Qu4VoUD2?N1 z-4~Tvj+HFvW@fsJnMz#ahTrA5i&-CF{1c3Sf-&=0*={?{EclOOw^&vtoV!`hOI(dN z*pvfo%ExTP$869`T$uwbC;k$P{*pz%!G*tM!c1{;;}LZxSdYMIFBWY>B!5>szABqbs`47rtGMh{tmbCU-^}@a%4az%o%@vUbIx}@z?e7U zEaC&DZ^13j9j-aecOq@9*x~#@IcxaC&gWep_1}a1u!2{dI}nC%IbU_v*SwGX(VmBp zexQEm{9L)W=4a<7q=&@k%FYnwcZMiGMx*=~?U2}^e5L*h{%CK9Yll)e+~X>7b;(|X z4jf<9V>`Ad^M}9Ue1q#TSeZW}-L(nI{*9QR;bkSKyKR>e<`+lwVNpXSOM zfWg=?v1pAb(H_jcLv+^$;r&aV`gTSa?HBl|Tq|+qW@m`+M0$F?_MIq5?}M~Hy$R`% z^x;U~D5Zhuqf#Xw3Pd z!hO3sVPqYKj%$WjyO(OMW%cgoMS5Yg`(h{M3l$g6lnWtkr&6d``GdrHn!DR%_bye% z1%h2_L62=>mpUKmD92|!%jEQ3>@JHdWa%b#Y;l`AqVO=OEGoOgo#%SLY>l{Bn^16t zXi%EcwzxNGHx9`V)cv-)|DUq11~7{1THiZAJF~m9lbzW_5=bB+fh3TG{D*{ygd_+8 zLJBA`L0!Tkv56%72o%!I?1q*+!5X7(^DJrz2vO)W3Z-d{g4)*jQ;i}eiY<9aB`vhl zXVtW*@4I&s^!bwAZ_b>1=Kh>}?m2hn&de5b$ryRR_ByS0m6T@PTJ2+N|Z2nUrZkln# zK46J@Ta4WuW6HQMm1QauJuT9472ufRAHj2rbyVYS=UYgnjnWng%j(&1~^gg*m zBBF#@#eA3U^b=xs+p$lj6%09wxownQ>Pf9rSeSXUL&< zvgk}z?w+DL+x+NJm-8eUii`xh=fybNgsTw=&VF(B)O6>7cyC$`@cy&{;Db3;bU^IN zL7T*VQ;VHL;vA$7iB(7)5(Q2taLJq*bDe|Y9(_KrV#dwDsu|0HWGbU0%NV+*GLAo? zY&o)?JEO{3NSCD6JFkeBaR12_aW`t0rQBP*!P!F!XZ^q#BiCdwCw)ggGd(l!4QB^+ z&wCfh0@8loqx<;?0>a!%lr2+LZ9g9!`?-Pllh2YrLKpjHjo11~2W}xbN$&KgMmqb+ z*F51s`Xp_Eax&G1K0BM7q_x^&^xM?~I#V3H@ zE8UJvCnT@cDirs;??e75j@r+SluB#~jY>N(q^Wcfv!e>-qqHW-RB8T5XD_*$|050A z#j+kfk<7B&JL3thQh9pf0aWPYd>g4%=D42LYL&pmXEZ8(k@Q;>Uz^G*blb#Z$mosi z-+|9&w`_QG`MUUC`I$MS%yQwT@#s(C)SQ>n0LlWyhLDW_c>Lglm%Tr5(YbDdNgqWVkEY-HK1&Yjsg7xWwPEQ{nwOi5+kuytr*E8&(`1Y)8U9^*kMasG4wy# zG+a8Hf3H3)KV7s#?!-Mh4a-}Lo(0X^ZI65=|5d$5 zE}HtP&TQgMeNeo6_7}h{v%dn4pUUWIQyHC6#^~8)U+J}ypZ5)VC^Di}dZ=)GM5E-w z-IUwFNdRYGVQNH-gjF#V!-CT(ZqLK=OGRrVPI0TYAh|x`EbpLRvM<{Yn$7b+;(_}l z8GyN+BztgH^bzl%Q(Q8J+e8AD{kVfHMy8XF3JG*KoJk42>BeIya*Jvs-DFkrL2`*( zKr0TQq*W?LC0eDMfS0(HctxrFY(%4c%e;>wTBXRszefxydLtoxJYdzy^0W`gjXRQEmmj1N1^HA9qTbSS1W2@S+gGYtA!28@m_g2Mp~2BejoQvR`iEK9-ZOZd0Qs{Kzw;oWc#WL(1ureK^1P zx#LMstD0AogIF^^12=l|Imdn==Kn{-6Az3csu{Jr&Eo_?IAtF!pY|#xqI?!o^JJrSo9pW9hyt=u#`$-B30b(o(YU5d6624 zCq=*%asyIxNf~e^X#}U3JmAMp8F?5upX>u`5rkB7CwUs2b>taf9T@~Rkc=oD&yxg! zTgjOy6*ugE4th7a3VeV}xK2l_ihw^QcU`BEpOLM=CrHzEDmhF7z-P#hk$RNu2LE}| z4m?4AdYvDO3Un`aB>H;@sq|e4Y4i-xO_gyfiKLn1bgZ-G0b}V}U=rO6Oru(~in-vd zXpNN7Ilx7<9JrL;1YAy+0Pm#BA+v^NqG9W3B{&U~6}*++4tfW@AyV^`W?F-t7P=0& zi)XQ$)`Nb4vKAbr8=`e`f^Gr6LW{t86&dN|ZMqLKr|4Ut&(KrAv-AQA`-s|NbaIh8 zfnU%J;8ipR>p;S-F=(VvA1%Y&t3k&LtU~@IVF?aS5pIWQn($*_rtl0fS9ljVQ}_y4 zEaZ*HV{XC*V42VboG)AgE)r5F=wzvI4{*8A30x^0oq%==A52imI^i7X2GBZb5gO5n zyMzni92451=`V!nSe0D$Lns*!Vl6AmAWrgPLI&}WSAi4A$G}AL2@sDzP0k=WWGQeK zSp_U5cLNu4{xV=GsUqhll;XnWxd}C#t{J6kNJ?Ume4i`QF4lU%B7 zC;yXIqcBYbL09K@0bk318L2Z1&Vyc3D5~4>EOw%bf@jpIOwu1z@582x@4U?MJV(*a zlDjy*%rViyI5ixD9J@G*PR38<*v0W&Y&#j4JZIv&;NQvd363W?o(p3FOC{4Lv&|fi zcXDjz_yorj94W5(5>nm%;^`Uw8e6^XQQNb&*KB{bjZ-EmOO-06Mp>r>m4nLD%4GFs zwNc%sKCV8a{!%@wo>#w6DSouLz&_VrW#4Rn-2SHB<(TNmaIA3ba~yWO>{#t=c0TGn z=se>5v(uwxX$9H>ZL_vVdq_K>4QQ7%*%jrAb0xWMb8U6~(Dl0Cb$ zf2-|5Tet0!ZGo~`*`++JJgb~hhLjOSP~B>bnxkH?mZ`O>suloj(8_xrQ2!lG=F05H;xNxKYGx}M-~O99k1eQ- z^0071+>tgoy6^t|w!LD|6Ey?E-~CH%?;P|{C&xJ)Lmam=jGBS9oA3Vhv|kzY$jh;w zL)u;Mk3;aBixrAe1iLaUj+Dbr=iz%JzVk^Go|}xu)r}qw-VnD`jG+OiA$Yoti{Z3lV9pCfaRl9MMZ^JF#4Yl6Yb-p`FK`rumpZj`biqjb5F5BeY zDRLM?d0P(Iq6RX<=${U$4}#Nx2WTTlj*JFCX9oikK6CLh%?z{&HWh)MvxjoS!W4ByN!stF6ev{8_Tk>G}E$cf{hDU6@o1mKV2%v3p6&`7Eh@e zsO4GuTzHhyw0ulDbi9i$^XrOgHbDtZs?oetRbA*5Rb{jhj8Son5sYIQV8eG3!aE6e z%-hUuDn3q@<2K}gFKU8AEq1gbnb!4TWm<(G1-lIjeHeuos^1WXpLGRTyxY)olFbNC zfq+$l9_o=5hAM$b1+=2ZQ!|)uT2q*~wHP1N1{l^#7H{DKc8nFt$`}Dr8HJ}s(O?+e z7)KCP)-W@e2mLID2`Wr~(YnrT$6BGngJYu$(0;Jc9WSA?SHNh@;PuD|6*L3owkX3| zMFn1z7aYsW^YDgZ4$uU@4_2vb;pU=haQ7;z6I_7GFBWYcBE?f(7Zs}76#PDbHfCvt zm4*uGqR7&5SDql~ZjEUzxPlti9;TGNjBtTdNyqlC3G5sbsM`5|Bp4rhH>{*FB8Atx z6|V#{gI;Fgt+4e`iq(36>S5#8O>3P?kO}DCw7>5xfs0s{( zQBVR*$4Ut`JV|3GHrZIeH9@UnoUZB$>*CAiHg1kqQ|PHDX$DOS4L(WZ#w8ieZ)%DH zX_bkpI)n_XE#x{#r}&$6vr*N}ZLoM%2bW1eUe};nvr*(2%c^O0$C)LnSz^|sLT0em zEOB7ua-$2@%LF~%$O{iPI+%6Fnbr|i)$y~U!Fsbq$FcYzaHIE;6vwUZh-vxbxQe$S z$0len$O%5=cm}q3f^Cn3>B8!PGMRmV}Qz{@cwW%a`EshTq$e%Y{2LOK0z zj6Um4(;C2-!w_oT%f#N~Ry`25YReB+aHoQy3^754n`0vZ7B!lMgHTR-h;CP83~Zhk zGv%44H3;v4<9wh5Gq@*RG0aNla;;+1T7VDgd;vAMU|7S3b=k147}h_b+wg}K+@{46 zINMPUYen#3R>uXrjtfGsAEGfgUtq4m8W!V;2HU0R80=o*c$wor88)+a(Xown87f0d zOl!ofWI2u~Fc(yGB$VAvSAK6VdLmpdUbY-|9CIcpc2xLF_EkBI?O-cA(9SO%1nRNA z#7BVH31}>Hsx1HDfza7*nw~w!tPKAfUc<|@ib$d|uhY#6^kNIPB5EvIMbm@bp;=gp zk3E7Wm_gRL!DDEopgQ6uYIrq-FB;nV6ixB>8o@qp7k#GH$2E1*&U&j7=AgkI3~T;q zOaX<_05n&@=Rp5`35v`c$s*B^fH5>51R_e9=z~ih4Lo2lDxBnGX1oZlTsJEnp-E5E z>--EhIpjS| zXH{Q-y257sjScgb=P|=G19>|1708P-0)_Zqk02mW%os3$!3mqfn;4w}WvPspskpf! zjX+80i^Fs}T@Xq-0ta6bHb@`z$HJG7IsfKEsve=(pbIF@z%Gtt@hT7l!oz$U#w9`r zGu$5b9h+YS%3=77p>pF5^qPU*QIBf%uviqlq6@L%D2DM7C^!A!m{u)5a7QChe}p0% z0XCcwEScT1(H8vDNkjn~HT4Xk!!*pN;hEkjiN9*T8l`;&i+{V-;3mEz`%N?}~R6>Nc2VNV<0w5@tqQo(I z#9`H}cfrCRGX{5$p(^WhtU$pj|QI` z8QX2ek9M$;EU12LR5mMxnQ>#%SA081HnszsS*_F4pj4Iz^IL3oJcQ1%)^Rs8O0Y>Jr#u16`AO(q_u9y;d0`W5FM&n%Fg3F2>FA6b6S8Ym68hW9MD?sD)@AGj2eUdHz-N7o ze*m(h&1SpBqlcQ-oNo@8KbBu}#~2fK4Q3I~5knUlUh^uWB4cKPGFdlVJJ70Qb!rIx z{#P`4empC)mS@jr@7Qg=%wU+QsQEI-VU`}A3tyvlvICckwm5#$R2#bf*Ysi(^MIz6 zhw}@!z}*V^syvkOJRRqUtK7?G`mpN?tau?jSQSt-PN^8_3vcR~$I~^KC$|$!KDV($ zpg|qskm_(s)NNQhN4I;Jc|e_*NWi+0kmg`i^DwKq9eryxff{B~p;w-#bNmNvtO6yh zP>AhCHUe`Dhy$qhG1!%W3~<;nH%}F~6mJLyV5stwKXSYDpaF7|u!$;$l z2^jE&ZFW=>RsMJ{%c{-HHrX7%E zwPmix2g86O`q*@Hos+P01b(Jp7t&v(d9*TA_98u-vNkujAaixW%-pq^HLHDvHNKph z?801cUO{$V-kO4fwRr`Z`DtPz_u#D(-@UdIGTx^1Bi-MPS zR|SsDxo>FEPa@sH*e{+5`5t4kUh%DkJr)r;2SN>uf7 zUwuP$O`Ui18ees3div50>+jm&txumE^~}OG*)!Ly&QABP&dN^D&0n3D?#<53OE2{K zYSz?b&dgrDI;(nP%?9tLnsp7{HPv_JWQR)6(1qEfRX_XIXw{ht4lWUP_YL?S_{*bj z|7I30J&ygYV03(2!ga!p{|cQsLsK1JPa*NR^oPIWxC6;XLz#p0r^og8X}-8*Ef%_R zNdd{k%aIFkZ8jH|t};mt_I$XSR|CueW`oYf<*hu(WCQc?inap$ujQOff|nHG*nE-~ VYX6XK7SeEP1|e|l5p8B6a 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 CA2)LV delta 11652 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 diff --git a/README.md b/README.md index f31cd2e..2bcdd6e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ *English version below — scroll past the Russian half.* -**Версия 1.4.2** — для 7 Days to Die 3.2 (с 3.3 experimental не совместима и сама об этом скажет). Автор: Alex Cube. +**Версия 1.4.3** — для 7 Days to Die 3.2 (с 3.3 experimental не совместима и сама об этом скажет). Автор: Alex Cube. - Страница мода: https://www.alexcube.ru/7-days-to-die-moi-mody/kniga-nekromanta-necromancer-s-tome/ - Nexus Mods: https://www.nexusmods.com/7daystodie/mods/12547 @@ -162,6 +162,8 @@ HUD за этим следят два индикатора: череп в ста ## Статус +Версия 1.4.3 — **FPS больше не сползает за сессию**. Раньше за 10–15 минут игры FPS падал с 60 до 15–30 даже стоя на месте, и помогал только перезаход в мир. Причина — ошибка в интерфейсных привязках самой игры, на которую наступала фиолетовая шкала некромантии над полосой опыта (с 1.3.0): она набирала по одной отслеживаемой переменной за кадр. Теперь переменная регистрируется один раз. Заодно Пирамида Ереси снова с текстурой при качестве текстур ниже Full. + Версия 1.4.2 — **защита от несовместимой версии игры**. Если мод запущен не на той версии игры, под которую собран (эта сборка — для 3.2.x), в главном меню появляется окно «мод несовместим, обновите» с единственной кнопкой «Выйти из игры». Если игрок всё же откроет мир, сохранённое Пространственное хранилище не разбирается и записывается обратно байт в байт — вещи дождутся правильной сборки мода. Версия 1.4.1 — **исправлено падение FPS**. Красный труп «Жертвы» оставлял в памяти свои текстуры и материалы и не отдавал их до перезапуска игры: за пару часов набегали гигабайты видеопамяти, и FPS падал в разы. Теперь всё убирается вместе с трупом, а сам труп лежит 5 минут, а не час. Урон ножа пересчитывается раз в секунду, а не 10 раз. @@ -250,7 +252,7 @@ HUD за этим следят два индикатора: череп в ста # Necromancer's Tome (English) -**Version 1.4.2** - for 7 Days to Die 3.2 (not compatible with 3.3 experimental, and says so itself). By Alex Cube. +**Version 1.4.3** - for 7 Days to Die 3.2 (not compatible with 3.3 experimental, and says so itself). By Alex Cube. - Mod page: https://www.alexcube.ru/7-days-to-die-moi-mody/kniga-nekromanta-necromancer-s-tome/ - Nexus Mods: https://www.nexusmods.com/7daystodie/mods/12547 @@ -412,6 +414,8 @@ story scenes play without stopping time. ## Status +Version 1.4.3 - **the frame rate no longer sinks during a session**. Before, FPS went from 60 down to 15-30 within 10-15 minutes of playing, even standing still, and only reloading the world brought it back. The cause is a bug in the game's own UI bindings, hit by the purple Necromancy bar above the XP bar (since 1.3.0): it gained one watcher per frame. The watcher is now registered once. Also, the Pyramid of Heresy is textured again when Texture Quality is below Full. + Version 1.4.2 - **protection against an incompatible game version**. If the mod runs on a game version it was not built for (this build is for 3.2.x), the main menu shows a "mod is incompatible, please update" window with a single "Quit game" button. And if a world does get opened, the saved Spatial Vault is not parsed but written back byte for byte - its items wait for the right build of the mod. Version 1.4.1 - **the FPS drop is fixed**. A red Victim corpse left its textures and materials in memory and never gave them back until the game was restarted: within a couple of hours that was gigabytes of video memory, and the frame rate fell several times over. Everything is now cleaned up with the corpse, and the corpse itself stays for 5 minutes instead of an hour. The knife's damage is refreshed once a second instead of 10 times. diff --git a/Resources/necroatlas b/Resources/necroatlas index 57cfcfc7b0de3f96504eaab1b01786b1821a3aae..bbe308e18a09f4e1022b3e611185bf0b793f9261 100644 GIT binary patch delta 58 zcmX>