From 9de2a79f8ed95fb9cec1aad60e5bf51ee119e381 Mon Sep 17 00:00:00 2001 From: 0KepOnline <78259495+0KepOnline@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:28:26 +0200 Subject: [PATCH 1/5] patterns: Add EAPd Resource (`.pdr`) pattern for Spore (2008) --- README.md | 1 + patterns/Spore/spore-pdr.hexpat | 157 ++++++++++++++++++ tests/patterns/test_data/spore-pdr.hexpat.pdr | Bin 0 -> 112220 bytes 3 files changed, 158 insertions(+) create mode 100644 patterns/Spore/spore-pdr.hexpat create mode 100644 tests/patterns/test_data/spore-pdr.hexpat.pdr diff --git a/README.md b/README.md index f21148ad..df4d4598 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi | sup | | [`patterns/sup.hexpat`](patterns/sup.hexpat) | PGS Subtitle | | SPC | | [`patterns/spc.hexpat`](patterns/spc.hexpat) | Super Nintendo Entertainment System SPC-700 dump file | | SPIRV | | [`patterns/spirv.hexpat`](patterns/spirv.hexpat) | SPIR-V header and instructions | +| Spore EAPd Resource | | [`patterns/Spore/spore-pdr.hexpat`](patterns/Spore/spore-pdr.hexpat) | Spore EAPd Resource (Binary Patch) | | STDF | | [`patterns/stdfv4.hexpat`](patterns/stdfv4.hexpat) | Standard test data format for IC testers | | STL | `model/stl` | [`patterns/stl.hexpat`](patterns/stl.hexpat) | STL 3D Model format | | StuffItV5 | `application/x-stuffit` | [`patterns/sit5.hexpat`](patterns/sit5.hexpat) | StuffIt V5 archive | diff --git a/patterns/Spore/spore-pdr.hexpat b/patterns/Spore/spore-pdr.hexpat new file mode 100644 index 00000000..8dcf1f5d --- /dev/null +++ b/patterns/Spore/spore-pdr.hexpat @@ -0,0 +1,157 @@ + + + +#pragma author 0KepOnline +#pragma description Spore EAPd Resource (Binary Patch) + +#pragma magic [45 41 50 44] @ 0x00 +#pragma endian little + +import std.mem; +import std.string; +import std.sys; + +// "pd" +#define pd 0x6470 +// "snr" +#define snr 0x726e73 + +#define default_version 3 + + + +// Universal parser for strings (both names and hashes) +fn parse_string(auto value) { + u8 byte = 0; + try { + return parse_string(value.text); + } + catch { + try { + return parse_string(value.data); + } + catch { + try { + byte = u8(value[0]); + u32 length = std::string::length(value); + while (length > 0 && std::string::at(value, length - 1) == ' ') length = length - 1; + return std::string::to_string(std::string::substr(value, 0, length)); + } + catch { + str result = ""; + for (u32 i = 0, i < sizeof(value), i = i + 1) { + byte = u8((value >> (i * 8)) & 0xff); + if (byte < 0x20) break; + result = result + char(byte); + } + return result; + } + } + } + return ""; +}; + +// 4-byte strings that are treated as numbers in the EAPd code +union str32_t { + u32 number; + char text[4]; +} [[sealed]]; + +// Universal parser for versions (see which value v1 uses to find out why) +fn parse_version(auto value) { + str32_t version; + try { + version.number = u32(value); + } + catch { + try { + version.number = u32(value.value); + } + catch { + return default_version; + } + } + if (version.text == " 1.0") return 1; + return version.number; +}; + +// 4-byte EAPd Binary Patch version number, similar to str32_t (see which value v1 uses to find out why) +union version_t { + u32 value [[hidden]]; + if (parse_version(value) == 1) char text[4]; + else u32 number; +} [[sealed]]; + +// .pdr header +struct header_t { + char signature[4] [[name("Signature"), comment("EAPd signature/magic")]]; + version_t version [[format("parse_version"), name("Version"), comment("EAPd Binary Patch version")]]; + u32 platform [[name("Platform"), comment("Platform, 2 = PC; it's believed that Xbox 360 and PS3 are also supported")]]; + u32 length [[name("Length"), comment("Full length, including signature and header")]]; + u32 patch_count [[name("Patch Count"), comment("Number of EAPd patches stored inside a Binary Patch")]]; + u32 sample_count [[name("Sample Count"), comment("Number of SNR/SNS audio samples stored inside a Binary Patch")]]; +}; + +// Join the asset name and hash, treating it as a file extension +fn get_asset_name(ref auto asset) { + try { + return parse_string(asset.name) + "." + parse_string(asset.hash); + } + catch { + return parse_string(asset.name); + } + return ""; +}; + +// Length + Payload; same for all versions +struct asset_chunk_t { + u32 length [[name("Asset Data Length"), comment("Length of data of an asset")]]; + u8 data[length] [[name("Asset Data"), sealed, comment("Raw data of an asset")]]; +} [[inline]]; + +// Asset record: v1 (1.0) +struct asset_v1_t { + char name[0x19] [[format("parse_string"), name("Asset Name"), comment("Unique name that is used both internally (by EAPd engine) and externally (in patches)")]]; + asset_chunk_t chunk; + auto hash = predefined_hash; +} [[name(get_asset_name(this))]]; + +// Asset record: v2 +struct asset_v2_t { + std::string::NullString name [[format("parse_string"), name("Asset Name"), comment("Unique name that is used both internally (by EAPd engine) and externally (in patches)")]]; + asset_chunk_t chunk; + auto hash = predefined_hash; +} [[name(get_asset_name(this))]]; + +// Asset record: v3 +struct asset_v3_t { + std::string::SizedString name [[format("parse_string"), name("Asset Name"), comment("Unique name that is used both internally (by EAPd engine) and externally (in patches)")]]; + str32_t hash [[format("parse_string"), name("Asset Hash"), comment("Hardcoded value that determines the type of an asset")]]; + asset_chunk_t chunk; +} [[name(get_asset_name(this))]]; + + + +struct EAPdResource { + header_t header [[name("Header"), comment("EAPd Resource Header")]]; + u32 version = parse_version(header.version); + u32 platform = header.platform; + std::assert(platform == 2, std::format("Unsupported EAPd Binary Patch platform ({}): only PC (2) is supported for now", version)); + match (version) { + (1): { + asset_v1_t patches[header.patch_count] [[name("Patches"), comment("Pd Patches")]]; + asset_v1_t samples[header.sample_count] [[name("Samples"), comment("SNR/SNS Audio Samples")]]; + } + (2): { + asset_v2_t patches[header.patch_count] [[name("Patches"), comment("Pd Patches")]]; + asset_v2_t samples[header.sample_count] [[name("Samples"), comment("SNR/SNS Audio Samples")]]; + } + (3): { + asset_v3_t patches[header.patch_count] [[name("Patches"), comment("Pd Patches")]]; + asset_v3_t samples[header.sample_count] [[name("Samples"), comment("SNR/SNS Audio Samples")]]; + } + (_): std::assert(version >= 1 && version <= 3, std::format("Unsupported EAPd Binary Patch version ({})", version)); + } +}; + +EAPdResource eapdResource @0x00 [[name("EAPd Resource")]]; \ No newline at end of file diff --git a/tests/patterns/test_data/spore-pdr.hexpat.pdr b/tests/patterns/test_data/spore-pdr.hexpat.pdr new file mode 100644 index 0000000000000000000000000000000000000000..e3c28e22a4efbcb0fde0b80b6d94bc634c020b85 GIT binary patch literal 112220 zcmeIb-Hv2Qa_3hhB|y*zu$P3cjxgKOkiF5J@f|tR5ExF+s#dGz4A`>(F9@`vGNYW=t8fcOTCByy@0NzcM%{+H`4EK?tc8kJZri;VwV!Pr+TU~&Hb30o12@P znVY-+>KDKH;!j?^diBTr|8M{2KYI12{Hy=z-}~pM{mobJx5saGPp94StKIGXbU40x z^?3X0)&Kp!zk2nPzZ!0~58rH`hWT=sEQjf8wHY>>>tQD%h>t6{RDU^7f+tJ!q1 z7$#HxYf#OXo8f8r>;1dGygS@{{fpb%-EFQhna}3KWPW``mB0O`SCeDBbiF5N%98)jGQVM>P{w#OY5$Ihk_Sn&RR28-AF zV6t2cr+0Va=67c!RSQ1qL!u9g>K_xfsh*nN1~?QUz%&fy1wbDo%{k(=kS_DmW&l=T9cnIg@oUyM$^$VSs8q`vJ08&kMtY%8DA|Umb3DU+zvN z(O2lF#p){6Fg5h$hwbU+{g=DD-Az?@iVj;a;t`wG{S7+l^xOBl`$EJ6E0(iGs`=&D z`-fh|=@puGaXr@i<>Bsd{LTL6>rxAbN-+IASvGZJ{J2`6Pw!zx=EEHH*Bgel28X7v z=G1qjnV8S!8mMWMt8sOqN7LDISR)b3YXsu%dH3|y2 zf+A=r2r8R_oY|T#?@-BLVveJ(hG{WhK|>phIP>4cl9CR}H~QF-VGFF03FpoqP$*dq zb7uA>P_c5&>G%auO*e~6QKi*?cD+IZqna;<%F2+OBoU<%V`Z!BFpR}F#(PP$4exa* z33A8+JYQhW6t(A=LNoNx1$Z)BO^3w{^*r3XKOApw-pjHonv(jQ^Z%#eNm^k4_H9|X z3JeW)(CN5+czQfMRi9sD(`|+mcG%%@_b|+_t_od0S)k|UbR=Uxqy}yd4-Y6hlhx}q z3rpZEPVc{g(V^;;%2WOd6qZn5cShZDa;K^QG&}0=<8<*rmeEet8JOF;EQqXfEmR~p zAWO3cqPIHV8(}R{v$z_pT4C2MRsd$()d)5~T?b&l?8gSH)N2oHqu^_cx2#kx5+JBd z2Ug!a4m#I?s(VS-7s4R0ANQ&Cdu$NRk1Mj1cLDOn@ObN&1#xIxL)7Wjnk9gx>D}Go z&Gzm_E<);nDbj_OpE)+n88)lU{plKW4NW5|x5skPpGzxZ(o0>05iIpQ3I-=93U0aF z7S=-uU7&MD{|xCnJnZDX2KsH3trbSPT*?hL#Z3%m@S^E1 z>fk(@Lc=Df7$&i01KKDc9C5udm{>Tuh8Qgl%)xoNq*>vVCB)n7Sez1%wJh^yJQwoj z7xd#65nlLJVZ!vWnRVRV?DpU6j;rBj|IPO122-tIMwn{&<5u@+-BvR4=b@hqJg?$Y zb##W_=#af&y`3zmP?x1;LOOsZTU93LEb%hcm6CUgOuEpmX#$RVDSdA0v9nB=(u~8F z>LNjdQ?OW#enrtD+0(ir)-4oT=G3vayGEMlg0zmWEM@GvVY---Fes@TT4_3r#Px$_ z$4Y531?iRy6$&(hud$z+CMy$MQf7%WEx5M+}0Mf(F zY5PqyY}FvR7=>A_x5Q^$jMMOTD6M4U8Ro@#8rvAQSX^6dv&;Sk%f*+4kYQFQ9FRCM(LBXOl-FHO zG={92sG68&dX5uwRnnRIU<`) z)~##P1@S%~DbZdMW=h{F(^@ydj($-(*eo%Pae5N@4_CYhx0uQ9$N1rorR~wYfwtIqyPs6(8qQz`Sf5K`{(c5f|)T>P# zC9Ht?Ma0bHn1(*77Uu=XZQ;JaU@aFYggHBoFRmz7W5#&Cq%)S75H=A%!6+}3+7eTY zxJ6u1$^tEsY>ek2F}}%g#p1|N8z_^e90>?D@rvf?izxBYVzeKWj23RGB zPb+h2iTzGUs)a)BlBxc1IPGX%(O^Xp?$Iu%2kq&ag_qI;R2doiblibSU6T#+olw9A zIXs`H=^40y5I}P^i)Ft6yZWp&`LyXIi7(6#qhN-HnX~gUqBZCgLuHOd9@hLy;#FcH zx)S>e!+y$I+hSi4IGW=V*4S6fY;AaZ>?_7uRF*ATZRzwX-@>5K{uhL23K0_F+W7!n zZAlPhW6#5x0!wWX%sV#164f}j-KxA1FNV*>F1mm9*>XDFpcl=Rzgo;blNIzC(_vK% zyJ|1+ve7-;Z@{xZT+oPE4KUSe#YEs5e?$^`_1S!} zk|({MEjWUVI4M95f6^zH(>NV8T0 zd-NNsp(*yDSiXtkRY?<*4FfnsMRW{-4Gf#3{Uw5UV__(aomK*SO4u5^ReNJ4Yy;v2 zi)bl*B6N0<&3tk}5J37o?oIWb4r*zC>?M5$jdP~c1;#*_P%M9d99Tkx7M#Tx&?;Gx20e(IX!A0Uq?w4Av{#=^qbf*2GR>|2 zPF!cBhPvYdpAcx$qfg_|m(ZyPE2;7dnxuik;DI$QwwC(M8`O z15pBMD#qi}_lj7$*q?f;x>1X#x)yt7IcP}G9vIEFP<3L8`fTCqhBCA2eh8xAN!z5l z0=TWM&H#?;bRXCG^wyG7F`1t1ZTVh#sC?obZV0M1#VwkJW*NQB&#N@ z>eoge^=jjbwqS7J*%WtnX>aYcC7_#9pvP#1M zxRF2+A#gMDk{p2>-1vro9f6uzUXDevvQt_dCW3rX4-TF`L+M*I270hKh4s=RQQxs` zdtjw?Hcg5pSZN-N#`0is3UI3}1jg2EkPvR_)s_ekIVzI|2a5|5kd~s=99Yf;!=-p-UU1fFGRk5Q44NOR`sg2tSM;vaJ zMr*R61aG_x7N=IOlNcI+DXR%2&j7HeM4eYzQ(K)El?_;(N2j+0s`DbguB~zD)F$hJ zZA*vSz=XS7B#?*<2t5$Pe?)>c<9J7D!vv#LR^?szRNBSAB&sjU$h@Htwr2-n=KakFdB zpgF<;V}KJOXsfG3;!J}@{lP=@V6bR4X{xKAa#$O%WEP9Nt*y-zWxBU;8)Y}y2)V)A zD^H``FdV8Di?~Rm4K0SC3l|^NMoqi%Y9Jo!;3fiIyrv5CAsd}9#GP(|_%p?MbZwY` zINfSh`M_~h1!8HZ*Vv<0&=?B(g7M;u)*7UM1&M-2-%p7GiCQ;jr)KzSAGqyCFnyiv zVpU;?695&^4GP-9qktj`+HO!lHz;VkK>^*MpzVh2VhWr%*#Hqsa#Lp-tZcu`Pi6M- zg_|Z*navj9bR02R_Li?y3cdDrwe}a#abx&2Eu25#ay5+r6&F|hT9eb`@A&c@Aqjn?s@xrYSwVC(_&ty(`F`1Q#KTto$U3P zxuAm#o>0HY-@rX*U-Q&ddUix;986n&;*AKQT?)wx*$*`-2 zc1SJ|uQ5~@I7b`5Te5H7?@vur+UsdIhekSP^zs69%rKIa#eE(s8`l|z`V{llpIfr+ zX6TKb;b6vUS)GF5OExp&uy@2wqmEgnUDKQ0Bf;9;aU!{&oR0f9WyZL6+3<#6l3ODY z_v>vnS+uLpWIB%pHZa13^6i~In#|A#g+$U5nW&<>A6!0ovDkF16RA=4%nSY4%sW>b{DZFg&S6@dJzk= z1}R!=FFlimVBi8=WJ2f|;f5egXG=$Fghl&1?B8ovvH29Y%u{-m$(d5Ilu*!Jc&w0K zhpqN%XU~eD?L5YZc?6nk#xZT>7i;(&$~M@@FRkGOU9{&LhO9Aay8 z7|Oj-1651H6`?rUCdM;6o`>`J(eWP)S45|!72BaPEkiKzfdbsh7q>H zNDM^x>_A~yZYh zSskMbXPvdR0tu)qTagZ#NWlny-l@w)W_(Do<_7Fw$~^1ysNyk6#^73+hw+iU zMx{fN*!I!=Nb0N*lJg~SqEW;$?RCzk8N;4;HLVY(jflZ3t)e_rB>j1fZ}n*<%gQa< zpm?KZZA=gPxj{LNSzuvQ5x+HxWt^NQ04qdi1G{|&EK_lV``Ry1Mp; zm5(`7Xbtl-3FE+oxgnuu9CLX-`Dzj{mG943yx%{d3VIZGNU3&XhTfWMcTAPDWKN`$1EV@pcc$xZZs4t7(;xercD7Czqe^nALp^| zjZu|EvRcww(O^ctq_!PcJw&~>wXG{2xB8+GSxq&v(*=uePc}@3c@BrbewPQCVLuG~ zb&H~*vu$cYH$@Md+UmQ?8nF7_0c&(|PTSgINoPA+Eb&{itTfDD*GugS_i&3-=%u&} zrlGVrn~&F7m<^rL*4DuL%>~u+^cUQ?kBQs9A`f~$%=uM6x{Gjaw5@c!5U}3*}6>KTbu7q zleX>K**;Zw{8qRiolF_!&ghbnW_W}aCGI91#uQk5bxluJx+bkmJHgsgXpyU%on2yq ziS@R%t@lnhsiJnE8>Xl$8lHv{ZG?0ZKrr?IQ&x{!0Mpe5ET+&v+oX8X0UJ*g9BHtK zDV^P8fjc|A7&C(NcY~(SE$u&dcpLVneUHRjEV%}^ARTVWFn|=Nh_n;a+p`vP`KIZ= z_GA$)*CB0J4&DU7G#H(OHJPr4H9w_N<;>aeC=!dJHT@bu!f zVKllsS);i@-M^)+-Se9>Oqe4+k`gayLkm2;oV2XFq&S_R$X*Wdh;3rnWRB1J)GN>} z8t2h2Uk%TVQ?%@g5nM`x9fk}a&aN=x-m)q$-tJGFVRgE|40@M?Ip+qqMU}N-^C*wk z49&?gnoYyzaQ`8SpUdkO!(Tq{?{0^mCozwO5cZPj5RgQK15 zsL+yL+s$?DjUS-^bG+H}3Pa0oRQo|F!1}CqA8atRJz&wgF+^|U1QMoiLAv6Rr1G36 z0^)%X5mo=g(NtB`9X2tR7*&a(kZpk^wcQMSL0f2QOv?|1s*RVZpK1fIA*yoW2Eg8t zSomTn&Z^)Wp3e(TL5CeuclVx1Q7Mty^O{jFF@W%%ZO+;Hmy;*p60S0~t#T*EOJTGD z|CEH<*hFuaFx;+ALg;jSY`lKbMg+g${2M=oX~urW`B??lYl4D0@%JLp8>OS1t=59j zaNMmyk!mSDk;_c< zmy8HAIaN^9RIrR93m{M}Aq>A4^|<5bJG4unHefJgIGCntSf6feUX7>83v{^;@|223 z3E9ecWGxLmjk3xP;B@&TBh&9vkI`SfK-^E_#Y?f(Y-3Wgf1^OVc zuc^wOn|l0Rsmj}t&t*{~XmVT66dU-9>i#i_?RuEZzwnf6ImXmy!O zn%`-9o1$6MQ9EzBeRIdok|~K_u)3VMK=W~TJncD392^WRXo7q+Mc@F15F@p}Nc{L1 z`SEb+8fRj`N@915JRWykWmsMaZN&;m4|mlrf|1D5`TY0$NMOPz+8Mv|)MQ|TNFzon z(kAbYhv&z!sj%t3#+;rac#qFd?}zt0?zTA{&@Z~==JZ~S8y=qT-|UW00|)&DIT=H_ zKlWh1>UI@$C-mV%i+NwcVlxo_n|lftvd#Ar^w$-P8Wa&ByzP+uiSnw`}$c zn( z#op^uixmb-nz(H)+CqDdm`tg)a$i$7k1a5bJ{?LLgi+U<1nVS_A-z6XFh6EkX3;tc zFhqRDA{70*z*pVQJi`*J?OZNCNBgmepC>Uz-*uFIq1{Sp75)@`Pf;>~DGt3zK-17I zP`aCfx+Z3Vmg)v-TC4?13s6vhFQD_r1Y|{Os;Uz%>S7+cqe>Ksu(~btUMcE=9cJ@h zeK1Q9G)zmJ$n_o3vZ{k8O;17&F=Y*X(yscX0b3vafj@y=q`~~v+{fgW&aj#Btwz7p z6zv;138d$Q<}|%#=&^~my;}Pns<>9>VuES5ho+FYray&XX7N?67w=Lr6uMa4t82|W z^OAJ$)x)W{_ufim_sFrT?8HD3uJDNwD>jJ(9=eXgNyBKI5*A(RgEA)PK|~a61a8+O zpEr@mcIMy{T~ROuUy_?bBq622lzA>oT=0pkX5E-2ak5(@M#C;Jy#3qEGXbrQ(ZCbL zf~IZ#xT>3A$J){lNM!hjAIeV>dhsY$4?1ErmQsy?B+5lmUDM9+OETY)>+i2;enZ7mnIgWV=%36*_gN2Dwsi7`{s5)3>?Nzvhw=bF{}Gn&8Q*Zg-` znThW3VoN3*_EAB(DZq>={lp}y{xdTzi9j08R5|~fzo|Zmx<7U!SBF%kTiAcL7^W7| z$d*;d{v#jyuUM3I%OF|EPDd$$g-LfY9c43Y##km<>gp&>Htk`=?iO`ymTD^E#=fAW zR#LaR&Ce+*o5Q-Sp;A%?)m03Qk}^EX6Ka%Hz=HDXDXArSkS(VTV~B{hd6 zYhuh&lrRSKIF#X2oUbESVBxwMbYaNIK>h49TYtd0+3+Kl z`DQ6l$stXhz-<5bNK3FzHXy=sS+|bxHR|r{6*KEclO|m<)>$~}T11dKbw-KQY1qCa ze68yPr^K3^jcJWf2^>~7W*`am(Aby(4{T{{%zyGP|Hm3H6 z?1Jcy@fXTS>^pyX(SF=S$-w8Mnqn$V!mX?26~Vg7ak4`9o$;WE7-fEou31xfQnM>a z^b*sRw-|oNdnL@8jK{`%4ze2k2IWJ9=!c-M;u?A=h#Tjw5i^B|-)^5yyr%K__+pTH zxWd8Z>9QZfsj4g1mL+(9?Ei{#49&qklb9mV}ScLYoK=(6efks4B?dIMp^p~J{Q z#zLwB3l-9Ya~L;;in292fK&xKprMW3|B!o5m`=%;DffGVKe%lDK_pGDF?9Vw z+c)Yi*~yxf!NH0idY*u?^1OvBv!$)sx5^9qF@6dUb%JE_lS8%<+w`xaa@m$}t_i8EzpWof{g}gi|#kyn~bZa+P2N5QFPiu`K~o zI~Iy4>H)4ci$oPnC)$$Q-jl8ei|3?j1mv|g)t4)B{Ix#R2as)@)*Tv2N%{{l_!gKp z{<|5iEzqA&qjIdSq|nWuE0XBQm6Lu{bgC*}qiu90?-M+Cg%&W}R0m`k&LBCWIc&Pr zCupk*vJNms%M-R^x!8f}ubt|QQ89!W{83_5(U1-R>+Ov5tu5u!Xt$?nKnL^m3hns~ ztPoJ$-dSAOuvF3!uGFVRKLsM#(XmpkHoM}d`pL6vM1i)Fk)VO*JClu0fvM~Jj*V>L;Fzf0n z+uvt~kuuFjI{mMyD67a4(KS8&8WK0Q3g#G9k9+QkPHxU<5$MJW<_hM{9GghjO&o4- zOCeNd@q|2tPf~y)yJS|Rd!t@(%B-A7vF)Rl@*X}sFB~0ghw!ZVB_vph(pX~(cw%!G zLx3E>-k7Z+2IVqclY;h&WiT!jrA0%l!>I2QP>Tb9>YDQH-Rh*(Ek-x;I;O?Vh2yl2 z5hJK^YEZ@%E3G!VNht+?;$Y|QNZ(*SmKhz=ci|f}YD`aUWd~@fZKFHgFEH}npkB~Ng5B}YYsF)F!H7zk<0auc-u zjAfq?^7-bxz*TOLqRJd0;=%|Rh>r3}iZZ`zL66Sn8~ z%`oMB`euC8H^t88cs0In_AQh61=>So70y)85$T`+(<8+t;#QgUmH7!JGBFFKDtCnG z(5b(|%0&@1_3as4T(32|*eOwHGx+F=e#FRzoiQ8CVJeb?gIJ-$6c{g0sHs3NHRXbmJ;pW2 zle|qH$OV7gZBOBl^Jt7nb)iVY8?c-yBV6!bL*L_5vZ>V{&cDe+xMEs{12@|R8d%MbbHxGYMHxl3m1;>$JFxKGot)Ch!(Y6Efz!eMnT3Dm;h#nLXBqxk zg@4xJpH2AZI{brR1vC*4vpxJCF-;3C%77BMyk>0<#Jo?08btboNYWji=(MM*it1if+zS|R^ZmEgGM67~j*UrM<`gXfZEF|FVo zS^!%KBTX}9cyk*^@yqAq?ekwA?%y0f91geBq5gf={624fUo^k3ir?Sv?oK5>{a&mD z+E65|ArbU1?+$Mc9IlA}(%%4pbKwWL7Ji_Q;Rm=CeqeaQ4-8HC0S<*9;7<4fNlQPC zxHaOjbi}TKkFXIxOId=AEokIpy|E1mK!CBYmVO%Bz^+NKu?=aT_{G=;n>`6Owt-fR zFo|sVLNXD58rxtIO|Y?zZ!iE8aBPIU#{?T2AtD`N1cA~|V94i^+UT!q{l%c_Z~KPf)X(-61F4_wyXv*cIg25- z7JN0GcXQlw(9Hg(;qY&vkZcEdjYx;uTaMCkN!s==zZmk5)8gk@@$-FogFRx!`+FrlTw7q_vX?y)T)AssxrtS6XOxx?% znYP!jGi|S5XWD41qz(I>_w<-z6>YO(Q29Ai$1j;Ye#!LlOD2$CGKKt-N#vJIBfn%K z`6W}yFBO^0{fRCnY{)FecUBHCzZ7JaLrh6QW;w`|6l9jeOi4jzInb0;WQv=5X0jo( z80uL$*8EbCS&lX(1)1e|Q&NywjyNR+ndO*MlE@617>bFk@n?Q>JlyP_o~kqrJ5ff? z(sKAUw@v)&cF%#+;R~J7&z_%NDnz{|U3L4r9p_LPjPwI9XhslMnZ}>y<4?q?B8+QA z;!ivT8h>I}FaCt*5`W^3h4@qIhdh|MTtz)g8`vGH!0YrwqC#9wutbIUn_!6waW=sc z6&kJtE3g!-&}yx_?MosM-}sdTIsce208NDOW1@r~6Dj3>~2(TQoaIXvG!@i#GSFaT=vXQzU(u;n;uzVa@n6+!=p{LGkCm{xaA9>n{sSi;#?N3b7=^g8Qe64>EeqvDEA@|Jz^urid+CY-~cFTZ?P_K(jJ^-27ZpgoR^I zn&;uPXqZ@^GX4T*({DwO5e7|9qO3I)=&jVU^i}b5XgTddvmOzQ9J8#__Ar|ilQpgv zJA63^mT9)5{Y3eSO$dwh;mYZu?2lZ^qYNOWGQKUNhPnrQPQbHZE;nB>PH3H`37%eq zUMz(srcGF!AUeUn^CP#0N{J=?h`l-*TEoFAg4fA|(!32+VpZ2+Zxz`lIy>cY35zNogbup{P0QBQkjXqTea)DBsWw=RTXAqY;e_I%c?h}X~5ZF`kI z%Y(t0;TLE@^1+0#tD(37qG8v?6vZaCxtzwyAifDh5?x<2lWpWW8W2-U` z?98&Y$vG%`oJwhSaJA=4>_`JYb5=bO`WN?(o>i~#?N^)F1qkJPlw9OfLQj&o7B|0n4PsARy* zNkDt4f^NuRLuE1Sv$QdTWvR2DS_1Vd0lDpIf4015fM@Dd#%Q;Ev4RyRgwErA-k1qZ z$@zR?hbUH1WJ*s^6oMK{ST3YjOIg#X>J)*P^kGNN_=)Rm?91+HU1bz$<$!gh(1~xl zT!_o}c|-pFN4Tom=7i;Rl8y2fpeN{UmX;FYC>GLmW1WG=G!F4%ed^OCM0S1UAb+G;KJTbKbf z)lLmv(v+JA9isf|*_y*MQM6+@yy2`5f&Wk9EgvB+9KfV!e!{R6 z-GEIxq7yqywAcf; zXp~;mA{rGp!Dp)bxWz8+)@71SBwmJ>1jU>%U!XP3h8e@NGUqBujfE0FIC?eSFfR1E z+z!_QXHJTfv{)2c(nz6Kk~piN%V$}XpNzoc{_Wd9{NZ8vDgVb{z~@8@+&=wTnAP!f zNu~U2ealFx3V6Cal!Vc7q=+>2$Dy&TVrnd5eb%wS9D>GQfuWKBFc5b{D7|)`q zETQJ4TLaZ0X1v7)s)Nd|st#17%pXSA zopxfzSblrcN$d@)-3$*w2ZqceF@f^KW>E$uRJPc~D?G9mEM8@`kz_()3W3|&Vv5RY z*@imoFefR3^xiuWSHzkc3A)<4-;9reF>qaVn|;`4EgFnC+(8F6c8%&W^;6#~gy5=6 z4m-$$z0-*EcHel4jV{#-u@TU2Q2I6r!swHd4EhB36BF5OO1D zV7tz~CY(hBzIYA7GDxGIMD?GtX6!II4cvA}-B(%DCXp0fa@2yw6_)A-EFwBj28ki+ zenW|Y2_-o!s;;0wi(On4b7~TG?nkMQE!dblX6Gg0lF%Yt9*dakB^nQhd6CVj5se8K zc6i&WxXUWhcGZN7t&O(2_=ua+RF}M={oRm;cV;N6Ie=LMj6={3b{1!_I~olvR1FrZ z?IggSrNQTEYl|@*+~P|Ix7ea~nw?FNaNnVt8Y1n1@(*JyglWprW_{_v6u24_Q#J$-}8>7>=H zPzs#Ps{qYOT+Puc#;L%yA=W{xgNsF-XS$Rts3zb^Jv8><3o3~Ybxp`L&~Ae(ki1A}TAGX>9&Fs`*qy;1)eLMAp`~frb6oZ^)5eLUExjF44e!Ww zD3y@u5^~qFOtYz?gAGY$vJ&I*1)8$H3m9zt@rIRwDDZtVGk5BzkJat9pi!8jq1urS zCM_+v0-LyAr&*(*@@$0~^}_SX3|)D?&$UPNRq(d|xwb=#Xqx_1kj*uHORGKYn`- z;NFUxnso>Mc81BA~l9PYWzaod!4+UsykS1vVYEk~QRN zePmha6od}aQu~E<&`0ickg-1=vA`=@4G~MU=T)$&dj+;ccSg|cJI2W zxuKwk%9!|KL9Y#Qw_pG)%n8u=YvQyHf-oP+m{WwI;^Myw;-yn3Y@Z1-F|_EY4xCdBcTR@Tqn8) zV##o9pINAO)(I&pnrQuSZOA}2+Un_HNNC(CbrtZ1pUpF~oq0#c_rrMQO=PP}<8DH! zKvZ>D!WK0>?|hNOryVG>l9l$*_B<5$D5i1+#Vg;qnZq3e#TIXT06$PNW;##Inn&tQ zfdJO~e2!KLm3IM51Xxo%JAw)816R6xr7s8+h~<86!~&<>gi2%K-w_D~G~QT17Q33Bp4|Oo;WxcmwXzY}_ z?FuBa-pZPp2jI;+0c8`o2BQLi91WI7tSw?i9?z3#u#Kkr-hX^l^dHg z3KMSdsCUs--%1!>Wm%C88i!DXTL}Xg7e`grD+Q7TRpwsQqOz4p>*qE}pl8TcP`5fp zFp&r+sak2g0+1o%rh%l&t+&$6-eZwo@lee!Z(x{Z<>sO+Ex!S57LrFSTZ)K5I}6oT zhYSk_c94i@*J;@#9UNwtbnF#T?NJAt#PLqy1lH!3Y%QgoM1c^Vqo-lS)2N#D($UBo z7{3u0Hk=)|Wu?8Q4dVY=Kl+ z%_)n5`Gr=H4!dn_RE(-dV$m$Wlv*&$54>$n`jyERMZYEnuw%EalnhWqh{*OK4_m_g zk{4DmXWkfC6R^f@%bH)+Y*ACZqp2-1_JJjfLqT9;>x<;he!41lqD|yWGC00TNeS7) zEhU=5tdT8P((U~%+mZxHLtqH#v^Xr9!xf4RYC$@oDs6HNe!E+cj;CQ@AKeMHeUoB| z_B`uRuwBp&5^>7!#n|Skmsg7pb-Y;me$XD8F5JAN3#_NkjXwtea~K>)k?7j{)+6yZO9_3Bl!ICjTZuO4q- zz53UG^y<}5#!HCcDXJcmTRWf8-;{YXnJF(>8x!gK!1|($#X1^f_3gPFRl}S^_dnUU zMFKb{aLbY+DcFp-iA+ZOrnIfKS(Zym5@p_vpESd#etF&ibW$$A-OXgV=1zcAk8!SL zkZhQkeE1*0?3gHSjQ;#jN=93vK00#^W0sgFC9@S$(=#IH8}JGuDZEvjBaySOxczw5 zp$ys?OF)kNX;2k2(i;`wTG>3w3vr9iiT={}zJ1HtDEO_P4FKI+N4PZI;puEwU& z+sToqfet{r@Lg|EyxBgyi~g6&bnXfgLz%JqzPzo_TBgch{5)Ma9CPwn3IG?M4fq$N zrsrNRFj0}sPz8^0clxQ?j=8?cp!+^TgmmWa?b&*1D#7yZosrjNr>ht`G< z+x_XuUSJo)1i#z8wb#|@+2ga`&j}wEPqBv!F&AgjW~ve{YI~=SzG(H;yQfhn1T{-V zKyi}Vw=hV7o?Zv%3b9pmBi$$HJUV%1DZy1 zS{7(}5m3T>dVhRQs^lwv$fl1{{$}{$3c(w93fqE(3Rks}Wq|0HQf5={#Ii7dq`{&Q zFiXw;KYv~}Yjw5fuwel%ClI%ZVQ~>2`(9GJ&_*4GmHkr;@S16gsc{ip(<>}QCc;IK zEwIBucM)83-KB`F5p@3T{w#nt%P@ccM%^lG?0e2BOArz#3dvT-re`?E~W8kd8mBy`9Ok%0#yhKIw4T!+KY zu<(0ox0mFEEH2iQDCQh`8GCaa(+$piB5Hd)emlIq+rF!-DH~zK zROnPIufoRvpxXDmwP3kfp?y1ZPnjo|!!~EJ-Jp2BmxR7Z+maZ-<*;$#oo-my{TP4y zPYeAi=W&EbZ%!+b>Z5Wc(xd$(xawm*No+>AS^RP)G{1$v&~7&Rga=#svEgpuY1V0C zDn9zN&WvOjwf{5Kqzy7^UoEs(Fhe`oe0+-YG!~(HrUXxeWL0Hr+-7Dt#}1$0Ot|$0 z>21p8TVq~s-*6ql)^t`?L1*LT+HQ~Up6{7!RiSP-wtLsVdg*^f4|JrPOFPhS-ws<& zFg^_TH+MUZgcfzQ>jlE)@XK(_8DsME`SkOvbx~){;wMSxiVF@o^52$QIgUG&!2RRh z?)O0%a6-E1(Qx7+xM6#eL5!7zX?(xG-`@b<4gZRPj?3i0IHR_Q5Bt;m;qCK-abwH< zm*46Wt0W8S!}fS9EB(#(=Iit`SDvL3DcZ4U`!symamNn-ngU{ohHtRQ56@2$z5V_3 zy=i8|ZO@N4=#D+KOM5&;OU=f3P0)?osMf<@VaHVk1hgh-mKMHYav>CYJN{|{_Q^Nf zxbtNAHnuomLqF{}NNOaoV(od>q8i|hmLz538kYS-i-m|6(mJ)`Z2MUYtUQnm+4^+U zw?z?Fpo&;}ioxY8g;Hi#baS`A`MN0FU`J1|F%mH>MU!Sp+rSF$!LF)Q^Js&z)&`&9 zfGs^7EPPTKWt9p?=$dkYQHrN@=x_eCEAZYF#Dv?y9)Pa^o( zcR!PQ`W*TBTtfBv{^90xR<+MZE=yn8BB-p!uz-L310#FMK(ak(2E%9&R0d2@4HtI) zv$ROdEYJ-LwLK$xlf(7#nkXR5i1>U=s;ZU0MjD&fOh6JARrARzDe5rF%dyT&*vREF z{kW=XcCaZh_OqVFQM5>=5yqA#aWVkX%APABoG`AelLAM%4r#6QE-0MCTU(3lml%MG z718<%TCs>EYqJs-X@Ff*xV8zSqjWB6m#sf&Vfh-8iFd^7vp# zPCHmocgb=jw_ksXyaV$L(db%iqO+L4!{k6FJ73wVOly#lV|fCic!<=7yLQITr#Zpi zTr4TOuXy7U>n2>gQ+>2xrCvcnEOK8Fa35cPR3l6|R|TLre1q- zjqYq(VTJ$2&ohS&hP_#YHN`+XF_a@W2EvcCXGy}x29l>vM+*x{A8K8$!m%l}(||4y5eJ48ae48{1p9J<xDjZ0tJ`|uvTU{UIb0H=0{*OFY_ksMA?5i3A^dS%uW z^kPsJbP3xMpH0D#$Sn12GS&4S*JiDjHmr^g@C>eLh-oYcTvY$yVh}^Dj-qfbfo3qq zvO*Tng`_5=p7LEeVsI?I2uw-w73l?QR>RQEx-s1;rY9`NvI3#5)6wm>V_88Yt0%h| zOqj8-_>jUSUUXu5O$-JJgGiwh(}|o_NvhXCrX6shRw$`rUKyB9FPKOpA=LoD=Y_1` zf;yQO3#^;*gMw46TslWlFu(jz1VH?MRZMnSP|I;ZM#Yrp9&h$Zb(UjRsr~}`_D&Bp#E!=^fJgKi|G=1Ul6tnJsgQrZ7YJJN+mL0;K19ep*97On-&@# zXKwU@!W1j)qMlw**&3(m1r|)LoDpefJJ#(Qd#dS1=56?p^BgZAR+25Ze6(i=P)Fp-bO3h{>6#g=P&yOVqmCJx}sVG$e%TYco3p-Y~juvS}u5 z&@>&^NuwD$I#%=*%bp1uv=Sz5!34~laY4t>%_X|SOSh4Q5v)E!4X_w6Jww^}Sx~1e zsq&h}F9MV=l#e&owSgocz~UUpsx54d%{b4;qAWhxUowwmTKKtXEozfgE%Gr2f58iG z*|#mtK>Uc?<|AXaz?be6nO;;_rBkNBBTD}Q1|EoHGW-znD-^uw(YejQ*wG6#mNRNo z7!XIUau9XjDSTzfci-%}h4CmhONef3T;sH(mJN#N=TyWvOW#~rym1+9RI6KKjttxa;-pU_a) zW4g9bDc~~eDoPNhkwO#VkcoKAq^X_Q0`a1L2Ba-<^xQ!55K_&8y z%E7YlkQo|hNEBB`A+a})^n1aj-ouEY)~jxtcX zBiOUbkvLysSs5<#P@ay+&rp%)lN7kikayT+8wadI7idLW5K=wWv@rZSi`kO~8*v1$ z84rp790MF}RLFzLGPAVP37l5Rt~r2XYKAE^MR&2VeclTm2~nix7Rj^`sLfB7oiI@o zQ0tIf2?wS{CT0WHR;ONsZosT(_>cZnmE}|@Ik0XMundh3m<4H^b%{c1Q$Nqf0*-=H zmaD_AO=jP!`p>X5)p4<*-L)E$tQ~SyWd1rN#zqg;&a%g$t!3tGONiyW_>nNML(RmV^^vjbZ{9cQtgpu{IsN4RfP3}CTr z*hSO=G=4nMpHz4JV%;_@4e6?gTilY4StNmWjaqtX=Yom=&q-@ZMm60#7a1D3bBGl< zS)fib46I~|h6Q3uCr_1iTsFI_t;vf{Y>=Q~x?r)fQ`^``uWAXv05u6{aZ8N+kz*y* z6&ZesSs_o=iBZT?bz)?BswmF3Np;?{N)R+JooWaVaL1L9sS2S@M-2stymrB;l03Q= z!bLwyr>I*FaN%@4?%4R)tM>CP+-e(Yj_ zr#2RVu<4$VfQtXO1tuRl8q*eN?sUH}IZ#XO7bXY2HjE`&(b_MJCAwaxEijhoFi=w< zLc3I9Y*IkVs{0~!ux&$Q*I6FyzCSS0nYL}~AD=l)LC!k`)^VIfhbqW|A16DA+r3!F zI*!5Dq7sO8%eP@?bY&v8L{IHMG@w0DH5oQD9zQDeWWJngAS&k*SwaJF^+lIDKJ^~MtQiE#;?`k zDj8k1))FPN(eirR?gcARrd2Z~%}(rHT@nktW-(iFiW%Y>w~lx0e2oJptrx*y>UA6j zxfXl@!iHQk0(+OtnHgx;s3iuwhiuilAl$*yy|pE@;e_3;O{H;X zpv=sqaZC?4uy{tL3s{^wj~B2wcGx8@iWE1U7Myrd7>R$PwAj1D&DZ3+?DpU6j;oN| z|G)mHWoj&mjq*eFw#^!8D3fCeX`rd(?oTJD_xt1N+tY_b;F;WYl#Fzh!sL+*K{0EU zmw#S_LNNuImRTtXq6SghaoE(Df-bC%PmlX|hax^kMS{^O%K`#JifSfZcN7TK`Bcu( zoTjJ(a*?SkQHo_E(5a1Qc-0W9D2bMu^XXXVm`-+^EhwX*P#iV)d(N+#+ASUSO2yep z5n+tPk5NYmv_t`_lLZ~xA=4ab=~zokUW6ZdHKF0h8oQ<82bTzR`EiXUq0r3v<8m$2 zLyJk4k81^QiSHErAgL8Ph?X_-f!~F^Q}=vAK!vPn^~#jsj6nu-ydVYt4Gn@GakS`( zDeW&_fR>pS?`)q)N>C+urED;lv`8iEN-0Onf;gB6zW^-@sg=Ce8Z8UQ&1q87MS#h}c!jZa*t9h0SY4x#0II+hqIi|mP*K4TO_ zUO|U)g(OEU9ZF_hp!d(GV~y#z$ew}d(DRKt3|i2!#uQPKMoR~3gl;gT=Mw@dn$0l< zn=e<0*&>@kw&Y!5hG@sy(K5r#(CoMXEqak|kweZ#i}u{~z)Qgvq7cx`dhcjaMdk5b zfEGPPri8Upzs{Lpy2qxZMcXI~oMcCfvQmZQ0<;KKJ4Q;~n%8*PN1VY{bUcWkO@ z4M2GnJK469GpqtHvO-v*(4-RtE>51?dK)$1D%Y0SDw{#IW462G#a2b8v%tkWk70?@ z?m6)5j0HF+=ID~(Rc4#5BdlRoP%_>G107-orAoF@!acQuqPxTsU>Uxn6%-xjs$-@d zwwo0cU6wwY6EO*@(G>V?X_)FIp*fMlP%b526>Iv=8M;u6BCkpbgz`0tCl(*~oB}8~ zA_G%b3WVandrrx)HX9{%Ge$oYKJAKxSd#*sU`%C?g+?bDr^l*DJhQXmyY1;IH;EQl zqmy*puLfdDp6Uw<^itF{3MeA7B;Wka9Gi5-auYJRLpm_$CF@%I4C0co3hFN?6x4@#1XWDMV_?vF zP}ecT;J9VbE@j!aE$Q{49>XwtOJ!XjNV2;8)#(KRm=4s1yA-E!K#S3gUUeeD0*elc z`P&;dR2EeoD+M7K(8`12l|8WJ#ES%$6}4Tr1(EyT$QtQ6U9dXY!L45UjR-+>5m|%V zwm>>y_0r=G8|`i`$%IpYrp2vZcEIXo2e*3Z5bf2fvWZSVEK{js!-4>uQqri1A}`5UzQ!-I~!NpEzb-8yj8 zxm_!4kT~@bw@2EUXPYAkW-}pC|0Yu{IF5S@HjelvjU!H`FnEnoEfS5pwmE9H3Zhf$ z4YygcyWqZb+tx;Q&k|z=QOvN#tzLG(ed)%Uq_*RrAo68f-0GzV1L@5id^Bp)rv?#VrUXSc_Znw;s4ZmbN*P zLsV%jZ3hGcxS>1b%6M>pEN$;YqE+)-5y8%*YjH!w)rNV5V;tDzy9dSwbSt>+sbse` z^-_T-_7z&(w$Y;9wVH0g;AZ3+uo#O=;K3M9o)WEpI0|iT+{DhFr|f{vI}(5i&^X3g zf{)*o1B`F!Yny2L?l8KYyA&-gCx>=N4r(kVpAAnW$T{3N*49``;+oogkE_)IL$_nB z<@TV$8YH%Pgqmr=Ho4v0vD_XecU#-|?X-_2@i5cc+TtLSqy^h7c093c9h`@@wiYSN zf~lF3l5!j#rNkh&oxA|WU?_0CN?AFMQme}sj;KGFmE%Umko5Z@c65`AH0;)!w&%tY znVU_4S)ig#4!qqpqpP3T>C!cO|7Ugko4u?dw~HyLO9iT}E#|g@9QV7^F>YyPUrig6 zcHIZW=}+S$S}}pG&jV@sI~{9OiZz_+eP_kUxIE*iRLwOPDa1s6$SH#o4MflJk3Ch4 zt)4-Dfhra(ZA+f#Q(E9n>ky$m&TWrZGpm2J_!Rkl&Z+xYUBrLa-pPS*TcH zfrcQ#;i1kJ$G1Yehq5=1#ib`R1>#vzV-XPyjuCUBf;($6W>uP@-QVK77oj21PL~92 zmO+iM_jm+#szZyhn|C&WTj|!q;HIwhk<$Ru{%+ZiBOH2_6s{B$q8W4 ztrsStLlE3R*H!cPytYukV~Qk&gRYf}Y3{g28`Zu-Ewqle0` zmCsa+u%e%=j&^|@1#qA!)U6*lY)RlguOx0o#4weG&wq;C75CZcrYqu^lAYf6xi*LN zFh>kERhvXAQn*^N%|b|}_J{$sVCe6FHRn5EU5IYSQfk~w>nb}3HF$;Xrq>u6u+9>8 zz&akM!zxYfYk1fJD=4qyt%(6efOV!W6-7n(*t%5|6|rLL8f_(nn)k2W&_v`n2*e;cYs$Fqv|bSY{JZ=Y7babB@p$77Rip%7SISH=Z`+d$2_U=?Y>>VkY->YU z=e2jHCPd-AQ^1a= zXe>JJ=#vDZn_ZLYqTgIW%TU`f!~)EI(?t^72}fIiS;5n~mm$FHc#;ClZEf|^hodFU zD2%vdB{?@JW7!2`;MatN+E`jWFpFakjD6DqGoD>Awo|V*)Plj`PYDTv-p^*R+m3@;eQ56`8yg?JDTd7(rux!m94B_*Mf z9TGQ&@1O5Zp#$a{%UUPe^LgI^bKEM(X3L)U;eLO+ zH`e@L0E?S!(NIcs)y)qpEQw@n+A;{-rqIp%qE2o%qU$M?r?-!(V&G6y< zLA_5YV}W!fP!gHB!h^mqZz@z~rQCn^_is*HzT(QkS-L4^{8TB|IQ3(V=_CqesKIb3 zJw-QC{*GG)xhg!O3i6OD>CHXV9vkp4Rzj>{KZ-zYanWCcK6ouETv@taCC$(admyr#nNCVC#>OJyQ4<@D5o z4e0P`+b+3b;?DCUcU4j;^Fv)^R)&NPivbP~r}uTaZp@E*&1(Eqx`gW~pLa!=fLmj^ z=Oe|ZLOm0_{cTZ8IZAp_q6kIV&?>lvJo^}$=(7(BHqYqn5`AU&i88-+A0}6J>T*zP zadrFWnb_6N;--4-e&xiu#E@mrP(197RTZe0bx{c3l;m;EPfu15`T4tICl zP0Y2V+^A_pPi}Y6oF=)Y;;1g&yxTpz<9^dIc4rKOkII1W39N+&{xEuRR*7^Bw{Y|S zC^Tt8%u)Y-KFx8qEOlv|DJFv$U+dvZEj7cx_#$0NYLwE9<{%PN4B-OZq&q_1@luEJ zJM@ve6ZKm$e&si0$SND~?r`{87i5RA4s0u`DYZ$LlyQZpy{Q1cn*-NQvtb_eXsDZd z$&)j2nJ;8EApNu9zxR{DZUCynS>huKv$}%|6|1WgHOzj9rQpIk`^({OkD!?Y!;(pW zpS6y=*;u%2eVUqXjkSVRpc-qHmPInH^?58ZBO!ie=5;J$DwRdD6L6}n!3Lq3*+z}E zRemK?JGIpyl)0_PB-DqdNPb0Vt0^!yY0d|h6`8sk`kF8`#F?+8c1F@m`cS~3DJa)a zCzQb|5{D`#$Y(06se5@8s$nvh2?S+z_3LF)%%g}5QM=8kY1|Vln?437DvldvC5`4u zC1$qYrQS=5+V8@Ecf}+)R{gP)2Q_xG89wu+LLby(N?}c|OdvHFqd&=+D}XVVF@VBc z9BYgCj$=l}j<;(rqTeSCJ%N-4x5+IWaA2mYbK{ty*wB1Z*S5?bPoNAFt?O-VL*jf` z`R$!3g51|mFV&h1>IS!^?ZAPimjg2^eGC4Vq#ZQe7=2He)=2 z>b!U0)tbOnx;w1&(T=abc;(JcV8lsVkp{Q!KQuMZNpaU|A5n&ogu6c zbAi}SU*kO_Ur0-ZonXTFyywv$i+YBpt%$4v9U)FduqR$XLEtca+&_GV zIavX?^7&zSgYjSwg4_<@?6=vZ3nTE^VD{rXPNfce?yDb8&*ZY>bK*By-M9Or>`3Fa zEXfb=_c!m;xc)P%^0Y(yVUvz^M3*d7Gq6RKzT0C*93FTU>cipq^{@|SQlQ@I!5Esv z2Hig0a6$Z@7ljVT+uiZAVgK3gGhKd{=6J(#;9;LG@vbM9 zW}#DKS`u7TOzSp!to~f}obHjyqP4%Ss&&CB9w{#$X4InK)VWqTA9|ENo4UHv7Ea?x zSAe3X3g<+BS|BF42ikR5ZB6{zwx-l$=)MJMcDvh~Z}q%F&`Y~YFD+Oq^?<@P88J&m zF3Rbrv{e>~7^*^Wp1>vRHxOZCj5(U4S-PX$>L4!GX0E6p*#a?%!k}8Y&>lPj6KVao zhkJ;?S1*pT=nRtf^@YPVaBIJ@6`PJ9>)s^yL z1;6arW=PK z!m!nab8OWq8t^=^H<7~W-#|uM*$k$^t67XXGDyL78~>u3h-OIFMCW@XD@haXry-4& zmp)R))Jk#`qQ#@#EmD+Sxx##}S5cLyDW1pj1>8rC^sqlr7a31ias##H(`jm=!ZrHs zrSI4Y`UH28=tMC|lzhJ;eAUHhg)E~Tj8=qo`iY_)6-w;__QqYER$0Gm_7y@8g|lTz z;f8?D3J0V|pvu-=8^ykYa*?-K&B|QAE0fD~;k~*R*dh9mcJW>}O5ul9R*w~}P*c9g zlO>@$`FSDQQF0f#TeB4t!yrsIbPB2rt#nz^CB;k+E`Z7u z|AkPY7B`pSm8_ICdA=9uAZkcY09^o+X7NQZS?A8Z%R@4S>bne=Y+aOo4N<|Drh`>u zik#0(t*mRDb4~(kmnTrcFNVtB3yKz1y zvturUN#+l(_4zcBMUVM*Hc@d!LJ8w<6qXD33I59NUxccO z-fmm};rY8Hc9|nL7UImt$~6Hey;S>x2!yx?n@QwKMB`WDBpoD2WfDy+!6r*B(Q@+& zyDPY3_8+@YElxff)9c+#nmc`(^{%RX#h4>eB2UjpT~; ztR==I%OAcH4?8Do#4E6SzDvOTaH#WCcjBmCq6u1J)SFHUm#FSs7GjBNN|dX)uDm8? z%C}&3v;$T@J7AkI673qf=5X5MD-!PjYwOuH%DMpMPN>BwohxsVi$u(k7Az7wU=2kF zEXqAt%;px&7Plp~Db~`osd-Csh=<$k^;e5%h*5m5OBi8-I{^@@IC4)4T$8M<-P+b8$x=Pimi5+=bRq6sAf#)5kN}TH9mND}v8$tgHmaiTYHn)l zCZEnNKZI-Ok&{vEY-)S3I?Afm;+8D>nX8J#id}7W(_iPqx{lB}X|a2$R93SVCxBVu z2*eWviQ}LuDu1v=qV8Y^da%5n4p{zn2aLz<Erq)0Kb!`1=ASx30;V(2}` zMxM~XCW^TI(F@#RCBBJ1-XcWmT=gS=UXw4~l(=hC;x-$Lj!-^5KRD z@Vxidn{wzdn_Ju(9=*rh!Zkj+z@ddp#-*a`0kYesyk({Kz~Xq0e-2!iLN#c_#va^6 z(bo^J!*xDLH&MA3(!ElSZ7P7zge)4GRDh+1&)q4IGwyh&FE9p)=(#V%J$1hBcDT9< zf7-#tKT-!AJn+v6ZF)}5O-@2>V8Z`$nAltH+y|!m#PK_nl0!;-zlR4a&r@pVyf<3x zy-200w)EJU4sR=%8tNEDJOfX^NR@VY#JP^`ZboFsiZD?}R6CeV_BsV-F;4x8$y497 z-7zt(E~bYUO0yfayf<=ThNIT;7H;#Z5AImPcE&;P<~TfndbSYhP*&hl{uE~Aiw?sD z0+p8lGdQ_`+%+ByJwFkHp~nPjI<0k>5%OG8k16mIG?;)g_*zspe|mn97!v9$S=Z7_ z-u#XeWg%Z~Q{C65J5}Zglp>n;u0f2`S>PO{r*}|$`x_!Lc z8cXP#qKT)RtuDIOh>xuJ&}x07`vQqT66-Uj)*^E@TabYU@(oW<2orO!o+M}v zYSZ08Z2@&q$*^1ZCBJTdbf>uF)=gu{tebcA32-C$Hme;}x~MISFtCqEu`chk2da=g)P{nb1(toS3T zmi3~pV%IgI4q}yAr^*WRkXOsbD!wgIsozKw>E~W1s?NZ*zxa9Ri6*yp zsqOtMpPi)=)`;`^XbMCOX2J5?fZ7GiyQlvkdG8@b9RnrI%y5dnU7ACV`~QEF;~95| zkD8#BF6}tY(Um_Y#|Jh2V{-f>W;O`~S|l_-$?(Umm`LxIDv$upKUi|S915JNn60C6 zo2-7!c~`R4k2&vG1DA&*!R6l{lV&YZ6BfH4bKZ>;Kjyq=CHL=e&bx(dE|CHi4h0db zIM0wY9nUPiOd>ZaCl|s*Twu+{#`&H5F(sT3#E&WAzYDpVKc<9#2Mbij&W|bK>|uvp z;>zL)*3ZZ69t(;5m=Zo(ihqb#I@3ptE5r%@jbwV;8mA-URsuoVp~$v%sVjKQwS;#nyjxxhyr)-~yn%QE6-`SDdss~#|xCy+;B!|r#`6%>`>`*K!LO2(!;`$R3$+>?8>0&f~P(U6zuGQ_OKxK zx+%25E&=l?+F~uq0GjK`24zX^`}?tMQA@6Rk8DSuhL*UxviEo?=_|+&8w_tttHKOlKs_7KcOvW z-lxY}ay+(7gBvh=Hm*s)8gB>J_Kh*c8knm|jA$L8~3lHi^4r?w?A`P!t=xamV}lHeV`)mrD6hgy@v z*y5IQ_6Nw+8c|+XTO8~q*o%ce6&&qGHyy74(@i&+fR%ynrU`J?XYQPCN!N_+Bp|Cn z;7-G-#m*^>kaq8v|Cn{pI^DEu8Tt_9xRcWHI|X8A_X}fa50yCD{la>u4ES2ov;?r? z`GigtFa`jxkFC9QQ{$LgIbzgo5RiS^pcVVmhX0V#qARQ)&BQN%OrE3L*W{ zO&ZIU?i^P!G3_kJDLLMA&5`5BngQr7U?pO95`gtcCuln3 zAfu21-{oK%dYe%mtgJxK3$q%HfVR)ZByS$s0bx*ir_C%%wc%3yrHFe@v_uJK$ur!n z(C$%W6Azhg4Y}b^fCHP6*U?;NeHHDe!AiHq_J%?wn5^tIwEL{AT;`u4sJ*OJ*$O@iySVM&)il#D}&-i5^kcg_EQ% zH~GrCP!cBA2Lw{6L8{BGoMs`kLSsUin36uX8QlWA(-tCFW*YgFJMV;6)7vQz$(d86 zTI!taX@Ulz1W#{&-`sJx3O_&IzIydPRWB&wTr8Q(N*|vyl9k+H-CzxeU80876wSB^ zF^-4bJAB}p<kE z9!XFeyv9%qu;C{6J#tn8JQZF*g$T_tkEHou76Lam8gDl?Aod)W5HLQq>d`1V!7>Hi z)?}>X=X&b$`R~Jfj_d055lM@4RtP<$yhO;$fnxUQUX$mC)BY}yAl?Fpq-pc-MF<~=S(}sntIwXr`1Q8fD zzT{Z5{rpu}kyTdO^AQG_RnHtTTU0zO7< zpoeyhoxB)SjiIeBn)Qq_k4qjtJlWWxipuAQ^d1q92|e%cZVe5O5WO9q9(OnUw|hOp z!jKmuP2eT;vrt+ZXaZX5eN@Uxel>i4mq9awe%CWw^8&q71Em8b>@`$Mz$q31-Lw*S zF*O^kT9}*;l4_u8+@nh!kZ$NGjLy0!)!^ul4sY85k>r)jOOqX}U~YIIu6V-rxL3)W|!ixC4rs7M;7C3rb0)9TSV4ZPOBTC}o@GuE%)Voyi_OiIP zzuP_RIK_N81~IkIxNLivVDA0)*I)elXPk`OarDxjyy7J+{^MXXPp~rY^myoTf2%pS zFEuI_NoKvR_xXlyTZ$Q*Vj(uw$~S0EtQ)-(TC#UaiDEvbfg}(?!=yv1?$NK%6+=sK zclv$r>E$I|e4Nfm8!336#iOsrFX9o<4u^Js_q@HcgWo1_sT-jZq!9PzvFY6%C&PcI zhi@PCI<&nvR=frmYTGI7`otc zm|R!Gf3ER=w@Y_$8j~1q-2?W$1h{)dN6%MH@TkM2`{LKbU;X;G!@vIWS9w5qvkKAb z+Gi>u1l7DutPhyx_uJnmO_;=mfe4};uqUl2wcT~fn5K;$lG^lJh%c&5ZxBguz5sP3 zs9rCoBu53+Rd+)BpuH>G)SwU3Sy<0CXhFTvw@U0WD6D826m#ObBHde_j^$U=z5ipS zd)eDjIFVf}#9A&~TzoV-_9$4A0(U4D$wp@f5wXLMp|LC@I(+)$so8&kQ?pn{Gvvdc znpJ3hyh@@uG#k_`E4O)mW3r*i0SHmmalyH^|K(wpl<MvUh)EMCTpc*%fpZbHPpM&Oldq20G4t*6k?fK8h^9OjC8MK7PVqv_3P^$UQRryV5fv^VI#M b-mj@@ZO_!*31G)3Q`WM>o7(Dp!14bAj_6Jr literal 0 HcmV?d00001 From 826effbc42262871ea05a409705b4ef9db84fc6c Mon Sep 17 00:00:00 2001 From: 0KepOnline <78259495+0KepOnline@users.noreply.github.com> Date: Sat, 7 Mar 2026 19:41:06 +0200 Subject: [PATCH 2/5] patterns: Add enum for platform types in EAPd Resource files --- patterns/Spore/spore-pdr.hexpat | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/patterns/Spore/spore-pdr.hexpat b/patterns/Spore/spore-pdr.hexpat index 8dcf1f5d..6ecc1677 100644 --- a/patterns/Spore/spore-pdr.hexpat +++ b/patterns/Spore/spore-pdr.hexpat @@ -82,11 +82,34 @@ union version_t { else u32 number; } [[sealed]]; +// Platform type (from "PlatformType" enum) +enum platform_t: s32 { + NONE, // Likely unused? + GENERIC, + WINDOWS, // The only known platform type so far + XENON, // Xbox 360? + PS3, + REVOLUTION // Wii? +}; + +// Fancy platform names +fn parse_platform(auto platform) { + match (platform) { + (0): return "None"; + (1): return "Generic"; + (2): return "Windows"; + (3): return "Xenon"; + (4): return "PlayStation 3"; + (5): return "Revolution"; + } + return "Unknown"; +}; + // .pdr header struct header_t { char signature[4] [[name("Signature"), comment("EAPd signature/magic")]]; version_t version [[format("parse_version"), name("Version"), comment("EAPd Binary Patch version")]]; - u32 platform [[name("Platform"), comment("Platform, 2 = PC; it's believed that Xbox 360 and PS3 are also supported")]]; + platform_t platform [[format("parse_platform"), name("Platform"), comment("EAPd Binary Patch platform type")]]; u32 length [[name("Length"), comment("Full length, including signature and header")]]; u32 patch_count [[name("Patch Count"), comment("Number of EAPd patches stored inside a Binary Patch")]]; u32 sample_count [[name("Sample Count"), comment("Number of SNR/SNS audio samples stored inside a Binary Patch")]]; @@ -136,7 +159,7 @@ struct EAPdResource { header_t header [[name("Header"), comment("EAPd Resource Header")]]; u32 version = parse_version(header.version); u32 platform = header.platform; - std::assert(platform == 2, std::format("Unsupported EAPd Binary Patch platform ({}): only PC (2) is supported for now", version)); + std::assert(platform == 2, std::format("Unsupported EAPd Binary Patch platform ({}): only Windows (2) is supported for now", version)); match (version) { (1): { asset_v1_t patches[header.patch_count] [[name("Patches"), comment("Pd Patches")]]; @@ -154,4 +177,4 @@ struct EAPdResource { } }; -EAPdResource eapdResource @0x00 [[name("EAPd Resource")]]; \ No newline at end of file +EAPdResource eapdResource @0x00 [[name("EAPd Resource")]]; From 92b86d9b049699767d9fff1e7d8ccda377bfeaff Mon Sep 17 00:00:00 2001 From: 0KepOnline <78259495+0KepOnline@users.noreply.github.com> Date: Sat, 7 Mar 2026 20:32:20 +0200 Subject: [PATCH 3/5] patterns: Fix minor bugs --- patterns/Spore/spore-pdr.hexpat | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/patterns/Spore/spore-pdr.hexpat b/patterns/Spore/spore-pdr.hexpat index 6ecc1677..1a1b41b0 100644 --- a/patterns/Spore/spore-pdr.hexpat +++ b/patterns/Spore/spore-pdr.hexpat @@ -109,8 +109,8 @@ fn parse_platform(auto platform) { struct header_t { char signature[4] [[name("Signature"), comment("EAPd signature/magic")]]; version_t version [[format("parse_version"), name("Version"), comment("EAPd Binary Patch version")]]; - platform_t platform [[format("parse_platform"), name("Platform"), comment("EAPd Binary Patch platform type")]]; - u32 length [[name("Length"), comment("Full length, including signature and header")]]; + platform_t platform [[format("parse_platform"), name("Platform"), comment("EAPd Binary Patch platform type"), color("a0a0a0")]]; + u32 length [[name("Length"), comment("Full length, including signature and header"), color("a000a0")]]; u32 patch_count [[name("Patch Count"), comment("Number of EAPd patches stored inside a Binary Patch")]]; u32 sample_count [[name("Sample Count"), comment("Number of SNR/SNS audio samples stored inside a Binary Patch")]]; }; @@ -118,7 +118,8 @@ struct header_t { // Join the asset name and hash, treating it as a file extension fn get_asset_name(ref auto asset) { try { - return parse_string(asset.name) + "." + parse_string(asset.hash); + if (parse_string(asset.hash) != "") return parse_string(asset.name) + "." + parse_string(asset.hash); + else return parse_string(asset.name); } catch { return parse_string(asset.name); @@ -158,7 +159,7 @@ struct asset_v3_t { struct EAPdResource { header_t header [[name("Header"), comment("EAPd Resource Header")]]; u32 version = parse_version(header.version); - u32 platform = header.platform; + s32 platform = header.platform; std::assert(platform == 2, std::format("Unsupported EAPd Binary Patch platform ({}): only Windows (2) is supported for now", version)); match (version) { (1): { From 47dde205475873d94ab5b8949388a13e8b842f3f Mon Sep 17 00:00:00 2001 From: 0KepOnline <78259495+0KepOnline@users.noreply.github.com> Date: Sat, 7 Mar 2026 20:34:57 +0200 Subject: [PATCH 4/5] tests: Replace `spore-pdr.hexpat` test with a custom, more robust test file --- tests/patterns/test_data/spore-pdr.hexpat.pdr | Bin 112220 -> 17314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/patterns/test_data/spore-pdr.hexpat.pdr b/tests/patterns/test_data/spore-pdr.hexpat.pdr index e3c28e22a4efbcb0fde0b80b6d94bc634c020b85..bc23c36d826bc1f50b88156305c9de53c8e4c884 100644 GIT binary patch literal 17314 zcmZu&1zc23*S~ak_tHp6r?qr7q0)0n^-aei_zkX!`%8^-0~=?e+Gy{(-+ZoqVH zy`As-!fb+I0;=}+H9g#%J?vo?7Q8SAn6Sj}v7R!x7mg`Mb&8 z#}R50ho(Zx1pm@qP*@V?@Mp(AbO?$`!hB%&J$?S(AoN>>H_QWS`JW025#*HK|LraO zr*f!8P(Tu9>*?nKc>xpt-w;7D!N0YLA*T@%_+Ps)5)T21e~d)>ASfgZp(6nM11zLO zL|p8*)pxQv6#bBo;x6{|qJ(NQ4COPe(+=MgN~gLt=tdAua*C?`9nYvvanF0@snx z*3ZY+)BP_d*m`<+*xUL-=0U3q`vbWD%Amg?lmBq$uQEaLe{>XvI*R;5Ci?#j7DG+~ zb^eX@e>FnNAOQX)M26}=gc8V}(67G@mp~%>&&ef`J^w9)dO{}rZ8&lgWYYgbiiG3e zQlw9U|I+Z=tACn>#0UcKA8LPl02%i;6QE^+V1Z`*yY#mS|C~%n25?b5e?n0Ce{D-D~ zb2UFi=6`avu&5wRSWFBnN@Pzh{QJ+`R)cWBUsz zqT<33ef)J8%+tZa=dWIhK=~!|-&wuwp*Ak$+&BJE{@>*Oon8Mm_P;`8WFtfHH@1Hj zBBS+hLL>u0!SZ(@GT8q${13YM$8e+&8Pj+J2J@0WL9=LVqWBXzSzQ z4Ma%+00#O?IRKao2LP#%-=BSCfsg2UqyQ8`A~*(4ILbh?hb3?$l3Pdt6Tt4pCPyRZ zZ%I$6%6_eI5|@QD>3uu9A0`qP(T{GeX5{z4>V0;q{j9mirANWj+eL6ZEeQ*Kh8p`Q? zQ2>2Lofw5J#q%-@v$X}Fe$!5YRla>S4W}rN(y^hJKRe184tKz2RuQI2SnVT|Q!ZKg z(SKWOvOk+&-N7)0yy&cV91joM_@144dSW4XmFWnIyzWzeg!-;<-UfEz)lZEIgu?+~ zbJ~rMG8|wM*nDzVwFEGD80>|v!gU&G!F%3udZ{zw9^_MK>l`q)XL;Y)r%0a*=pzkZ z$qNw#P|+xK4xE=z-p~NVVxX0vNss}ngT|CukjOEQiFB#OeHxx}o_dx*lI5j5DKi+` z_f}^0g7-2DZy%CXPkCK?1WzOx#!pNjzX=g)V7ki|`BjSbgc$ zTp#f%oEoxOS8$nL=Oe&Vrt&k6QT!41SQ@jMe2DR^hS>eDi)48>>;_WD}G6jFNrvS7uOw zCulbEFm`7%_1Z0w<9BFv5|OQr z5fnyU*{RkDVwSAjK{I_%5m4tq|IIn|F`**k2gi3B5N;mbPF{jvCQ>2fyeMnbyA*Bs z=qERSIlbqT!odQI^Mct;;MV5+YO)75gRn@z@(4)XlsZU)4X`XwBchom+@)B- zU!@lKE#Z`33uz|K?jS(LgD+!0qVgnl$0o2*23}eVc!->0nDsBjx;tp%>enxz+D(&OqS&-%Rt5qKof9M=~ zNL-KmtMJWAerl{m8KsCVnN&>gYuSy$V<-zQ#wX1MS67wG8rYqHJ~FG79!;y<<$k)a zzj!4^LJcs}Grtn^Ij%6`j5QW2ywH{M?sQ50{(at-C5kNUZB~!Y_SsVv=4^*cBNpn* zkA+V|+&n4YW_V8oS6$t~0Z)CKU%!jb&^1^c*fO{Je!tTudcT{+k+rUN6txIn9=nP? z18r7>gm=){tM+9|{QHIGu{e8?to}Ce9J~fWOE4_mox2OkbL5-d4^4xtA|@$}H;I&n zk0G8W*rMiJyE4!5>MR=GD{uJfQ^!gwtQM|2{!raRt$O9Xk|le&fXXL)k)q=WX^|oc z*I!-e#_=|3juy{&zD|k^t2$oCt>liIe#(JWNYT~R-Wrxyt;dbXUlHQv;2lV-Pb-`5 z?mGOaG*aFO?#Y@SoQ$p}E8lEFSaJ=_`G}ncCTofV^a@b0WsZwRcD247O zwb9xoWFN^EwfueWIYF`gER4GahB7ZsC~<{ytjJ`W@*U5LikM}J1#cx!a#FmTcv?}( zAej2Dm`{J}bGtSRYUIxNdDY3$gQ2onM&esq~y^ ztooO*CDs7q;s%qJX6Mq>^!%6vW7K?2gHK}xW`oD?5IGF2PY2DmscB-f@&!HvELU}P3QG8adj3kekL=d`AHcQs)Hm}nWKzg!tp)OlnzGW1k}KgB09 zHrp{{Pnk8JkKWy6PgcKgnFz%g*;k7iO@U%-AL{WX>3y|8=GUK zAkb{MsZlxoGIEsuV@Nqk@iD)mVEVyCbwcFh`j&p;03rQY&CN{pWQ=KEb5gA5FTPf< zoUEUeonX;6huQ-Pa3!41Zon*)NB^$E@srxn7YF;Z%(L81U6jAd49#D?^cTbyVMkma zT&vQKNdSGs&8?-H-Q>$FgnCZYO7pzJ9N0Pr{eaX9w;s+7IeWW}m6&DGmr6G;i^240 z+CB~M#e(+)jY_nn=2ZmPIrOzwZ1-2=W6t~V?_CPG zJ^PqTHpTXBu?E?>J_$)O@#d`m2$kO}KuNixmvemZ+!w~}glQomJjZ736Owb2pqojLDm;|3bD7`SuF zpEGtJnOB5M*N?K5a+f#p^f&nh=6@DfrUFtYErlOeM(%2I%=ugK!~~M*M=QaPgGD2I z*EU_hT(sAqmu(j>4(mzVGA_-z%0G8`)KK~P3e{QQS&T&{Op1IF--c3aUsQ1@$p0=dUd_@O(hmNZ$kmyCO4Y0a~*fzd>n@LH*%oa8!%9Mq1M~ zH?-qaItkJ2{M?m9q6;PS+y_#0fOLx(MZRV}OQ(1omx3|KwsSaPzI0gJF$PqO+fWRl z)SJ3_HH26HtMlNu*B0 zjd4|BqS80LqGV%@{i-TNU_hxTv}>h;4uzcKtL5yqzv1D12ojQCCxx2UL(9>Gx|{q~ zFLw>lQH7jISnv6U=@Sp}#k-*Ub}c=4py_`=YL@%KzWlkxk&L-TpxR)j{^thSxfM>u zH|yWshK!6TTM1q_#s(vCT`e0GgJ3s$OadOz6#Pv9av7z;00)gAsi7$Bdw6MP1 zP2w3gYDO)91qxA7QZ(x8geDT_yjWAxPS9aoX7LT%c30fE2ypk4Bi_V+=l4z43d$W~ zFUnZyt`F8Z3=>eq4jbD)K=~-KKGQ(icJtw;?1z(=>A6?8Hcy&U$Z)##j1FVTW}az0 zn33{r$m~cF?ti29-g<A*N^e-b1hb8NxraGkF>td9c`_%^rW< z<9ztfQn{a1;eX9RZ=K#>dL%A7rd;^5slDIbx8cZ_nBbnLV$+K&#;`>4p4@C4|IKy{ zZFWuvA=v#pH9Tj#8M3nK_+&d7)MRpuCG<~@6t^5 zqxR?89xxrves4E4?|{xb!#gs7Lv1)t3ji3+=~8s}-Biv{h?p^~mk^0iGVz;m-Cez% zpDf00017%r+EF&}gWzR01O^d~MI5vbwVtQ{>_kL;NvDkp-015>1Cz+hdse;ZzhJP1 zL~JJUz)ccfM!6fQs<~C|t3I6+T{q<6&+fCcvz)(9_%bM!UAy^h3zaq!or=c}Xf-IY zWX8Szge{C-_iXVA9rxpk+LO|jf@7l5u97Pug?n#8SN+nqEN#;`+7-(}3wJ?BC7_Rp z_(z47)zET3i=God@$SvwCo0}Mfb7c%6bS~AmLTI|>-a6d|L2 zwEW2|{5x6Zvp)B=xr@KmF(y2sl!~&Z4_) z{<4oxd@rOz^Y4C4<4$EkP47pcPiHo8k`8}mYu;~`8lw`?j%RaMo@IyTOglif`P+T@ zyq*GQV}5t&*bQ#}P#J*Cp`ht2g?D3FTT|=15Yeb%Enq5pUzy08YRJJ^#^K&E`aZuF zKMq-cxsH5!(}V|)?OouYi-n}h^M@}Ej)P;#c?0{>% z_d9MFgq>-q-5xH>li#1j(Qvl{{ArgksV=GoUKo7WRB)+w5u6G%<|Dup&KUi6L4a zV&dFXO}T=ySmH2w_lg46aLY1YMNiErPnih8@ktd-!+!sDX}W*yBuK1x>2Tj= z;*+^(2JQCfhKGb5+Yf*Muc|dW1~A8bz6oE&c;M232pH?xC_1JgJQWQ|f*0 zl4AyTaEqSmRVPL)70;f7{`oUXbt0knBC#E%vd2owqb^diBF-<9fWFjp5{ncfs6IOr zLZPHIjA?+0GIsA0#Qw$qxa_-0?wBZW^(sEoC`hRMQ$vB>I?tRn{aG`NVZ{^e-aA zpSCk)ahATcpk{lT%efG(){A;k|7@+hrIMR+#$?@5!f$h5Aw}lmy{z$*L%`Qu+&Y+F zI>56ZEFH|XyA{efTBfuk_AG?O-kX7OIx2!f8o)~jfZ~~Qjt|mMEA?J|Z2=1jT{%%h4r z5j4s^9qY<>Z{7YQ#k+Sh9y>x9PDS0Vf!w0p;THsCT;hc%9KxIVeKv+Rvxr zuUhYzUOskZ?IIBa`lzM;Kun!bYm;A4qsJdzCBW507IBvJ*~7I=#jfaeC;o~=&6E;3 z&^X88*QqLGM;fVY@9$9L=t@F+r}Ad@C!H^*IG9>xNMH_ZDvrz<#*B2q0 zUZ%}3m%G=<{ClzzW@}wnqW2!P{^YO z+wjbLXQB$OCuldRkD=p6u*^1@;`yE~OpZv*j?fs)@JkPT3skFoH4#fP`3^CA^`BSZ z{#ERO$(?tAem1m3czf9r!;Hc2o0x0`?6Njqv=Y_T_7ac~z3LkOgu}O$cpVPW)F+D+ zBx!0;eBQ*T-enI)#nEy3%=-9EWdD2K0P;a9%6_>3hO?Z04-RrdLN0HHDf$7QBLm6g!EdB@nPY4&rS5F34pu$GH zORj+m2$@3l_2htAhVu2$E8G1ctCH@x0(T=bx`e}fbk|Am0|p5D-m3`qGWpO~x_@;d zaM&Sc8e5Mon72U#r8n1tJ^GI>B$-(IBkUqrRC9#@Z{>LU;lyVN%lH~gm4?@u17Fah zvwrUxktf6}(20sztExgeD0X>`1FHJOm%NQn67!(Q zD)?wkXTGkqvCR5oqHoU18_oZ&azjhCF8^Zft*1m;V(wTmjCW({rio~u$NuQFzF_J( z08h8KZI4mtyD}&mg@7akw#y80hQd>!R7HC>oQolz1C|MUO!vK!Xx4fRzqFaH_oj~a zI9FJ}e```9vgn3W>J&JdST8c)C;T`@tu%~B0stCDO03{188Jzc_(8S+orU$Q*Dv2< zx|RL-^=ZJ@$*uP%+a0vke6Q2dFJCWng83FocelP-WR5nB*&gKA2jDVXB(2YmUxEL7 z4I;8md}Hp1lO+I{{Azbs`yIBJTj44N%DMNd?~tNNW#3;jlY4U}Te~%7B{F04v4+qO ziaIK0ivVM5(`6$P+1SgCEQQ*U zn7u>Cc|L#32GO6)?OoM=)#vMZ+{Tw%XW^Kh6B47El&&SJ-@j3+>kjv3)wwFwmu3gb zD!nFy8C$_I*TVtk60~)Bc@FXn*>MdGxMB!EA`jN~i!cZjJ32<^#*^{sipJ-3O?QH|YpS$>K1$}k6zQN3%f^JCp-szN z8MJxQ*&$(GkxJrX?QP~o3gty9muRk|C$?@dk3ev)7D9>wHSD1gykt3^MBRzns-H0cTU%$d zpA|g%BCX(*vJ?Gt8*8=7&5sQ?(Xo~h75y2NoiU7?CX&P|*L0x3{ zO>`5b{a*HN#P4T1_FHz?{B@t4=aYl zlW&@X4FVKpS@be~$EFX5{D$G(cni0olfIxuil*|+auvrYl#>%|t(ZFg+XJj%b~HJP z)-7e#Jg=DvY$t4)Z+>ZmVu)k5GULRg9dY*(%xg`>8x~t^cN4F%L><xOyyZ}6 z!RM3mz_z}e1`}}?&GYI+!D&*j812iT7;&}c?i|>J5ikwhE!f3Esd>;QOZe1H+iXd31~5afGca(j*Agl1ANOOCcM5*Ei3*%!;NbBt(U*}MLyd~emdCzEJnfz13A%zgi7b~yXHrO#)c zz#o1dl6u?-Mua_4Vjnp9-vm-?FnNm}H zMfkv|qOxe%QJ|{hMS9qq)P)2wE zlE=wYh^MfCZaun&mv+GCA+vP4>M{Y#D+x}_9(DtF)a5w5fsi)S>Iu`}u*CqXO+}MF zC&0fi9t}KYajFWPk9DvRv)N-xLLD@S&!i(4`kiu_$Ji~Qxz<<$T&g9C&4o@rM~ifM^2T? zg~d{P_$B+ViP1h%`_6s&XmtI>@d#B|p58P^O|92nLTxooP%rR#DfKb2_|p(Jc41n$ z`g4`@Ua~N~#F`%*R~jIT2glF3rh={S-*_PiiIirbk`-se#W6gN!z02Tf|(fL)QOh9 zS50s?^>OqXlkv^{yQujYuenw~4#>#ML)ZPU4SUKL1x~!eoPMB3$r$3u>^;$Pdi>&) zlx7)dVPPW#w@o_d0vkR=(!`dPOD5m1qmCbrkN#GCLzz9zTG`yIJD<&3h@I+@i4=?M z>f?E7oDTL+VaSWHO{KG+_8@*!mI}}mC@FE${Is=6cB!WwkL|rfCu_Nm$6S_hF=fBX zK`d@G^g2{g!JTQmiyVjS{k2^{QzprvoX|6n_t|7qiyf%pLx;Y8fe<$1=?WAdN7 zgNO{DdvZ5M8k|TvzQ={9*VWyYAJ9nZtlRQ`mg5>*Iz);my#DF7r!Cg>%PPxQzuAo& zBQ>qvCV9#m1S4hN5qqB9pv>3y4)7S{-^0AZhM>!`3DZ^lq#ALPLcLI=WK2XX0mFLYxjT^>nMX+F=VZ106! z;Bi+# zmL==fpCR&o_48G}f_cVTEUQrLXZv02X_Yy5V{Y45a(yVJ-ZTv&GUt<8>|!>KjLe8J zWyi~!Bi8GVy=%j(jzRDV$N=(PDTdBlzXI+8Xoux0^9*ixUFf6a*bSFta>bG&q??MW z`26PE5bv0`2KlUjzN&1SZdDWO6_hlR!A)v`ZB&)Em%Kmcad&@YuJ_g;IqlIo+Lck@HLuEl=4lgwtFuaUsZU9))l-m13 zP`XfSRd2{xHLn{bwgp*Ljeq`D6?JFH*VB_rHdCh}Vq~~jdq-Cf&pepx^i1<-#~=Id zkJmNVJ|TKpaZ>QQE^UojV&KNqn7WE@62>J?PwD{`n(umKPR`9Jx*z`H;ul;JvkVM3 zuZaV-#tKr9cNQq6!*q=Ww@}VlhIMi1o}qbT0{0HE(K^l_bNY;vB8uWEiG0-46Gn70 zv<(k)vb|E<>av-?Mpf96-L6qV=$!I+@3irX`)BoW7F>%H`uOV;+K%2E<+IemTWjHG z9|*dsI^b=wpgJSG0i?^J(1Q#7m;(NU6g*O)_}|TlgfA;&ySrlDC!!715u6}P40(cZ zFx_Q~^|Oz^oEZ-V$m(A}HSlcR89I2H6ohCBE-AX~;l#QVK5PF20uTtPa3M)2xnp>MZ6Bt?K+NRDV%wJVB?akgvOLiMa@1G{;oRZtnc){D}H2E(I@~SCUY|ueK{@#Mv}{@6wuM zCk1>W=X&aQ(RwwHJOLRY(Q6@f2=7uXk%D56gXayy3NsWU6pQ|iJA>@wwOH{sk31(u zE;Wp8aqIOCi^jeOJq1}g+dliW3hpMKvDo!sbrRmIL2i;>azvxAC6G#jM?r&yZF)xs z;{oJJ*_;m>BJk8jwq&qa{JriTSm)LphnL&mqR=|KT;h3o8-*eeL2zhE(E8ev;P{tk z;#mPRgqt9x4RYu9fPZiYhZn|V$CBQMLI-~Ij5=<|*Aq7Yiu4m;uNiv6?OwgAJ2&ij zi=xc&G_b+1m5L*2H8snm5%!Q{Fx^#_o=_EOm=T`@Hp;;fK#156t(7Yv=q-LO()?Ar zL!z--<>)=%W7F_ut=yWHU5(d664$b35_A?uF4T`=o5R6+%wa{vUZy?9a<{D?cc6<~ ztmC^|C&(QMv9*+^rcyo&56>s(my)|=8ki{F)1PF)IJ8Wa^RchWw@Fm=VXJw21*8() zjX#RB7FrB9-|yQokEpzf#GRO^xR%C!iuFwrAqnpMOc?ql&t+WsT-ZM;oGCrRjj6j= znvQ%!#vx`~TP{uAeR|w}%3pU+C-#nQ#bdm?x9|8d$~aV2zc(k--f#HuS}AYTdtvnF z{M``fz7LgmfkC#lDYGTXxD%1mQ>GP^Ct?wlh^vR3EG*GFN=r8@M>Ue|mIO22i^Ywj zac;k6Q86T4IR09G+7c|Sw6~OS(d7P-i4}``cS(0@?%rd635w~HH&_nj#}vVrn(il{ z#q{M5@cI7@Hj$4R8A0sOgJ0s!b=DL`L zsy$P~@%EZ3rX(YwEEd^(s3vV+v;-j;_CkzWcg zn=-K?fB|g)zs{s?xb6~GTQnbwIj)8hF56_E&NUR3@?_^g^$?+X4&g>_9Hwhzm5aJ- zq`bp>s}}DOD$sUe0^L!&8HABkCjNY@g2@lZa>-9Big@#(t|M9C`;*+CnFk#~F1TcM zTI)>qPR!F)8p{>r)rcNYZ6+^u1rppW`w9{0R) z_^U-+y##zoe+BeY3T}bqm#T)Jw46!`@~UpIHaga7)#<;|OZ#RJ8W~$rtfP_nDS9~1 z>^bZBkL2@?GleV5%Ti7#K*YD9FAW_KJ4X-zv9>@D=8Bx=sPiV-1S(%84kDF6dHI7y zyD#zTXB?po%?b{`M^uf^-KpM2U#^h~?mIVc`X?&UausdOCgd(_iqLt-D<=zrLs9QB zilogMg82JMd^FojF(|^;IeXbg+O5(Q6EAXcqCcL#p^g-n?IAeAWX@~1?$9wk^85lK zUz7JtlbekpIEf^2U6PejShzTbocOtx7&a2?`qCNeN;sesDs) zZ%|cDlAzYzFR>ph_cX}7eNkCfARSEdX8aeHSK8nMk zoRsdJJE&`DyT!lzEXzRROVg$hHog=!iuARJ=_WJO2d^Ge#PzF`gtK#vpd)DR|haXWUR#+Y6@CMX7H%!;_zr;2%!Uo zS0t?9WK{Ni&tPNT^VD$8$wVw~9{J+_9JKGx>fVrEx{5GrC^xF<#@{?+gy&i?NJQAJ z=@N6UOCbzld7Q>GJS_$9h7ZmA!zTC7dv3!KF7c=!I1#rp=4(^F14nxm5nV~y*-Y++ zscq-N88WDHi{N0ww{8oe9v3mtRw2vZUcoxcVw#u+5!nzTwF&Dvi-u-_5rKt!y zpr%He!h;o1SvW?ZE2GpY>#;zyT2~Qv z7z&o`Ji$w|sc2Df_ImM(sWGMa4KNf#`m|9b)g-_5bHi)Kv2H2(D$d+Q+_yq3ZfAX$1Jv&oeWoee00=Hqup2EE@8^QX+KejgllTCYW>qC(rPVy<%P&)7-sxANE zI3CXg3TZr$w>`#uB6p#=*g#r}o`K^alORoFF+?&lYloUfMCzTCQ2LZpTcz)-h)<*i zdZp*5rMI)!DHsKsEY+X^Xwy_*+jxRuT=dKtz`A#;?)B+{dd6138jVIMtKT~Pei4

tL6D!E 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 bJoZax3IOYEOvq7d(LX;^AjPFEYnS*xfm5Ta literal 112220 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 b-mj@@ZO_!*31G)3Q`WM>o7(Dp!14bAj_6Jr From 1ed061230e646d505fc5e17a5bd9c283c0359d62 Mon Sep 17 00:00:00 2001 From: 0KepOnline <78259495+0KepOnline@users.noreply.github.com> Date: Sat, 7 Mar 2026 20:43:28 +0200 Subject: [PATCH 5/5] tests: Fix `spore-pdr.hexpat` test (total length: 0xc) --- tests/patterns/test_data/spore-pdr.hexpat.pdr | Bin 17314 -> 17314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/patterns/test_data/spore-pdr.hexpat.pdr b/tests/patterns/test_data/spore-pdr.hexpat.pdr index bc23c36d826bc1f50b88156305c9de53c8e4c884..5a589f19954ed897345022923d75ac1d0ed85bd7 100644 GIT binary patch delta 25 fcmZ3~&bX+Zk delta 25 fcmZ3~&bX+ZkOo8k-rQ=tYP