From 55fe83c7141e7c4e5d7d674590b43a960f298964 Mon Sep 17 00:00:00 2001 From: mikx Date: Sat, 22 Dec 2018 23:04:30 -0500 Subject: [PATCH] 5.0.0 - Custom Sounds --- .vs/PoE-MxFilterGen/v15/.suo | Bin 86016 -> 91648 bytes PoE-MxFilterGen/json/settings.cs | 8 - PoE-MxFilterGen/main.cs | 251 ++++++++++-------- ...oE-MxFilterGen.csproj.FileListAbsolute.txt | 10 + ...erGen.csprojResolveAssemblyReference.cache | Bin 69563 -> 0 bytes PoE-MxFilterGen/obj/Debug/mxfiltergen.exe | Bin 49664 -> 51200 bytes PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb | Bin 38400 -> 40448 bytes 7 files changed, 157 insertions(+), 112 deletions(-) delete mode 100644 PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache diff --git a/.vs/PoE-MxFilterGen/v15/.suo b/.vs/PoE-MxFilterGen/v15/.suo index 664261157fdde5d83c9c623cee55f4764696dac1..5475b5a3b7ba655fc5a1248fdaf049f35e7ebbb5 100644 GIT binary patch delta 6583 zcmeI03vg7`8OQH;cbCLuH!LP35jJKwgcv062MHm-CYu+JydXe;K(c`)1oI-D_MG#b$36Ev{@=MfaMUpHvSELQO_l<|EJ@i&>cFRCV`FUP^!!t`)8&YoyI1x0 zJn{ymz%o!Tw#$o+2}tSz>W&GDOr%xfL-~ICh3MDqFdaa_U#8;+Aykll`fhYDO#^Wt z7F2+Kz|9j8^D`GAz6V$V+xZcnAm)y40ZE_$M1vSG3xoh8SO_M8X0QZI0e1omn9OGG zkV6&>Q6LO-flQDK!of_C17-lOI}b4rEDv!$m@aK9~y%z&ub2>|g;{2)K`;KC^ z+@@;bC|)S!sA40}5Nnh+Q?yd_M(w5*;zRsair%SJCgL&{Q>~6+G3NK6dZqF=WMmQ4 z4kc@|xLlp0TB9!-JW(ZItMj-JdG=bI%Z=FOZmCo1mexsD9BQZ3gS>U3gl(PD1`$7h zYG}SBlN|#R7h9|%LpG+b$3R)2IF!Hx(lp3WxWf z`MlLgt0Srxz3J6@c5m8fLaQ*EF*ck!AGLaK;Gz6r4&MvpA42^7>&nssc@JU%4uV5K z0o?Wo;vaxVzz>D<&U88f9WtE^6#o?Qr>C3_@@B}MYO`wYyF{K_9l{ZvDcrZ#7+DrI zXT@8}kb;3eE3QnLB@$w7;}sviGoyqUh|rb*RI)84ll`H^Jwv*q)@E zC7Pz%>wM%HK5fFJ!CL`sWz@^VM)Fu+3at+^ip$nfBRhG`e~;_o>KJ`aR!N>ZdCmJe zaq1O|Fh?d@-b1y?fUp^POO_TiG*M7*jeUm>v8eIUe{TI@ zlkr*^MpjjR0V_~`6-L&?mHz7?vO$5hGtG2uQ*3|L+H_IpT`!B`rJL2wn~vOE*}NO& z)uxF~eJ%D5XS-|aRYQZ_-RX9=EqAtewYhrOnPE#K_!{gzuC`49JKxqO?CqT!d)r)9 z=m&2&-NF*g?KnJi=!22qA*=iQy2#rR=G`I>r@3z=q?MYGa`St^ec*oZ9l$$g5903v zzCLq)Fc5QEyF%{|*bYM}=~0%;$6$FJJOR?guCkcS9|h_>h4{zdY48mA3E;kl0x_pg zAq|n8$0F+;kca!+@`M;}znK_{%T?H-NvdD}s{Q&WJbMPkrG2rYZ!k0PHa-Up50Hv zbNq~Y=E*`5T_@|+`V&uG+tzzh7Wa0nSJyx4CGWF(k#TabxcFRzdidonSDSiX`CFu3 zy1fQYr&LOXJL+S{^Nyf%siara&!v(40EsQ5Yef9nu;cSb$&iLiQIGiRD83bh?bR3q zONJ!=cy`9|fmdbKo(yg6HK>O3&yyH<-R?c17rxgAjt^Xrh3^k3@%XOre>fNUuU4(n zHe9+M#C?g+u}&INY((+OeettXDno331{BBOZsLgFDa z-KJ~|Ba5&XMJm=fTBZzGDcbz@o=*mvrYw24C96Aaddq96JV#1=IN5aFEv~~6G}n}K z-8+x_-5Z-1tzZEk57T@vB2fj5KsRojxTNA=9Ut%c)a%Omf~^G>`*L6uLk&5KFP@^O zJMgtqgial}w^X6fDkV$BIJ+CAer2nfGAG}_7{|}Sb;N}$;sVL!KYo((x|vcHpP2^! zSB_@_L?KEvt+RfqnTj(Xe<9YTd|Z~__}DM|J?`TtdF7|&WaVdP2vEU-(jzlNa38*jVh`a93+bOIfR{Z6on_NLcu1ZX9AX zB^Douu_EuABZ8Za&lU!(#59Y-gyeZv)R9IX*=EtouVC6nR^UXphZq&{LY{|oHF zUpNK$d$m!j92vWV?$&+57E3e)^+35woQ-;wd*aAAaxk0Hh<1)|Pz&it60+&&gdvF% zXwJybbEt@v(F{sblB&q9JYb=(AVawN@E_C7ip@$ZM%Y`C^0pP1mT#bA@utr5PcitQ A>Hq)$ delta 4653 zcmd5<3s98T72fmjE-w2(SeBPkT;40s4Xl8KkcCAg1`rBGOb9PU#D<5k8Z3BmqY{nbE362hx$>>ieC)}N#oux_!gq7p9D}|8Ij$hm= zsJ;YGk;c=2dxZ^HmTSSAf&+?hkNjEPtJHBPhJL67BPdqZ>PX^+il|l*>Ip9s>Il&U zHKB~~3Sk)`jzGh`WfRH8ghoOkVJ~3@yH!!~yGi09VZJ)nSI^Cxoy{4kjVjTQGTGOW zxL`m&wF?Mq32g5w!g@j!ffsq0>LVky;kqE7f|Yt&72@fqD4Vn)0XoKihn3YNZ6ql?xSphM5gNGVR4YcdjykoIT0S4g9-jxpbV<(b3cRVUQPIeGon+S; zVfFkj)WvcjGD(-^*N?R2&s$LUW%fn8ZpfKq!?R%zp*^QY%VFsc0=89|L0i6!2Wo9- z7F1&fP~!Rcd>pQ|P&?G$cIwNt2{h9Xa3V;@UHbiyhST)B8h3?P^Crp^TF)ijidYup zOqfJ+bDT=3SFH?~i1x%GSDfH%Jg3?msGe%PsAXnr1C-k9)OeG?#hr2z4E|5nOA2p5 zQjL?TMJObvNGVBw0cX)!9q_H>zef0&&@4?CX#lOat&;U)4|E)$0S5^$5W)$E3C!P1 zRF4t9L&zhT2@wSDdyVSX3B!aDf|G!RQNmGzNMQ4hQT<)QiILh|@{;kbTS5Fd8WPk! zSz8AB`g?ag*MY+p1Ba)qAOE)7fK@Z8!HpN#wPiA;=+HyH=!geXT9>`4ueXDd**&uGyOe`iNeQ(xzXU;X?{@8PcFudn^%opYx4j&`h_NskD6rlXy{7GwL`$t%I(tjZO877&KGG>j!w>G4~otq(sOoO zGP9pVr)y9k|917L-3RT$Jg0|zoN59%#gR8(#T)NLZ!K=-wg#_)5-KTeuz&;ll0?vwgH7?yvv-loCf z@fxY-t&{RoLGYn~J^#|fQwY~HK`v!q&jP&m;Z=Hi4UjooWCQs0zYC9BZwTm_wmNS+ zyxGHbQsJKR06OkutSXUZQj##sN(eT3nwn+hbR*0q6_EWDugu!ybPbDDYREqBxGfy5 z1PiX14S{>Qa*x)4Spl*#uU5zRHY2lYu)GVc$yV2CwYW(Qt7+IHy7htgJ1?9Y(cfn8 z?We2%{x0z)H9Ve9XPGaBBx!x%XA75rgux5O;=2}$=t+gjKsU&^_D!kj{U5_(F2G5b z{xP`kU|+=IFk--0(mh^_#pm_VLcW8>^Q}_r2XDw#gPn6Z1Y36-6;0g(opVW$ga;+T zgz!c5!a%1t1xE69>M!La=m=$}ao@};(Hah(rF)ANzdw^CF4u!vyr_pTJZ3S8-5Mwf zDGp@No1t-EbLb*!F-;G)$TYuYR96!CMO8LV#@X)KAaVYQgOATV6uGRst&3kBYZh*3 z3b|h;{yhq8#@zXh(mh*9&LFV6_+16tW+TKaQIJT9dN}lG<~x7dvp0H2?2Cu8@O_0D|^u$;U7~)DY&3Trbf?V?&OJ2TZ-vZM_M+`VHrpzE-GQzjx zy++t&y|R8;7Kfp1v5o%6f%t!kLhtwcI=>!6y>xx@W0`~c)`;nLT3)<*vNg!tD~C}uyyA3Yg&k27UpNmAd$)dn~rOiXQtw_qZn8H&IDPx7UF f)Otu#igdVtiaBkNA|7r5`^3RkXa~g(ik<%gTkzh1 diff --git a/PoE-MxFilterGen/json/settings.cs b/PoE-MxFilterGen/json/settings.cs index 5d4356d..1dde224 100644 --- a/PoE-MxFilterGen/json/settings.cs +++ b/PoE-MxFilterGen/json/settings.cs @@ -12,7 +12,6 @@ namespace PoE_MxFilterGen.json { public string git { get; set; } public string api { get; set; } - public string league { get; set; } public int confidence { get; set; } public int minimumValue { get; set; } public int chancingMinValue { get; set; } @@ -35,12 +34,6 @@ namespace PoE_MxFilterGen.json return j.api; } - public static string GetLeague() - { - SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); - return j.league; - } - public static int GetConfidence() { SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); @@ -84,7 +77,6 @@ namespace PoE_MxFilterGen.json { git = js.git, api = js.api, - league = js.league, confidence = js.confidence, minimumValue = js.minimumValue, chancingMinValue = js.chancingMinValue, diff --git a/PoE-MxFilterGen/main.cs b/PoE-MxFilterGen/main.cs index 2aa1b19..119dc92 100644 --- a/PoE-MxFilterGen/main.cs +++ b/PoE-MxFilterGen/main.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -8,6 +9,7 @@ using System.Security.Cryptography; using System.Security.Policy; using System.Text; using System.Threading.Tasks; +using static System.Net.Mime.MediaTypeNames; namespace PoE_MxFilterGen { @@ -15,13 +17,25 @@ namespace PoE_MxFilterGen { private static DateTime dt = DateTime.Now; - public static string version = "4.3.0"; + public static string version = "5.0.0"; public static string fDate = string.Format("{0}-{1}-{2}", dt.Day, dt.Month, dt.Year); public static string section = ""; + public static string league = ""; + public static string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); private static string giturl = json.settings.GetGIT(); + public class REMVAR + { + public string league { get; set; } + } + + public class REMSND + { + public List sound { get; set; } + } + public class STRUCTURE { public string section { get; set; } @@ -39,129 +53,158 @@ namespace PoE_MxFilterGen static void Main(string[] args) { msg.Splash(); + + // Get current league from MxD + var ls = web.ReadString("https://data.mxnet.xyz/poe/json/mxfiltergen_var.json"); + REMVAR lj = JsonConvert.DeserializeObject(ls); + league = lj.league; + msg.CMW(league, true, 1); + msg.CMW(string.Format("GIT: {0}", json.settings.GetGIT()), true, 1); msg.CMW(string.Format("API: {0}", json.settings.GetAPI()), true, 1); - msg.CMW(string.Format("League: {0}", json.settings.GetLeague()), true, 1); + msg.CMW(string.Format("League: {0}", league), true, 1); msg.CMW(string.Format("Confidence: {0}", json.settings.GetConfidence().ToString()), true, 1); msg.CMW(string.Format("Minimum Value: {0}c", json.settings.GetMinimumValue().ToString()), true, 1); msg.CMW(string.Format("Chancing Min. Value: {0}c", json.settings.GetChancingMinValue().ToString()), true, 1); msg.CMW(string.Format("Verbose: {0}", json.settings.GetVerbose().ToString()), true, 1); msg.CMW(string.Format("Strict: {0}", json.settings.GetStrict().ToString()), true, 1); - // Check if all the required dir exists - if (!Directory.Exists(@"data\")) + // Check for updates + string remote_version = web.ReadString(@"https://data.mxnet.xyz/poe/txt/mxfiltergen_version.txt"); + if (version != remote_version) + { + Process.Start("PoE-MxFilterGen-Updater.exe"); + //Process.GetCurrentProcess().Kill(); + } else { - Directory.CreateDirectory(@"data\"); - } - if (!Directory.Exists(@"gen\")) - { - Directory.CreateDirectory(@"gen\"); - } - if (!Directory.Exists(@"filter\")) - { - Directory.CreateDirectory(@"filter\"); - } - if (!Directory.Exists(@"structure\")) - { - Directory.CreateDirectory(@"structure\"); - } - - // Clean all generated data - DirectoryInfo dataDir = new DirectoryInfo(@"data\"); - DirectoryInfo genDir = new DirectoryInfo(@"gen\"); - DirectoryInfo filterDir = new DirectoryInfo(@"filter\"); - DirectoryInfo strucDir = new DirectoryInfo(@"structure\"); - foreach (FileInfo file in dataDir.GetFiles()) - { - file.Delete(); - } - foreach (FileInfo file in genDir.GetFiles()) - { - file.Delete(); - } - foreach (FileInfo file in filterDir.GetFiles()) - { - file.Delete(); - } - foreach (FileInfo file in strucDir.GetFiles()) - { - file.Delete(); - } - - // Get latest poe.ninja api - web.SaveString(json.settings.GetAPI() + "GetUniqueArmourOverview?league=" + json.settings.GetLeague(), "data/ninja.armour.json"); - web.SaveString(json.settings.GetAPI() + "GetUniqueWeaponOverview?league=" + json.settings.GetLeague(), "data/ninja.weapon.json"); - web.SaveString(json.settings.GetAPI() + "GetUniqueAccessoryOverview?league=" + json.settings.GetLeague(), "data/ninja.accessory.json"); - web.SaveString(json.settings.GetAPI() + "GetUniqueMapOverview?league=" + json.settings.GetLeague(), "data/ninja.map.json"); - web.SaveString(json.settings.GetAPI() + "GetDivinationCardsOverview?league=" + json.settings.GetLeague(), "data/ninja.card.json"); - - // Setup basic variable - string structure_name = $"{json.settings.GetLeague()}"; - string filter_name = "MxFilter"; - - // Get the structure list - var js = web.ReadString($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}.json"); - RootStructure j = JsonConvert.DeserializeObject(js); - - // Read the structure one by one to process gen - // Generator (dlls) are downloaded from the web and executed in a separate AppDomain before the AD is unloaded to execute a new generator. - // As we CAN'T unload an assembly, using AppDomains is the only way we can load/unload multiple assembly in a row. - foreach (var sec in j.structures) - { - if (sec.gen == true) + // Check if all the required dir exists + msg.CMW($"Checking for required dirs...",true,1); + if (!Directory.Exists(@"data\")) { - msg.CMW(string.Format("REMOTE_GEN {0}", sec.section), true, 1); - web.DownloadFile($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}/{sec.section}.dll", $@"structure\{sec.section}.dll"); - json.settings.WriteSection(sec.section); - var bytes = GenerateAssemblyAndGetRawBytes(sec.section); + Directory.CreateDirectory(@"data\"); + } + if (!Directory.Exists(@"gen\")) + { + Directory.CreateDirectory(@"gen\"); + } + if (!Directory.Exists(@"structure\")) + { + Directory.CreateDirectory(@"structure\"); + } - var appDomain = AppDomain.CreateDomain(sec.section, null, new AppDomainSetup + // Clean all generated data + msg.CMW($"Cleaning the base dirs...", true, 1); + DirectoryInfo dataDir = new DirectoryInfo(@"data\"); + DirectoryInfo genDir = new DirectoryInfo(@"gen\"); + DirectoryInfo strucDir = new DirectoryInfo(@"structure\"); + foreach (FileInfo file in dataDir.GetFiles()) + { + file.Delete(); + } + foreach (FileInfo file in genDir.GetFiles()) + { + file.Delete(); + } + foreach (FileInfo file in strucDir.GetFiles()) + { + file.Delete(); + } + + // Clean the latest generated filter from settings path + msg.CMW($"Cleaning the last filter from path...", true, 1); + File.Delete($@"{path}\My Games\Path of Exile\MxFilter.filter"); + + // Get latest poe.ninja api + msg.CMW($"Downloading the latest API data from poe.ninja...", true, 1); + web.SaveString(json.settings.GetAPI() + "GetUniqueArmourOverview?league=" + league, "data/ninja.armour.json"); + web.SaveString(json.settings.GetAPI() + "GetUniqueWeaponOverview?league=" + league, "data/ninja.weapon.json"); + web.SaveString(json.settings.GetAPI() + "GetUniqueAccessoryOverview?league=" + league, "data/ninja.accessory.json"); + web.SaveString(json.settings.GetAPI() + "GetUniqueMapOverview?league=" + league, "data/ninja.map.json"); + web.SaveString(json.settings.GetAPI() + "GetDivinationCardsOverview?league=" + league, "data/ninja.card.json"); + + // Setup basic variable + string structure_name = $"{league}"; + string filter_name = "MxFilter"; + + // Get the structure list + var js = web.ReadString($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}.json"); + RootStructure j = JsonConvert.DeserializeObject(js); + + // Get Theme File(s) + web.DownloadFile($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}/Chancing.json", @"structure\Chancing.json"); + + // Read the structure one by one to process gen + // Generator (dlls) are downloaded from the web and executed in a separate AppDomain before the AD is unloaded to execute a new generator. + // As we CAN'T unload an assembly, using AppDomains is the only way we can load/unload multiple assembly in a row. + msg.CMW($@"Generating the filter using {j.structures.Count} data...", true, 1); + foreach (var sec in j.structures) + { + if (sec.gen == true) { - ShadowCopyFiles = "true", - LoaderOptimization = LoaderOptimization.MultiDomainHost - }); + //msg.CMW(string.Format("REMOTE_GEN {0}", sec.section), true, 1); + web.DownloadFile($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}/{sec.section}.dll", $@"structure\{sec.section}.dll"); + json.settings.WriteSection(sec.section); + var bytes = GenerateAssemblyAndGetRawBytes(sec.section); - var assmblyLoaderType = typeof(AssmeblyLoader); - var assemblyLoader = (IAssemblyLoader)appDomain.CreateInstanceFromAndUnwrap(assmblyLoaderType.Assembly.Location, assmblyLoaderType.FullName); - assemblyLoader.Load(bytes); + var appDomain = AppDomain.CreateDomain(sec.section, null, new AppDomainSetup + { + ShadowCopyFiles = "true", + LoaderOptimization = LoaderOptimization.MultiDomainHost + }); - AppDomain.Unload(appDomain); + var assmblyLoaderType = typeof(AssmeblyLoader); + var assemblyLoader = (IAssemblyLoader)appDomain.CreateInstanceFromAndUnwrap(assmblyLoaderType.Assembly.Location, assmblyLoaderType.FullName); + assemblyLoader.Load(bytes); + + AppDomain.Unload(appDomain); + } + else + { + //msg.CMW($@"REMOTE_GET {sec.section}", true, 1); + web.SaveString($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}/{sec.section}.filter", $"structure/{sec.section}.filter"); + } } - else + + // Create the final filter. + msg.CMW($@"Creating the final filter...", true, 1); + foreach (var sec in j.structures) { - msg.CMW($@"REMOTE_GET {sec.section}", true, 1); - web.SaveString($@"{giturl}/PoE-MxFilter-Structure/master/{structure_name}/{sec.section}.filter", $"structure/{sec.section}.filter"); + if (sec.gen == true) + { + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", File.ReadAllText(string.Format("gen\\{0}.filter", sec.section))); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", "" + Environment.NewLine); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", "" + Environment.NewLine); + } + else + { + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", string.Format("# Section: {0}", sec.section) + Environment.NewLine); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", "" + Environment.NewLine); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", File.ReadAllText(string.Format("structure\\{0}.filter", sec.section))); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", "" + Environment.NewLine); + File.AppendAllText($@"{path}\My Games\Path of Exile\{filter_name}.filter", "" + Environment.NewLine); + } } - } - // Create the final filter. - foreach (var sec in j.structures) - { - if (sec.gen == true) + // Download the sounds from the remote list + msg.CMW($@"Downloading the latest sound...", true, 1); + var sl = web.ReadString("https://data.mxnet.xyz/poe/json/mxfiltergen_sound.json"); + REMSND slj = JsonConvert.DeserializeObject(sl); + foreach (string s in slj.sound) { - File.AppendAllText($@"filter\{filter_name}.filter", File.ReadAllText(string.Format("gen\\{0}.filter", sec.section))); - File.AppendAllText($@"filter\{filter_name}.filter", "" + Environment.NewLine); - File.AppendAllText($@"filter\{filter_name}.filter", "" + Environment.NewLine); + if (File.Exists($@"{path}\My Games\Path of Exile\{s}")) { File.Delete($@"{path}\My Games\Path of Exile\{s}"); } + web.DownloadFile($"https://data.mxnet.xyz/poe/mp3/{s}",$@"{path}\My Games\Path of Exile\{s}"); } - else - { - File.AppendAllText($@"filter\{filter_name}.filter", string.Format("# Section: {0}", sec.section) + Environment.NewLine); - File.AppendAllText($@"filter\{filter_name}.filter", "" + Environment.NewLine); - File.AppendAllText($@"filter\{filter_name}.filter", File.ReadAllText(string.Format("structure\\{0}.filter", sec.section))); - File.AppendAllText($@"filter\{filter_name}.filter", "" + Environment.NewLine); - File.AppendAllText($@"filter\{filter_name}.filter", "" + Environment.NewLine); - } - } - // Clean all generated data - foreach (FileInfo file in genDir.GetFiles()) - { - file.Delete(); - } - foreach (FileInfo file in strucDir.GetFiles()) - { - file.Delete(); - } + // Clean all generated data + foreach (FileInfo file in genDir.GetFiles()) + { + file.Delete(); + } + foreach (FileInfo file in strucDir.GetFiles()) + { + file.Delete(); + } + } } private static byte[] GenerateAssemblyAndGetRawBytes(string dll) @@ -186,7 +229,7 @@ namespace PoE_MxFilterGen Type type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes()).Where(t => String.Equals(t.Name, "Generator", StringComparison.Ordinal)).First(); object o = Activator.CreateInstance(type); MethodInfo mi = o.GetType().GetMethod("Gen"); - Object[] ob = { json.settings.GetSection(), json.settings.GetAPI(), json.settings.GetLeague(), json.settings.GetMinimumValue(), json.settings.GetChancingMinValue(), json.settings.GetConfidence() }; + Object[] ob = { json.settings.GetSection(), json.settings.GetAPI(), main.league, json.settings.GetMinimumValue(), json.settings.GetChancingMinValue(), json.settings.GetConfidence() }; mi.Invoke(o, ob); } } diff --git a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt index ac3250f..d6cee1c 100644 --- a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt +++ b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt @@ -24,3 +24,13 @@ E:\_MxGit\PoE\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csproj.C E:\_MxGit\PoE\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csproj.CopyComplete E:\_MxGit\PoE\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.exe E:\_MxGit\PoE\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.pdb +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.exe.config +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.exe +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.pdb +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.dll +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.xml +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csproj.CoreCompileInputs.cache +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csproj.CopyComplete +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.exe +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.pdb +E:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csprojAssemblyReference.cache diff --git a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache deleted file mode 100644 index dc8b69b9cb34dd448bbd65b2638d4bc665b5dd2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69563 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 bjzq^$>LSuZsjJ8_l-mD#DD?w4g{J=>t(r$R diff --git a/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe b/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe index 9b0816bfb9413170fa60c69fbff0429bb9757906..cd8685a91b59048d963bbc4e1d9a6a3bbb8900be 100644 GIT binary patch delta 10206 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%0DNe1oGXz^!b{+eYv6s3WNJ4U;ay<>*ZT$I=Jyy zF+4)bBvK}^F(L@%ZdylIVs-5joA8}L3;gq2FY%vmZS?=pdgb2h+U5!W?e>@V{-R@@ zjLo`W&6yXhShaTV>0NQL_wR7}#=*U*B$XLSAE<6~Ueg83XpoA5q1m)6tFehZ>Sfo7!d9jNmcpVT(tN+fd=QhW*a zT%Il?(XfDK&|Lg;<2iVqPqTn$Q4af0d0aZEeQnTwB=lpHpD!btOG&i)$qCsB0YmXM zRG_tdQ~ndq&*^u*VvzIEgPoTRmPA({hRuFg;<*;o1vJucnvhAhmYMkt6KegRjc*jf zKRSN)nC_s5Wf<(>w#zVtAQfTMiE&8FSifiDGXEbY9;@o?d%dA&>E$yXz3KOFJoQe& z_aB_pm<$ zqf~^1OyOx&>M>i?;$Yyn~N{B|7nZkDUv^^irW4Mu^7l-t~cZ7G6K@oUF zgPagnaZiFYdr8VJ{=hEYkL_*uTE%^^vsXuRGMnNKg}ns*<6bYA#eF-4Ma>jYO?cS`twjs+FOVFjgx*@8GEDZEr%S=uBj5 zhg3<)e4|iEY=OI(lISLk?OsE*>Xn%)5ts&QpvSh7hu@n}sR(=^sI1+~BSI&_UYpV} zu53frGLoDMF;0P`Vss7JN+W6)ud$2Ukf0mw;`S&;QGAUv#}8%y zTX4{Bi;W@;se!!8(9wuxL8DaQrC(rRu+aL`PU)=r50#AG7-{IxD*mUx?v$n`Bb+}? zw}(}L?$1+lvUd^QxzA=1d%nj}Ru~YsyrSxA7 z@S`JTQ32QEXO#65h!!k7ZDDrT59Kqr-!SurA2nIdYfU$Bft)dU+4*zV&$@WcvU&L# w{-vjWWIv7{TuPr`GM(GroRLp2_P;T;=ocSU_qwwAB`;cB-v2I+a?d*WQa2TW79ToJ(7#!_@ozt;fka$q5fjKOIdL z{PR0|t^fbO*7~pa+H3E<7eQC7!k}qZKey()>&VT#WPkL>?&|Y`{;%!&-TJ=h=XU>bF!`H{2XESz-~B6JfA7~DmK}b%A*W+l@S~l}lU4qWKkr-c z>BsiW`^-1LJG^U2(YQYxzUa)4wq-g->Q7er@5{L9{JUrGS$_SE3tqTy_r#gM-MPJ_ zV_5K`oy(I|{#VWEb?Y~NeCIv=A3o;~-yiaS)>k~ZaqUOjG94@RgL~QhdhA%a@3^`B z<9mO6PYd}y`cpc6`HF=b=F~LLU01PuQGMyyg&Stq)HcT(=fvyUT(2#!smrTuilR7D zYd5T}X|6`9p*}u#?S@rGYBf@=uf5cXMb)%gF`ZaMR_27_Ss$-B;dq?P3B|LfslIM` zQ@pvkrfzl93CGw*+BIEMiTClh8)Z4!Tt!hWxC@$r-}NeE=k#-mzi^n{>bmpt<8Ohp zewiQ3q%z$8UjwguIlTiH|#c%1p>d~`?Ea$iCrRt=@;-Gh` zgP!-ZUq14dc%@6c3JZBve?4!PL%YU`SM^%F3JZC6;pcfTdF+4PAYQcv@$P~`UM@SV zQ~8aL&NE$zzZcjwum-n;vi|OLxBt63-n@c-UcniZx|eHk{M`aM6lU%5a&&d+ZbDR zwV|Ai>k&nXv!mR|^V+rG8&!awe2FkUh$5J@{_!_{-@VVf0+10G&IR;>w9{=;vL4Q z=gZjE@AP`Y9;eq!f0|Nmw%(@KD_)h`A!?}Fn8tFs1e615 zJX!=*LkZ|!=t<~#Xg{Qh!T@M0vI-U-O=@v@4S#iV$`dBEH9z=d&6MDBZDPI0D@%Q2Zrjc*ciKlE~TJScCjsZ5D) znUf3SV?LSn&tA@s2W{lGr-_fbZPu$^PVqIy*VZ@NIfu8)^J(IvO=SJT%PGDzawOWg z(4Nzfd&|oyzIBb74yWW#ZA322-*n{O@p6hUkn{bFtsm+8gL7%R!=rPP{fw;->H7om zo)_gMd2RWp*URmwlz!2cd3wF#4f{n~&gu1zhBxf%Y}uyQE8cK?u;rOv?-+Q)vCo!a zdcEQe#}Zp^>Gh6C(Z2Tg?*L7ncSVF8LR+5cyz={JgK|6Q1{n7T4!L4A4E1r;k+lY2{b?L?N_09ElI$54~5!+n^N2khv>Bgq!_}XYl%kRA6`r2AM zqixD#r!me%9NkIYypo#o)phkvbjMB6>4E>eOQNWEaJ`_W?pnnY$}Wkoa=IgCJ1shw z#w*t~)--R-D{kD_&|JT|vAm&rBeH|i@hqyZt*P9Y5?5J#L$l%v`OB&sd;kY^P6{Zyg6@S&Dwb0!gy6pdD+H>_{HUG<4t37Z1|X*%i@hqtOsUJ%*)rm zF*(KSYMa+J#%I>W*EKhm*N(|qw620=%#Uv@tG^~*H?v~Ol=4ZHlO`8Tn=mn+Ka~#N zj*Xd_FI@QV|M>TpzdG;f;n^AA`RY?EmCl7x3G4MJ(q50sj4s^_6Q>z$S!Xr4I?x+` z?`Ba4PEAt>m>bYrA4hz|sd$Reqcr+)!`7Gd{n}gfRg0smlDszl7-e7`DwAs)@ve!! zoSa80Oip>MrZ3t8-4E@7I$f#-R2TewLvv-h>n)hSlv~z37LO)qY58^WrL2?dRwvv3 z;{=G`^PETqqPeANYN94jLIa8$ID3WqGPo; z5*fB{^~;%AQN{o;HYm2KGPdcC*yirB&0q8Vh28tBQbKWI*^{KK@4IwGOX%8yvRCIZ z02%Rn9&c;*gIn3!+BEc+?PP_S-e=?>;Su7%LJA$C#VdACPv|7qY+R%;w%kA`he;CC&%g`%GK_ z4gxO(*^5jRg6u0ME(X~rOq7G@N>qX9N~{8Nz|~+bcpZ2SsCmawFq;`t5B8gSuwLpB z6+@?!o>9pNC(8^UF>8DNK4~gKlKdw#^nB^ub@Ykt1Km1|vb)U=%1D zunsde7{m22uE{rRxF{M2;>XTal$Zz>fVxLB9#sFwnmxfZBqA&^2b=_60kTF;Tm{0L zSOLPDSP8KZP9}g^Y&1_ZTpEO+h15GC`V(D zLQwW70u?^X*`t(e*@L_pd&~u8k9i<@rEj)&;Q2^nhXo*cW9}6t;Ekvki7UZNz^lPU z;7V{YSPm`$8^EPt6IceetrMXgMjy8wq~{PiwYJ{}$!Sb@nStgVNPSlhG!-g?I$g)G zKqlEd&)p}|Tu$yjhx$!@$+|n+&HsuQn(;_7+HVz~4?EfOzHnW4JZr5%Zk|WllH*}h zoEvggP4v-r{tMVLbJ74qn!}bPc zMKNWK?w%~GPomD0*OTxhh)BFX{C|?YmK=}0Nc(BzNA*#CRjRGFED3G3A>+2Z&{o>h zms6kX-KpsLzbG{3TiQ@t-c*fkkAE$zbSMsuvo~N{+YVyMwle{Lzm{f-novBagBn*f z=fE$VbFkkRMZbCPj|uh^H9s@s%9$WzO4J8r3^8*N%`N(Ky$aM^WHqQc$X|hyzZukA zBmrtJ@;9L7BD+D&K^_Eiz;A=O;CH~G;7g$7UjeagLSw{mQ284H{uUes{tje*kT{(T zX_h2x|N<1~vYdf*SYdf#-ws!I|JC;054fum~&z zrAK@3v$(z-EC$QL60iv@1+N1&F0TjYf;WR2m$mnVm=o81@e>K@5SJFh|sA^F*K9fH3b zMBOn?^WWMm6hQYvk3-KvuR|ThWs*_9H!;Iyx@(Ym{IU-9bmOG%8?u?Ou2LJ*O=dsF z%WiNovafga=UM;dW$nGu6j`S>-_*i(8IB znzX)+-bKhs#`F2KW~Z^~pPE*G?y=AsJSDC47g;w3Y2~{+`eMs@%A+K8zsEUk}pEtx0nvQ+v^e zN#k;4#P4~0IvL;Fw68z4F8FkooMMuhlFpH&^Iw8=a!=PBsZ=_5k;Y79lupm%)0wUx zI9ch`UYcBJ&rziF-7uZ@sHrLUx$r;k(&>48I{zH@^!>n#ZjQ6rCfEEumvmGkC} zeYsBGIZoeDuswaYA5E{1_Gi*Z{Wj^N{+RSpK7qd6l=RttF1@}nPTyFkFVE>4m!fZI ziay&1rPrr0_R5(l;qZ-^dhwwy#L9Px}GVr~3gakLga|`6>E_r0BD4I=w#a zA4nhT2BWXg=_@*lKHK)v>nm~kN}ayhPT!mqeP<`rx01MR`-qvg!X+~ev&Pm>vmc@K z&3F11uxw-jG6u+|MkSztr2TZ&No+kdA-h ztMOHG??B@9;eJnB^V)D&M^QOlN$-D}sl5QaB%N=jiGGw@Fd zt9SlNM<}zl#_}^%rTEuZ*!lhy$C^i@ER)Qdxifj!JX-q%?8_ILQD#zX)3vcpk7ag^ zy7ZBMEJ{2ZOZ;5+@#D`Hep{QwlD1T{@@wQ@(yqn-CP>qa4uIN&dkee<{1w;;{u-37 zx4|ES{|3Ga{yS*L72W?Ugq}40g7!IjM9)FCuk?L{DLdpS#%L-DS)jx?C;Rz17X7es zN|Set6Q236$s251NLc#vmDzs@(<*E`CGl|%bz{KM0jS~>Plb!;#FNqSN_jY=KG<;P#-4Loi5b^Du3VqFVZ9h z*E?v)^c}|6^dSp*aXO}Mt2SJZJ<+Uigf4teaGCM<*O(7jdo8fOPLo+s^t8O*$* zM=SoOTI+v$8~-(?-Vb1sveHdB^x_Qun|$|a#ZS6Ou^lJXUL<#~lRKN=UatRf$i3|3 z<_B_GueP#7oA@4~aqE8S3&<-z*+=^lp&auwldpa7JOuyG34hb^tE`8#;;-1KQxmo< z=yy|el{Yk$)awNw_>Vv~r*(K!lcsx`MaCO-1fFo!#oV@hW?pC+tqnEacsssMI(0wy zvQt{}HMErudWc79(2Aa2?8MZ$=g7`%XsoIIopVx^hl9x%UG(*4`<$ z3gr~1=pT+XH>Ld5Uu#~&Pcuhle%fWbbYB%qd^fg*DQ3o&H)30FiEVu$wyj6(u2W-o z6~^wmKeoMh?171~2fmPT+nkKs{x#$Fny%aCXK$My+cv-Jwtd;#_QkgC>-wqX*`Hb- z`_%HRdtQp&^HRoV2gY{X7u)fh*yjhuK3|!&b9!v&^o*TbvL5(F?15io>>A#6_wwxB z%VWEjcinv;d-s9Z?gJ)WIyY<2sOVmcT%HBp4qeIiT-#vVq4b9S4du<%ic0o9uDyN~1atok*_yfkntu38 zhaW4qyS!a5<<3zyS%p4td6kvT^^Nc!|Cth^NS-O#=k&+0lpkXsCZ6Y=|77Mo%Ig$R zUfMJ14QkJ1Ajn=9^Cx?zq5#xh$Xu`xTmcq=*MYM@?!lTf6;FXBT)zUAg8vVk4W3Cv z^S~kCMc`;q_rb@3^SRCk7l7x37lRrrE&*qOi$V24OF-R!ms|z7lO8{Nz?IIIf@BvWIA?^ad2R;by1s?+Yof1V4gZ;rTg9AXNX9TG9 zO#&a~dKUN?SnP1I3)lD}{}td@!Ij|SV2ulJ0H5IcTJUedFM(eJ{|S5&{5|-0;D3XE z5B?FPjU^^!aqk3N0e%C#8~i5t9dHl$7WggjSKzn7UxP}=Z$YJ-y@%)-u6u#s1!T}PyU7AvtSYU58&l4{3>^SwZnA|uLHji-%jv3@IFv_9tNfNDe#9} zf8F7;&R^rD{C@;K5B?Z@0el7g5vaaR@;?WE$n`J5AA@f?d=FH(#!vZc|MErfKf!+j zW8I?YpTP`JeBD6t^#or6HPL(-w0k5vFMSoH^Yl5;2uNqKL?zG~r~$ejs)8z@dT4Yc zXU|~y^Hw^4H49RYs==o>=e4F8?4{FhNx!MiZ*t&wf%7W_OQB+DJ~V)sI4OY}6piFs zI)@sR-zd(dSsr?H+|ha1`93Po0(32cmO(c=x)t0AC7?-A0dx&i25o~@LIXGpX!ATM z%H>*VJlDk4ms#0BPUj4ailD{NU}!G%WoRNa3EqB&2GVNvTk<@MY2 z)S~MV=l9i=uvFc1&|L}5HF1p46AZXP#BTGjz+5k6)VhQo?iNlb^`*yD*ifB*#GNeL zs~)L7{s%f4^W0n}mYf^WHIPc{UZL(X)aaakq8Ip6a47gHI0pO~XzTW+)Xz!Kn56Dn z!tETS<(Utf4W(#ZZ)8v9XCDwEzfocl*dJs}HD^kzK;{tU*^INmZ0_`AQ@^u0$(2oQ z&8ALfGa_a)t2hKN&5c=#bpwDgL{JDVgSJAupgmBh`=4h4z0-eC_PF;Kb+OO>Z=;-4 zmOCM##vI``<_N;ER3_mQ4&TVO*Uus^|8G%|g+HZI2;X(r^#A7i8K>tBC*Rk__r8-@7bE&snde~r1)H_ho8>*Rjw_;x$g+(dlY4j*)C=J?)s`55Thw%=dWO67Pjl(L)akj= zUpsw2b@ATKr#QJ&JijZ4wJzSp?)q~sJnr?l{7m!da!9hHjO?hV z?kSsv(Dmf@Q)blD$m8D)(VhwyqhmGkqrU`3 z#qV__#OEAhhF#&U9bzVZTL_T;Zc!qYMd5V%K7RzKstE)NQzUc!RgU?QNy^dH+9_?y zgOrBBU7RJ`3zwc)YirB1wM)pu{IP#aqC)w67*}X^4q7CGteX&xjl&?#6g8Wh3zb1D zA&uJ`pe@jLh;>f%2=o-R7kUwT4LSfFgpNRZzOxUM1NnDgE$4SN)C?t{J0P7ye+YUK z(pp&SV6B1oL+?O`p-c?f6B-PSg0vvOJ!_ydcDo=wyRG%)bI{As z>(JZKAt<8nI1SQs;=`bPNYCQvy?SNPN~jjv0BwP`L-#|EKspPz7kUwT4LSfFgpNSn zGRZfT1C4?7ZkiHk5u~$e)lf5(fbM|qg|xT%B&4d0+kr-x9~rn)St?4{T=@V?Ni(IA4uvCUebx5kH>~Pxrr@u zIT*&~BfXprcXE?jEpBEPL5@wPv`x~_|nVSa3?oK`{y=)uP5WHY;(fY z$7y+-?9>)n%+TpNs0DK9r`ziS{n|iduf~3=n4u12DrNm+?^Fj|AJ=Z*VR>BN!6Iys z>vuFSu>D-i%XfW$W5b+Gd5etZ4K}{EGB(V~RJ6!wUSZ?muCZR!i}Uf=Feg*lBGZSt zf{mxGj16-#RV^|LjEoMt_>*fb@z^jY6K|2(+7eIl#k@XkHq6PaYLQW!%Wm~TO)q1^ ztjq+)NN?*xBV!IzwTZ`uIhkObydfEneG#UQ!}>dZ#z{YJKb4FlmEZb1e#S?irgxJ1 zo0`pwFS+({*f1x<*yv@3(UD}Exj|bQ8|Gvf7ro4KBcpP0FT4!mv0+YzG11HHNXFAv z#)df=#zLR}7nAYW7hU?iSbxV){rCKt)JvO}RDSF4_{&?;q_XWErM^hd$6>>)%*3GF z)%T{zn0b?(f7vi6L%I9BOIKzTys#^Jm9#%ER+&%_81U2E5kK@djm~exOU_9_A1Dt-s@^ zEc{$cah_`1V9P^|ft(GuaucwVmn$@KrX8l0v*At-TP5oXa#`H;HV@J9+uKR;WVyVL z59Y)r@=v$nfd1 z{*Irz=G%;(Z^?>MAAIpLHq6OT=Y0KC*=0obV6^A8ewH_%Joxm;zniUZ<}hr?-_4gl z?ZoqIt<=r-lPUbx-=(G1n9|kgcZV$lyDILkK8}i(JWE$s6GvMa8|LDn{)c&vMfNaY zn1`5eztrJ8*Vc7@BX+EV9zi-Szq4I1j^&&EHFu~Y;J5ycpZeM9PRs(D!q5WlsD@-ppV48OIvX*N^zJ1KQi1hn@=vewWYP2?wJZqa)N2QaC#?P8HC0Q$vuD_?*lal^X#B(hD ze0D0DSX^2(dGgfRl94;Qex3|)>DNBpvGnUBQ+Z2E%gW|mJZEV%fd)2h{4Dy)W5;u* zIWH={!^ayBL#g=`Ry1Yugjq$Dh>7MH`RSK@hg&u5$I6fDRo;@)g_jjAiDngypIkC| ziY;_xk8ZcVA1a=u7nejulM3=n$4}IDuW?6@=k#a>_L9^7>~ZC1Y1xuXi_0!uQW{O0 zP+B~pq?ADxcl3CA>zyaY9lzb`>zkMQsZLasKWpmjY10^JaYv8qjHub=>3HHwZJT*B zE~t#AlorgMKpl_9emn1dZxeqW&LqJ7QJDPmLeC(qkTA|TwQ-WuvpPR>AwCXW>bKtO zbf5EdSuvdQ())JywiBjzpImJ?H9u%^V%K{qeOg?TGz<#U`x@H|)4L0sovPMy`t}P$ zq;VSSy^~IT>xC>D*E($PQRMV3m-giJ?Uwf9)3;jMlhe0Z+LP0_SlW}*w^!Pe)3;XI zlhe0V+LP;YM*DL5c1nA4`c_JN@#)(r?aAdHMNZEv4|Zk5@RD>YKRtWgUYMREZZAyF z1h*Ha=X=`=)3dtmh3UE5_QLcGZF^yQ9(J?KRqOoeIUsK{ri)3Zyz99iZ|l}!dVb8y zd6cl^^t_mtYaRAzAm@3!oW4)t{XF_GeUHNHY8|HUPk29%UQXYeXirYxm+<@^y_~)$ z(Vm>XAL02udO3YBqCGi%AHwr{^m2L+kC&s{OFG$8@7?kIt;6&lcQ40n^rVxV-rL^W z`GjE^^ol*iKxz5;mcBi!{R}zpC+x1b1;CfV>OPYly)0tu#;(h$_@(=&Q*ffMKuwT$ z-ao`Y?Yo^PByFZ3l}#u1mDLaPc~Rz`=EJQ1+pf;c-VD~bGVBK*oMsGdf478p{^~Fm z*pXKdd%tS1wos!3=y8^&aq$oHC19iQ!^qoO{$a&k!}_q|Z9c-Q4v@J99TJBP7zpL| zL+ZNJ@%h0^gWoxjI#c>P({b(w#Zv+K&h_=h6Qt_T?Ks~V1o{M&1LZ>JKtrKn&~Ru3G!jxi&xOu|Mnl>Q84Kk>*NMF0Q* literal 38400 zcmeI53zSvGmG{qW+J;s@Kwct3gPJf@g!%pJal3B! zxzHG$(R7#Y{@+uz_pYj4RlBOrsdHFVRasx#P`kddpk!>xs8I!rmX{YyDJ&}LcIkl9 zSNj#hjPF&{W>^oxwe? z_@}{5o>ggX>F1-O*OyLc8I?}!`0>%PK-~D(bQt=7U8_bd@uO4Aj*@1xKu7y$vrPMl zKf8A6?C*Adwdelj(eay~%sKM6Wj7uA#n1n~=l2f2PNxz5h|Wpz{8SYkE5~6&=d0uRZ(Q&;IV+->&WXnWImCe)kuWfNCLO!Vf zdEWp0L3L8R(j{J{g}mz5p7*8+SG_7;^>gtmE#y^y_Plp~<*GsARX-Q6(n4OM+HFw# zjgPK3u0!@#=xo9K<&jX{t6kmw-wnye)wp>jiINX5_cT z$%Xm#LGG-VQ+|QmWM|K&nEd)87jb9ABq_hj+M4xM>ykB?q!wlrmC8%O);A&(idRgV)Le`ImR7}2uke%UWm2X31eN|;+Mn8KYCeOjhm3TSj z8OZsvz7vyQ0dhBaIg?+qvazaGZrJ4MWsBqh2w^>kAiK=VnmjXQe+Bk{-g@1l`pRy z+wpqEJ3Jbh=C$KFUN8PLH6$9I=C$KDUaxqsjjm7g+VL8%7yp{NCb}-oYsY51Uh$5I zMyGl0IE>ee|4m&NjY{*{@fNRFyrZL{G_M_3@p|#kslm}TXy;`NGm7_+x;3p;M& z_2R!%gQB5nUOQIe^@=yNnH?YTdhzcW?PkYAyk7CD-QJ<+YaIEt_kMmCK$=&VKpUYH zbP#$DdI@?1dKc==fGC3ILmQzKbQpR8It9H2^}r{NfEGgQpncF`=qPj&dJF1;FBk^R zfL20vP!seNbR23KH2l3UnBfvbe_4nx_!$F2e9*NK7MT+hae#;VGU{8l=- zFuw`NUFzkme{LnWKPJD4$o2Aas$YF_Q*C4Bx+884FbTOUy`1ukk)zNig!Y__+z>CP z{I=9riz&3{R3{hKkM(li2rsAn0y#fEZU2ZLN6gt7zS8!G_;DoO>)Azky|(@1^)ioV z_!Haa@p{D@`V-sE@p_r#GkkKk?HDfv?5WJYw>LBl$k})K}DP+>Y#kIG!c7 z)m4?-GxA!I+}5bPLjDyS>ys7h*t-<2sA#ym!THeK-0#i)m+yY<_SY619iE@_t*<`6 zMskayQufJFq@0r*XEzVCN`*;evL2QyP`i&uX|h-OdVgr2b_U&xj9sz8$=!9Lumo^ zNxu$z*EQh1K}qR9d3Rst)yM21J&(6F!@Y&Atxdyt*-kc?h@NL53FN!` zY2MZ$zuLgtO)_slvh~0~MpX!9LR(9wHw?1%+(1UQijz@ZJdi^4u*+x@@$Oa_>e?GM>-d zn)Z#gbr|n$eHcCc(Ia1ee_#Vlqxn0nC$zO>79t~CKN`poogow2S~4kQWb0#r3{kN% z@6p!jK5cFNMq<})+ov_pX-{o^Qo{66E+g(ML~rQ_0h^~Z&Y50Q8Y9fhDWzkCUGfK% zo&AOEuQhWNaql%%2-3c(8$j-drkGb*7ep!M=}3E*Vo-aH#h~^E6(G7&>p-o&*MkM% z25<;?4>%OmdgK}~pH)FO?$dPR-cq-y1nN$CMnL1CS?0PM_o!@qA#vke+>msf(xgW= z=t2eU*le~zZ{lSe1?pvNa2+Tci~wbWk;E zq^5%Gg;Uc&(o*xlN#GqId(YIJAiSy7AiSwHAiSwsa5`8IV%OAGa0b}g76V)zWsgEv z?+e?a8!hJTp?cf#lSq%huussA#va9>>@f#a`dnv^GOlG0>SpXQACx^7fYcS=Z0&Fp zC_5|!sT*s+CpaSqp2r%JJRn=wfRDE8k1&nLS6dpBHcj(in6|NYOTEUQHDl6^$b8B1H4ahR*Xc?vThuJ3$0~7rc(-I#`+`ln#{~I}tr0?9E zv#Ta&cV5l|+~&>0^Vw&$rzA)?9<&wbHu4tn$F%KGz5K-+A5q+ID$ebw$HQY}@udwaTG9G|%q9 zwsssO(qm@=@pZ0^^ejwm(jC;iqBRF`;hKZ{eNpspzx;h_6xfS&%_~=c%qdZCkU7Mx zMYOi)$Mt#;|83S1T7&!v*OLDvsI^E6)LP_=pw=QsK&?T(3>JVdff!BcF2POY1 zh;36RLFW9F>US;p8*l{p?;z`gRCg+LJ$N}tSyNYoS{DofwJsP2O5aRS>wwvy=Km5< z^M4trd4Bn71)h}sbB+N#{3{XO0NzEC>WNz2a-HK@8-Yp4%u zt)V`+9HgI_wMN(nZy{cN@KzA}MK}}F2X6<}2k!vY2R{aG09oH<^g+g&>4U8IOdnhW z9)WKy_+=1RY5L$gP<;?x8GR6)rVnle)d#CU^})MA^}%XTeQ*<~KFB)K^uf*GEUs~# zDLseV0;;d64}Bcm&h;AbPr!BH4sbnqA9xqY_(|zI7dyc^a2Hq)J^*e3rDr?1hwFR6 zz2GizA9w(K5PTH;GB^wTt5b?AASL(Z$^)U+EY9M zTKi3-KG#4Kpe2y@Ml&JB*>b%De;23*QqcPMWL^}#2}Papv(RX$6lyOamx}s(6Ej?; z!|Jn-$tz;QQd`;Qzm4@4}+}!`1{eM zr^YdZcwVb7{`r=8C)3uxolTk1-ve4jrFK9Epy$I1lGdJs+TX7!i=Dw(H>3k=gSUo_38gz&wVa-Z{Y8h(Kpk3gS#lV`tPg@t@)TgRaf<)PLLdh z)}LMZmAKO0+w=B29b-TGWZpf2{pKuLVC+{4?^BTM=hM$u&gpF_C;C(_wOPwD`g{CM z)JGv~W7c_je;Sl=p*;d=%Bkm4I&UI=&+|c+)BBUD*4P>4yq0qQMNrO?=A)CQtoteF zSyxui=gXQO)AoO;P5pVvH)G0r9c6tvC@aSt!{e5wyxNyM4av5i_k%32KU?{@Iy52d z10yK!&x7)ov_4vC%6x|Mu0me2p8ta^v+uX1mzW}FlzAj&>Iln{IVSIko3KOc`^L zQ8_)2FDL7eR({|Q?F+t~dgiGR+V*+u^|G+-8|-}?TwD~!>olpEFwcV$C0kD--M$c6IUh z4dxSP=gvgBzi4RAfE2D`J)^Q=^OQR5)!+bd5NOxDN!GRl(tAMZvvWzjz9CNEP^a%2 zr*GJK^jV)DuMZz*%7^bTd)MJ_|(0i?iK6;SA!3OYts5R(!Vc<7D7{u9sJr}dwYc? z&P${$u+6L{1o`YV3&Oo^=1`435&1f-pqA_+&%a(t)ihJxoK@Rw`Ady>WXTp4j?g;xp1}UA)Q>%518#{7hFF@wIF1djF0Kt)o$vOJ%i=2AZGg_e&JZ zd+(f-*tt2e^O@YvQK#PGNkpl?Nu+)(`*^>;o8Q(Z31c5F>AUnr{UCgU{w@9&K)P)7 zO;GpXUIgz3zXjHVM?vX22L39UxU{F>-k?X^qd(Vy3f%q`g_QZaX(g+mjYcs zdWC|V4*Iz4=i9$nMk6fNpmjku&`+ad5pVqR+qeI2ggvj)|GV~oAC_}}zQ0rVbbsgh zP(^7~y?J&dn}lf`MOPB7W7ig8ntfl|B%5^g_b{C^99t@FGG_+tv!_<+x-GN1reYJL zMtP_?Lmr!lWzhOY4I8H4<<>*$lNs?`tIe55qg4!2Rrb$e;D1w3v$hFrKt7bfjt4Jy zz{$ND$f?hV`NYYcaB>W;bbfu?AeZZ$!k9qr$~MToj-0-1HxX3*WGB{P8Rf*M8GGnm z3!R%jLHc6HuRg&#ErWmUc0FmdZNl0uBdwyYuC!LK#1nrlvV&WuH#Epa%JU}cS6GLr z_AhA7XMCw;w6>Q&^7ik+Se-?M4uZa3LtE%jy+WD!@T#p7&i|`!*S3&}YqOM-D-7gD zo<~l3e*HpznRZ02xevonbAFb4967tC_kouad%7m}EKKbA)5NELlxP~5XsSyz{RAuA z|B0OY&*kj?WX=PZbl!6!f6s};o)ew-mgVm)OYAM{y!TlC-eZZq$2#wun!j&qV&Bxf zhj%0%-jVb0w-ftECiZVnJn~55k=ODLOivt`o^xPF=Yyy651vXKJk|NolKewU5{FoP zsO;tLne0FfD1z$h17*#VkCe?LbGVrY$aCDpH>YMDx73zZY@KU*h}uf~+*6Qrcsaj! zL08((RM*+DC%s{OT}9(YWuE0F!g1IiojOBibyZRC@9e!>|xw@HwtqcgXN8VOn zx5CQG#@c%L+x`rdEYiO_%`@i5~@VgFw z;L_!z6|Y6j&EP+RboJCv!KL77P*n0dJ+`;wF!B2pl8Cds$T4bmA|4MKtI1s!a zyc*mMP6i(Uli(h3J-8R#0IGajK$TbPv`=yUfWyzac+CZhKLUOl{4&@Ce$}P_CHN56 z&w&qvr@+sEXTkkofBY0Ucg3p5o!IR)2@Q2`I;A^1D zaT-*4e+@pt^*avFxp>V(ithq`5zGg_1Zp9380-Z~zCS3w0`Lep#NlX{u6arElfW;7 zlffs!S>RLPY*2d2K=CaC{|vNiZkRf=%FmyL@!&pgJ9=z8DdGKHt zx0^ufieG9%)*WZIox|92vll!LQd)vuvb~wl359q9tlXnyT&hbA)*>ruo4K7AbjG*`aiPHwZqBMy%_`Ef3v;ja8YaB^i%&u?7(?N07r9cnG4a_2i7>GDrH z{GOBlJ6E4O-F3oU|Ip=s#NlRFuV1+9e{kjcS10#Fr+1o{^YwN5w6;`v#yI{Vt{$Io z>Hpu^sgKh;(&e|w>3hQQ4{>~#xa+0v`VpsBYbWLNLx=jElg~DlAF#9xxemE z0xgm=Lyw_c!^V7|zd=B2BA3rVczG{c45MQ;`IBA>qt@F>Qb?J<_K(CA8&kdrF;l+X zF1<^Jq!rYQH>Uhjlxm?S5GW?OISlbX3(SvPW+L)x8KhEmXj!&SX6H}YOuEgqrFg>e zwA7h#ozj*0WB-;$#fo`vA+wZ0)y(7TY{=h1gUwBIa+bOwJFv=P#~hbgED(*E!%NawzfLN7rlp*Ns2&{-%K zLuwy35E=n#Z&eIw@3azH2kHE>&X4YcbpP%!^eprO^taF}(Cg5f&^u7X*w;6g^j_dF zs0h*-hxyP7Xbn^iZG(10`ytIaIs@@MbR0SX>7LqY=q>17s7o&Oh66hH)fT!JWh6PvoAiG&bRrai#|V_=42|HWqPo7us*f5j7@Vg>zZX2 z8X5U-p1A4*jRc>MO>;7MPCvJ3Eo1X(Eo0N1%=%`Tqs{rGKd$KWv1wLjJaekg=WKI6 ztz>MPlVM)%I5@=plX z2hXST$mF;2jz6f!nY8`}`(ZY&eI7Q=$*@N7bsvVq>TK2^tz~SQlL^)dT2EVhxeu!a z`Peik6RZ;sr1NPlW7C`r>jZBv&C50)`$08d7aQ;RSs!?Qt=DZ`GWl)1<7Zvq>#nxV zk1{{lgh6(It)2vKUWpmjg>XI7;9~22> zY?_l<*DRxFD7h^@j^XQL)0_?_qKr7#yMVm zpl=K9c{)YzrO|-j#ykFs=Czjc?9%e(nLy5_Te%73xu;hcS@J(;p-cY+=)! z3~l6Pbbi~&G#^36PIk=LG$#|ZkIqtC89T*zejD%j*EZ*&^UQfs=0RsKW7C`rW6bww zwRKKp5A1nf8)tcouyx3ri0t96kT>DS34Wl^jVYZ^NL=V3Ltr<{@A3@xZw1sT5xGMH z0l$rR{Pekw@WEO@Yy7SG<2c5s@!jp=e$i9O{`@}3IMVal(fl5*L>KykSDN4dcHBkr z??T#N(xqSi+Q#;YcGK1hdhae!W#afpM))U3%KbkwQfQ7sO&mX|e9rjNGQ-iVFJ6Cd zb018sk3$#I&(WJr$@GD$sJvuS$+Xf5bWDOTcYHoQqhf5LaMX+e``iC*RgZ=ZQQ71< zT+WjMe7ZqYmL^>TwbJgI({ydetG@vxa zj|?N-Z>8xOaxzPr&Nlxj;Pq^h(|0f)a~ZqlG0BS3_X&SNTGJ}(|&RuIem*ho1DHqpDjOqYd)JC z5BIam>09#I-W$r6rgwm{rRja1 zY-xHohx1z|w5+?n;qC3o@JJ-Z$>|&1+2r)i?QC-T#&$M2 zeN#J|oW7x*O-|p;&L*dC6L>j~GLGz`ZxML8mTCINu8;FPUQXZC?WGGsn3lteUH>+b zwEH!P{yje3dsXmp!hCk>;>%$tn#l8z)t1CP9z z^YRy(%A3A3xaSrBG`MLDkz@JT_T39=*4IX3^a_mMv2FuIV)wPv(+X%e| z&@eXnp8g>~qwzf{u(_42jy<`59PN8`A;F%D(1xn??mN< zDert-oF%?D@;YCz0y~_cp2egeraoG?l|ibyd`>Ym2bv3&K&6nX&y;9Ph}$z} zlWAlQnT}>_(t^IbG^E>U$F0O`FQ&4pJ(IzKrWDu9MSL!oP+ zVbE~sTIf1RbsGs?4~>FGLt~&qXe`7nY`sIEZ=ULVr+SY-?+)m_0dr