NickNDS

NDS Inventory Manager Sprite Development Build

Jan 29th, 2021 (edited)
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 107.82 KB | None | 0 0
  1. public double overheatAverage = 0.2, actionLimiterMultiplier = 0.008, runTimeLimiter = 0.1;
  2.  
  3. IMyGridTerminalSystem Ч;SortedDictionary<string,SortedList<string,string>>Ц=new SortedDictionary<string,SortedList<
  4. string,string>>{{"A. Global Tags",new SortedList<string,string>{{Ѐ,"exclude"},{Ͽ,"includeGrid"},{Ќ,"crossGrid"},{Ϸ,"[nds]"},{Ͼ
  5. ,""}}},{"B. Default Categories",new SortedList<string,string>{{ϼ,"ingot"},{ϻ,"ore"},{Ϻ,"component"},{Ϲ,"tool"},{ϸ,"ammo"}
  6. }}};SortedList<string,string>Х=new SortedList<string,string>(),Ф=new SortedList<string,string>(),У=new SortedList<string,
  7. string>();SortedDictionary<string,SortedList<string,double>>Т=new SortedDictionary<string,SortedList<string,double>>{{
  8. "A. Delays",new SortedList<string,double>{{ϵ,10},{ϴ,20},{ϳ,7.5},{ϲ,20},{ϱ,30},{ϰ,5},{ϯ,10},{Ϭ,20},{щ,20},{ѧ,12.5},{ҭ,90},{ҫ,20},{Ҫ,
  9. 15},{ҩ,30},{Ҩ,10},{ҧ,15},{Ҧ,45},{ҥ,5},{Ҥ,6}}},{"B. Performance",new SortedList<string,double>{{ң,0.35},{Ң,0.45},{ҡ,0.5},{Ҡ
  10. ,0.6},{ҟ,0.005}}},{"C. Defaults",new SortedList<string,double>{{Ҟ,5000},{ҝ,25},{Ҝ,40},{қ,4}}},{"D. Adjustments",new
  11. SortedList<string,double>{{Қ,0.05},{ҙ,0.1},{Ҙ,0.05},{җ,2.5},{Җ,3},{ҕ,9}}}};SortedList<string,SortedList<string,bool>>С=new
  12. SortedList<string,SortedList<string,bool>>{{"A. Basic",new SortedList<string,bool>{{Ү,Ѡ},{Ӎ,Ѡ},{Ӌ,Ѡ},{ӊ,Ѡ},{Ӊ,Ѡ},{ӈ,Ѡ},{Ӈ,Ѡ}}},{
  13. "B. Advanced",new SortedList<string,bool>{{ӆ,Ѡ},{Ӆ,Ѡ},{ӄ,Ѡ},{Ӄ,Ѡ},{ӂ,Ѡ},{Ӂ,Ѡ},{Ӏ,Ѡ},{ҿ,Ѡ},{ӌ,Ѡ},{Ҿ,Ѡ},{Ҽ,Ѡ},{һ,Ѡ},{Һ,Ѡ},{ҹ,Ѡ},{Ҹ,Ѡ},{
  14. ҷ,Ѡ},{Ҷ,Ѡ},{ҵ,Ѡ}}},{"C. Settings",new SortedList<string,bool>{{Ҵ,џ},{ҳ,џ},{Ҳ,џ},{ұ,џ},{Ұ,Ѡ},{ү,Ѡ},{ҽ,џ},{ҏ,џ},{Ѷ,Ѡ}}}};
  15. SortedList<string,int>Р=new SortedList<string,int>(){{Ҕ,1},{ғ,30},{Ғ,15},{ґ,0},{Ҭ,6},{Ґ,0}};SortedList<string,List<string>>П=new
  16. SortedList<string,List<string>>(){{ѥ,new List<string>(){"LargeBlockBed","LargeBlockLockerRoom","LargeBlockLockerRoomCorner",
  17. "LargeBlockLockers","PassengerSeatSmall","PassengerSeatLarge","LargeInteriorTurret"}},{Ѥ,new List<string>(){"gravelrefinery",
  18. "gravelseparator","gravelsifter"}},{ѣ,new List<string>(){"K","M","B","T"}}};SortedList<string,Ǔ>О=new SortedList<string,Ǔ>();SortedList<
  19. string,SortedList<string,ȭ>>Н=new SortedList<string,SortedList<string,ȭ>>();SortedList<string,List<long>>М=new SortedList<
  20. string,List<long>>();SortedList<string,List<Ʈ>>Л=new SortedList<string,List<Ʈ>>();List<IMyTerminalBlock>К=new List<
  21. IMyTerminalBlock>(1500);Dictionary<long,ȝ>Й=new Dictionary<long,ȝ>(1500);Dictionary<string,Ƴ>И=new Dictionary<string,Ƴ>(),З=new
  22. Dictionary<string,Ƴ>(),Ж=new Dictionary<string,Ƴ>();Dictionary<string,string>Е=new Dictionary<string,string>(),Д=new Dictionary<
  23. string,string>();HashSet<string>Г=new HashSet<string>(),В=new HashSet<string>(),Б=new HashSet<string>(),А=new HashSet<string>(
  24. );HashSet<long>Ш=new HashSet<long>();List<ɽ>Џ=new List<ɽ>(),Щ=new List<ɽ>();List<long>ш=ö(),ц=ö(),х=ö(),ф=ö(),у=ö(),т=ö()
  25. ,с=ö(),р=ö(),п=ö(),о=ö(),н=ö(),м=ö(),л=ö(),к=ö(),ч=ö(500),й=ö();List<string>з=new List<string>{ҽ,ҏ},ж=new List<string>(),
  26. е=new List<string>(),д=new List<string>(),г=new List<string>(),в=new List<string>();List<ɼ>б=new List<ɼ>(),а=new List<ɼ>(
  27. ),Я=new List<ɼ>();List<MyItemType>Ю=new List<MyItemType>();List<ȭ>Э=new List<ȭ>();Ǔ Ь,Ы,Ъ,и,Ў,Ͻ,Ϫ,ϩ,Ϩ;TimeSpan ϧ=new
  28. TimeSpan(0),Ϧ=new TimeSpan(0),ϥ=new TimeSpan(0);SortedList<string,TimeSpan>Ϥ=new SortedList<string,TimeSpan>();SortedList<string
  29. ,ʙ>ϣ=new SortedList<string,ʙ>();DateTime Ϣ=DateTime.Now,ϡ=DateTime.Now;string Ϡ="Program",ϟ="NDS Inventory Manager",Ϟ,ϝ,Ϝ
  30. ,ϛ,Ϛ,ϙ,Ƽ="",Ϙ="",ϗ="Idle",ϖ="StoneOreToIngotBasic",ϕ="",ϔ,ϓ="",ϒ="",ϑ,ϫ="[nds]",ϐ,ϭ="crossgrid",Ѝ="includegrid";const
  31. string Ћ="MyObjectBuilder_Component",Њ="MyObjectBuilder_Ore",Љ="MyObjectBuilder_Ingot",Ј="MyObjectBuilder_PhysicalGunObject",Ї
  32. ="MyObjectBuilder_GasContainerObject",І="MyObjectBuilder_OxygenContainerObject",Ѕ="MyObjectBuilder_AmmoMagazine",Є=
  33. "MyObjectBuilder_Datapad",Ѓ="MyObjectBuilder_ConsumableItem",Ђ="MyObjectBuilder_PhysicalObject",Ё="MyObjectBuilder_BlueprintDefinition",Ѐ=
  34. "exclusionKeyword",Ͽ="includeGridKeyword",Ќ="crossGridControlKeyword",Ͼ="globalFilterKeyword",ϼ="itemIngotKeyword",ϻ="itemOreKeyword",Ϻ=
  35. "itemComponentKeyword",Ϲ="itemToolKeyword",ϸ="itemAmmoKeyword",Ϸ="panelKeyword",ϵ="delayScan",ϴ="delayProcessLimits",ϳ="delaySortItems",ϲ=
  36. "delayDistributeItems",ϱ="delaySpreadItems",ϰ="delayQueueAssembly",ϯ="delayQueueDisassembly",Ϭ="delayRemoveExcessAssembly",щ=
  37. "delayRemoveExcessDisassembly",ѧ="delaySortBlueprints",ҭ="delaySortCargoPriority",ҫ="delaySpreadBlueprints",Ҫ="delayLoadouts",ҩ="delayFillingBottles",
  38. Ҩ="delayLogic",ҧ="delayCheckIdleAssemblers",Ҧ="delayResetIdleAssembler",ҥ="delayFindModItems",Ҥ="delaySortRefinery",ң=
  39. "actionLimiterMultiplier",Ң="runTimeLimiter",ҡ="loopLimiter",Ҡ="overheatAverage",ҟ="tickWeight",Ҟ="icePerO2/H2Generator",ҝ="fuelPerReactor",Ҝ=
  40. "ammoPerGun",қ="canvasPerParachute",Қ="balanceRange",ҙ="allowedExcessPercent",Ҙ="dynamicQuotaPercentageIncrement",җ=
  41. "dynamicQuotaMaxMultiplier",Җ="dynamicQuotaNegativeThreshold",ҕ="dynamicQuotaPositiveThreshold",Ҕ="updateFrequency",ғ="averageTicks",Ғ=
  42. "outputLimit",ґ="survivalKitQueuedIngots",Ҭ="autoMergeLengthTolerance",Ґ="prioritizedOreCount",Ү="countItems",Ӎ="countBlueprints",Ӌ=
  43. "sortItems",ӊ="queueAssembly",Ӊ="queueDisassembly",ӈ="distributeItems",Ӈ="autoLoadSettings",ӆ="autoKeyCargoContainers",Ӆ=
  44. "processLimits",ӄ="spreadRefineries",Ӄ="spreadReactors",ӂ="spreadGuns",Ӂ="spreadH2/O2Gens",Ӏ="spreadGravelSifters",ҿ="spreadParachutes"
  45. ,ӌ="removeExcessAssembly",Ҿ="removeExcessDisassembly",Ҽ="sortBlueprints",һ="sortCargoPriority",Һ="spreadBlueprints",ҹ=
  46. "doLoadouts",Ҹ="triggerLogic",ҷ="resetIdleAssemblers",Ҷ="findModItems",ҵ="sortRefineries",Ҵ="useConveyorRefineries",ҳ=
  47. "useConveyorReactors",Ҳ="useConveyorH2/O2Gens",ұ="useConveyorGuns",Ұ="dynamicQuota",ү="dynamicQuotaIncreaseWhenLow",ҽ="sameGridOnly",ҏ=
  48. "survivalKitAssembly",Ѷ="addLoadoutsToQuota",ѥ="excludedDefinitions",Ѥ="gravelSifterKeys",ѣ="numberSuffixes";const string Ѣ="true",ѡ="false";
  49. const bool Ѡ=true,џ=false;const MyAssemblerMode ў=MyAssemblerMode.Assembly,ѝ=MyAssemblerMode.Disassembly;int ќ=10,ћ=0,њ=0,љ=0
  50. ,ј=0,ї=0,і=0,ѕ=0,є=1,ѓ=40,ђ=15;bool ё=џ,ѐ=џ,я=Ѡ,ю=џ,э=џ,ь=Ѡ,ы=џ,Ѧ=џ,ъ=џ,Ѩ=џ,Ҏ=џ,Ҍ=џ,ҋ=Ѡ,Ҋ=џ,ҁ=џ,Ҁ,ѿ,Ѿ=џ,ѽ=џ,Ѽ=џ;static
  51. string[]ѻ=new string[]{"Main","Main Control","Main Output","Main Sprites","Processing Block Options","Status Panel",
  52. "Measuring Capacities","Output Panel","Counting Listed Items","Distribution","Distributing Item","Counting Item In Inventory",
  53. "Processing Limits","Sorting","Storing Item","Counting Blueprints","Counting Items","Scanning","Generating Sprites","Listing Items",
  54. "Tag Simulator","Filling Dictionary","Processing Tags","Transferring Item","Spreading Items","Balancing Items","Distributing Blueprint"
  55. ,"Removing Excess Assembly","Match Simulator","Setting Block Quotas","Save","Queue Assembly","Queue Disassembly",
  56. "Inserting Blueprint","Process Panel Options","Removing Blueprint","Removing Excess Disassembly","Order Blocks By Priority",
  57. "Cargo Priority Loop","Sorting Cargo Priority","Sort Blueprints","Spread Blueprints","Load","Loadouts","Sort Refineries","Custom Logic",
  58. "Matching Items","Process Logic","Checking Idle Assemblers","Find Mod Items","Process Setting","Main Panel","Assembly Reserve",
  59. "Processing Item Setting","Cargo Panel","Item Panel","Generating Block Options"};double[]Ѻ;double ѹ=0,Ѹ=0,ҍ=0,ѷ=5.2,ѵ=0,δ,Ѵ,ѳ,Ѳ,ѱ,Ѱ,ѯ=0.05,Ѯ=0,ѭ,
  60. Ѭ=45,ѫ=0,Ѫ=0,ѩ=0.005,Ϯ=100,Ϗ=-1,ʰ=-1,ˬ=0,ˤ=1;Dictionary<string,double>ˣ=new Dictionary<string,double>();Color ˢ=new Color
  61. (0.7019608f,0.9294118f,1f,1f);StringBuilder ˡ=new StringBuilder();SortedList<string,IEnumerator<bool>>ˠ=new SortedList<
  62. string,IEnumerator<bool>>();const TextAlignment ˑ=TextAlignment.LEFT,ː=TextAlignment.CENTER;IMyInventory ˏ,ˎ;List<
  63. MyInventoryItem>ˍ,ˌ,ˋ,ˊ,ˉ,ˈ,ˇ,ˆ,ˁ,ˀ,ʿ,ʾ,ʽ;List<MyProductionItem>ʼ,ʻ,ʺ,ʹ,ˮ,ʸ;ȝ ͱ,Μ,Κ,Ι,Θ,Η,Ζ,Ε,Δ,Γ,Β;SortedList<string,ɮ>Α=new
  64. SortedList<string,ɮ>();public enum ΐ{Ώ,Ύ,Λ,Ό};public enum Ή{Έ,Ά,ͽ,ͼ,ͻ};public enum ͺ{ͷ,Ͷ,Ƀ,ʹ,ͳ,Ͳ};Program(){Ч=GridTerminalSystem;Ί
  65. ();ˍ=Ɨ();ˌ=Ɨ();ˋ=Ɨ();ˊ=Ɨ();ˉ=Ɨ();ˈ=Ɨ();ˇ=Ɨ();ˆ=Ɨ();ˁ=Ɨ();ˀ=Ɨ();ʿ=Ɨ();ʾ=Ɨ();ʽ=Ɨ();ʼ=Ɩ();ʻ=Ɩ();ʺ=Ɩ();ʹ=Ɩ();ˮ=Ɩ();ʸ=Ɩ();Ь=J(
  66. );Ы=J();Ъ=J();и=J();Ў=J();Ͻ=J();Ϫ=J();ϩ=J();Ϩ=J();if(Me.CustomData.Length==0){я=џ;ѐ=Ѡ;}}void Ί(){Ϟ=Ū(Ѐ);ϝ=Ū(ϼ);Ϝ=Ū(ϻ);ϛ=Ū
  67. (Ϻ);Ϛ=Ū(ϸ);ϙ=Ū(Ϲ);ϔ=Ū(Ͼ);ϫ=Ū(Ϸ);ϭ=Ū(Ќ);Ѝ=Ū(Ͽ);if(ж.Count==0)ж.AddRange(new List<string>{ϝ,Ϝ,ϛ,ϙ,Ϛ});ь=ŧ(Ӈ);Ҁ=ŧ(Ұ);ѿ=ŧ(ү);
  68. ѳ=Ũ(Ҙ);Ѳ=Ũ(җ);ѱ=Ũ(ҕ);Ѱ=Ũ(Җ);Ѯ=Ũ(ҙ);ѯ=Ũ(Қ);Ѭ=Ũ(Ҧ);є=Р[Ҕ];if(є!=1&&є!=10&&є!=100)є=1;StringBuilder Æ=new StringBuilder();
  69. foreach(string ĕ in ж){if(Æ.Length>0)Æ.Append("|");Æ.Append(Ƙ(ĕ));}ϐ=Æ.ToString();Æ.Clear();Æ.AppendLine(
  70. $"Type=Item/Cargo/Output/Status/Span");ʏ(Æ,"Font=Monospace");ʏ(Æ,$"Categories={ϐ}");ʏ(Æ,$"Items=ingot:Iron|ore:Iron");ʏ(Æ,
  71. "Item Display=Standard|Detailed|CompactAmount|CompactPercent");ʏ(Æ,$"Sorting=Alphabetical|AscendingAmount|DescendingAmount|AscendingPercent|DescendingPercent");ʏ(Æ,
  72. $"Options=BelowQuota|HideProgressBar");ʏ(Æ,"Minimum Value=1");ʏ(Æ,"Maximum Value=150000");ʏ(Æ,"Number Suffixes=K|M|B|T");ʏ(Æ,"Text Color=0:0:0:255");ʏ(Æ,
  73. "Number Color=120:0:0:255");ʏ(Æ,"Back Color=255:255:255:0");ʏ(Æ,"Rows=15");ʏ(Æ,"Name Length=18");ʏ(Æ,"Decimals=2");ʏ(Æ,"Update Delay=1");ʏ(Æ,
  74. "Span ID=Span A");ʏ(Æ,"Span Child ID=Span B");ϑ=Æ.ToString();ɍ();ђ=Р[Ғ];ѕ=Р[Ҭ];}void ʯ(){actionLimiterMultiplier=Ũ(ң);runTimeLimiter=Ũ(Ң
  75. );ѭ=Ũ(ҡ);overheatAverage=Ũ(Ҡ);ѩ=Ũ(ҟ);ѓ=Р[ғ];}void Main(string ʦ){if((!э&&!Ѿ)||ѐ){try{Ϣ=DateTime.Now;bool ʮ=џ;ô();Ɇ();if(ь
  76. &&!э){і++;if(і>=600){if(Me.CustomData.Length!=Ƽ.Length||string.Compare(Me.CustomData,Ƽ,џ)!=0){я=Ѡ;і=-300;}else і=0;}}try{
  77. if(!(ы||Ѽ)&&ʦ.Length>0){if(!ѐ&&!я)ʷ(ʦ);else ɗ("Please wait until save/load completes to run commands");ʮ=Ѡ;}}catch{Ƀ(
  78. $"Error running command: {ʦ}");}if(overheatAverage<=0.0||Ѫ<=overheatAverage){љ=0;ե();}else љ++;ќ+=є;if(ҋ){try{if(!ʮ&&ы)ʥ(ʦ);else if(!ʮ&&Ѽ)ʧ(ʦ);else
  79. if(Ҏ)ʭ();else if(Ѩ)ʶ();else if(ѽ)ʵ();else ʳ();}catch{Ƀ("Error caught in echo");}}}catch{Ƀ("Error in main");}}else{if(э)
  80. Echo("Please recompile to complete reset!");if(Ѿ)Echo("Remove any settings you want to update/reset and recompile");}}void ʭ
  81. (){if(ќ>=7){ќ=0;Echo($"--Functions List ({Х.Count}/{ϣ.Count})--");Echo("--Enter 'functions?' to hide--");string ʬ,ō;
  82. double Ʉ,ɻ,ʫ;bool ʪ,ʩ;ʙ ʨ;foreach(KeyValuePair<string,ʙ>Ĺ in ϣ){ʨ=Ĺ.Value;ō=Ĺ.Key;Ʉ=ʨ.ʃ;ɻ=ʨ.ɺ;ʫ=ʨ.ɲ;ʪ=Ƒ(ō,Ѡ);ʩ=ʨ.ɹ>1;ʬ=ō;if(ʪ)
  83. ʬ+=" : Active";Echo(ʬ);ʬ=$"-Ticks: {ñ(Ʉ)}";if(ʪ)ʬ+=$" : {ñ(ʨ.Ʉ)}";Echo(ʬ);if(ʩ)Echo($"--({ñ(ʨ.ɸ)}-{ñ(ʨ.ɷ)})");ʬ=
  84. $"-Time: {Ɣ(ʫ)}";if(ʪ)ʬ+=$" : {Ɣ(ʨ.Ş.TotalMilliseconds)}";Echo(ʬ);if(ʩ)Echo($"--({Ɣ(ʨ.ɴ)}-{Ɣ(ʨ.ɳ)})");ʬ=$"-Actions: {ñ(ɻ)}";if(ʪ)ʬ+=
  85. $" : {ñ(ʨ.ɻ)}ops";Echo(ʬ);if(ʩ)Echo($"--({ñ(ʨ.ɶ)}-{ñ(ʨ.ɵ)})");if(Ʉ>0)Echo($"-Avg: {ʫ/Ʉ:N2}ms, {Math.Ceiling(ɻ/Ʉ)}ops");Echo(
  86. $"-Runs: {ñ(ʨ.ɹ)}");}for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʧ(string ʦ){string ĕ="*",m,A,D,ʤ;if(ʦ.Length>0){ʤ=ʦ.ToLower().Replace(" ","");if
  87. (ʤ=="match"){Ѽ=џ;ɛ(new int[]{54,20});return;}if(!ƕ(ʤ,":"))ʤ=$"*:{ʤ}";if(ϒ.Length==0&&ʤ!=ϓ){ϒ=ʤ;Ь.ǐ();}}if(љ==0){int õ;if(
  88. ϒ.Length>0){if(Ԋ(ѻ[20],ѻ[28],Ь,ϒ)){ϓ=ϒ;ϒ="";е.Clear();õ=Ь.nj();for(int Ç=0;Ç<õ;Ç++){m=Ь.Ǘ(Ç);ə(m,out A,out D);ĕ=
  89. $"({ƈ(m)})";е.Add($"{c(A,D)} {ĕ}");}Ь.ǐ();}}}if(ќ>=7){ќ=0;Echo("--Match Simulator--");Echo("--Enter 'match' to hide--");if(ϒ.Length
  90. >0){Echo($"--Matching: {ϒ}--");if(љ>0)Echo($"Overheat Ticks: {љ}");}else Echo("--Enter text and press Run--");if(ϓ.Length
  91. >0){Echo($"--Matches for {ϓ}--");for(int Ç=0;Ç<е.Count;Ç++)Echo($"{е[Ç]}");}for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʥ(string
  92. ʦ){if(ʦ.Length>0){string ʤ=ʦ.ToLower().Replace(" ","");if(ʤ=="merge"){Ϙ="";ы=џ;ɗ("Closed Merge Menu");return;}int P;if(
  93. int.TryParse(ʦ,out P)){P--;if(Ϙ.Length==0){if(P<Ф.Count)Ϙ=Ф.Keys[P];}else if(P<д.Count){ʖ(Ϙ,д[P]);Ϙ="";ы=Ф.Count>0&&д.Count
  94. >0;ѐ=Ѡ;}}}if(ќ>=7){ќ=0;Echo("--Merging Menu--");Echo("--Enter 'merge' to cancel--");if(Ϙ.Length==0){Echo("Choose Item");
  95. for(int Ç=0;Ç<Ф.Count;Ç++)Echo($"{Ç+1} : {Ф.Values[Ç]}");if(Ф.Count==0)ы=џ;}else{Echo($"Choose Blueprint For {Ϙ}");for(int
  96. Ç=0;Ç<д.Count;Ç++)Echo($"{Ç+1} : {д[Ç]}");if(д.Count==0){ы=џ;Ϙ="";}}for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʶ(){if(ќ>=7){ќ=0
  97. ;Echo("--Merge Help List--");Echo("--Enter 'merge?' to hide--");Echo("--Enter 'merge' to begin merge--");for(int Ç=0;Ç<Ф.
  98. Count;Ç++)Echo($"ITM: {Ф.Values[Ç]}");for(int Ç=0;Ç<д.Count;Ç++)Echo($"BPT: {д[Ç]}");for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʵ()
  99. {if(ќ>=7){ќ=0;Echo("--Delay List--");Echo("--Enter 'delays?' to hide--");б.Clear();б.AddRange(new List<ɼ>{new ɼ{M=ϧ.
  100. TotalSeconds,ï="Scan and Process"},new ɼ{M=Ϧ.TotalSeconds,ï="Fill Bottles"}});if(ь)б.Add(new ɼ{M=15.0-((double)і/60.0),ï="Reload"});
  101. foreach(KeyValuePair<string,TimeSpan>Ĺ in Ϥ)б.Add(new ɼ{M=Ĺ.Value.TotalSeconds,ï=$"{Ĺ.Key}"});б=б.OrderBy(Ĩ=>Ĩ.M).ToList();
  102. foreach(ɼ ʴ in б)Echo($"{ʴ.ï}: {Math.Ceiling(ʴ.M)}s");for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʳ(){if(ќ>=7){ќ=0;Echo($"Main: {ϗ}");
  103. Echo($"Current: {Ϡ}");Echo($"Last: {Ě(Runtime.LastRunTimeMs,4)}");Echo($"Avg: {Ě(Ѫ,4)}");if(Ϗ!=-1)Echo(
  104. $"Ticks Per Cycle: {Ϗ}-{ʰ}");Echo($"Blocks: {Й.Count}");Echo($"Panels: {к.Count}");Echo($"Active Functions: {Х.Count}");if(Ф.Count+д.Count>0){Echo(
  105. $"Mod Items: {Ф.Count}");Echo($"Mod Blueprints: {д.Count}");if(Ф.Count>0&&д.Count>0)Echo("-Enter 'merge' to begin merge");}if(љ>0)Echo(
  106. $"Overheat Ticks: {љ}");if(ϕ.Length>0){Echo($"Last: {ϕ}");if(DateTime.Now>=ϡ)ϕ="";}for(int Ç=0;Ç<10;Ç++)Echo("");}}void ʷ(string ʦ){string ʲ=ʦ
  107. .ToLower(),ʤ,ō,u,Ō;bool ʱ=Ѡ;ɗ($"Running argument: {ʦ}");ʤ=ʲ.Replace(" ","");if(ƕ(ʲ," ")){ō=ʲ.Substring(0,ʲ.IndexOf(" "));
  108. Ō=ʲ.Substring(ʲ.IndexOf(" ")+1);}else{ō="";Ō="";}string R;switch(ʤ){case"ping":Ƀ("Pong!");break;case"save":if(!я){ɗ(
  109. "Started save process");ѐ=Ѡ;}else ɗ("Load process is active, please wait to save!");break;case"load":if(!ѐ){ɗ("Started load process");я=Ѡ;}
  110. else ɗ("Save process is active, please wait to load!");break;case"clearqueue":foreach(long P in ш)if(o(P))((IMyAssembler)Й[P
  111. ].C).ClearQueue();ɗ("Assembler queues cleared");break;case"reset":Me.CustomData="";э=Ѡ;ѐ=Ѡ;ɗ(
  112. "Save and reset process started");break;case"update":ѐ=Ѡ;Ѿ=Ѡ;ɗ("Save and update process started");break;case"clearfunctions":ɇ();ɗ(
  113. "Active processes stopped");break;case"merge?":if(Ѩ){Ѩ=џ;return;}Ѩ=Ф.Count+д.Count>0;if(Ѩ)ɗ("Opened Merge Help List");else ɗ(
  114. "No mod items or blueprints to display");break;case"merge":ы=Ф.Count>0&&д.Count>0;if(ы)ɗ("Opened Merge Menu");else ɗ(
  115. "Merging requires mod items and blueprints to merge");break;case"match":Ѽ=Ѡ;break;case"functions?":Ҏ=!Ҏ;break;case"delays?":ѽ=!ѽ;break;case"scan":ϧ=TimeSpan.FromSeconds(0);
  116. Ϥ.Clear();ɇ();ɗ("Functions and delays reset");break;case"echo":ҋ=!ҋ;Echo($"Echo Allowed: {ҋ}");break;case"error":ҁ=!ҁ;if(
  117. ҁ)ɗ("Error filter enabled, use 'error' to disable");else ɗ("Error filter disabled");break;case"full":for(int Ç=0;Ç<С.
  118. Count;Ç++){for(int Ĩ=0;Ĩ<С.Values[Ç].Count;Ĩ++){R=С.Values[Ç].Keys[Ĩ];Ɓ(R,Ç<2||(!Č(R,"useconveyor")&&!з.Contains(R)));}}ɗ(
  119. "All functions");ѐ=Ѡ;break;case"basic":for(int Ç=0;Ç<С.Count;Ç++){for(int Ĩ=0;Ĩ<С.Values[Ç].Count;Ĩ++)Ɓ(С.Values[Ç].Keys[Ĩ],Ç==0);}ɗ(
  120. "Basic functions only");ѐ=Ѡ;break;case"monitor":for(int Ç=0;Ç<С.Count;Ç++){for(int Ĩ=0;Ĩ<С.Values[Ç].Count;Ĩ++){R=С.Values[Ç].Keys[Ĩ];Ɓ(R,R==Ӈ
  121. ||Č(R,"useconveyor")||Č(R,"count"));}}ɗ("Monitoring only");ѐ=Ѡ;break;default:if(ō.Length==0)ɗ($"Unhandled command: {ʦ}");ʱ
  122. =џ;break;}if(!ʱ&&ō.Length!=0)switch(ō){case"setgroup":u=Ō.Substring(0,Ō.IndexOf(" "));Ō=Ō.Substring(Ō.IndexOf(" ")+1);ɖ(u
  123. ,Ō);ѐ=Ѡ;break;case"set":u=Ō.Substring(0,Ō.IndexOf(" "));Ō=Ō.Substring(Ō.LastIndexOf(" ")+1);ɨ(u,Ō);ѐ=Ѡ;break;default:ɗ(
  124. $"Unhandled command: {ʦ}");break;}}bool Ν(string ʚ){string Ģ=ѻ[53];if(!Ƒ(Ģ)){ȿ(ν(ʚ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ν(string ʚ)
  125. {string μ=ʚ.Replace("||",";"),ō,Ō,A="",D="";string[]λ=μ.Split(';');double Ʒ,κ,ι;bool θ=џ,ň;int P;ȭ Z=new ȭ();for(int Ç=0;
  126. Ç<λ.Length;Ç++){if(Ĥ())yield return Ѡ;if(Ǝ(λ[Ç],out ō,out Ō)){ō=ō.ToLower();if(ō=="type")A=Ō;else if(ō=="subtype")D=Ō;}if
  127. (A.Length>0&&D.Length>0)break;}if(A.Length>0&&D.Length>0){Ɏ(D,D,A,"");θ=n(out Z,$"{A}/{D}");}if(θ){for(int Ç=0;Ç<λ.Length
  128. ;Ç++){if(Ĥ())yield return Ѡ;if(Ǝ(λ[Ç],out ō,out Ō)){ň=ž(Ō,Ѣ);switch(ō.Replace(" ","").ToLower().Trim()){case"name":Z.Ȭ=Ō;
  129. break;case"quota":P=Ō.IndexOf("<");if(P>0){if(double.TryParse(Ō.Substring(0,P),out Ʒ)&&double.TryParse(Ō.Substring(P+1),out ι
  130. )){Z.Ʒ=Ʒ;if(ι<Ʒ)ι=Ʒ;if(ι<0)ι=0;Z.dz=ι;}}else{if(double.TryParse(Ō,out Ʒ)){Z.Ʒ=Ʒ;if(Ʒ<0)Ʒ=0;Z.dz=Ʒ;}}break;case"category":Ō=
  131. Ō.ToLower();Z.ĕ=Ō;ò(Ō);break;case"blueprint":if(Ƈ(Z.Ë))И.Remove(Z.Ë);Z.Ë=Ō;if(Ō.Length>0)Ф.Remove(Z.ǹ());break;case
  132. "assemblymultiplier":if(double.TryParse(Ō,out κ))Z.ǵ=κ;break;case"assemble":Z.Ǧ=ň;break;case"disassemble":Z.ǥ=ň;break;case"refine":Z.Ǥ=ň;
  133. break;case"display":Z.ǣ=ň;break;case"orekeys":string[]ǟ=Ō.Substring(1,Ō.Length-2).Split('|');if(ǟ.Length>0){Z.ǟ.Clear();Z.ǟ.
  134. AddRange(ǟ);}if(Z.ǟ.Count==0&&Ē(Z.A))Z.ǟ.Add(D);break;case"fuel":Z.ǧ=ň;break;case"gas":Z.ǡ=ň;break;}}}if(Ƈ(Z.Ë))И[Z.Ë]=ŷ(Z);Д[Z.
  135. ǹ()]=Z.ĕ;ó(ref Z);ʕ(Z);}}bool η(ref double δ,IMyInventory ˎ,ȝ γ,MyInventoryItem F){string Ģ=ѻ[23];if(!Ƒ(Ģ)){ȿ(ε(δ,ˎ,γ,F),
  136. Ģ);if(Ĥ())return џ;}bool ζ=Ħ(Ģ);if(ζ){δ-=ѹ;ѹ=0;return Ѡ;}return џ;}IEnumerator<bool>ε(double δ,IMyInventory ˎ,ȝ γ,
  137. MyInventoryItem F){ˏ=γ.C.GetInventory(0);if(ˏ!=ˎ){bool ώ,ύ=џ;double ό=γ.ȳ.ǘ(out ώ,F),ϋ=0,ϊ=f(F,γ.C),ω=δ;if(ώ){if(ό<=0.0)ύ=Ѡ;else{while(
  138. !Ӑ(ref ϋ,F,γ.C))yield return Ѡ;if(ϋ>=ό)ύ=Ѡ;else if(ω+ϋ>ό)ω=ό-ϋ;}}if(!ύ){if(ω>ϊ)ω=ϊ;if(!X(F))ω=Math.Floor(ω);if(ω>0){if(ˏ.
  139. TransferItemFrom(ˎ,F,(MyFixedPoint)ω)){Ƀ($"Moved {ñ(ω),-6} {v(c(F),12),-12} to {v(γ.C.CustomName,12),-12}");ѹ=ω;}}}}yield return џ;}bool
  140. ψ(string ʚ){string Ģ=ѻ[50];if(!Ƒ(Ģ)){ȿ(χ(ʚ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>χ(string ʚ){int P=ʚ.IndexOf
  141. ("=");string φ,υ;if(P!=-1){string ō=ʚ.Substring(0,P).Trim();φ=ʚ.Substring(P+1).Trim();if(ž(ō,"name")){while(!Ν(ʚ))yield
  142. return Ѡ;}else if(ō=="group"){P=φ.IndexOf("=");υ=φ.Substring(0,P).ToLower();φ=φ.Substring(P+1).Trim();Ы.ǐ();while(!Ԋ(ѻ[22],ѻ[
  143. 46],Ы,φ))yield return Ѡ;if(υ.Length!=0&&Ы.nj()!=0)О[υ]=Ы;}else{φ=ʚ.Substring(P+1).Trim();double τ;bool σ=!ž(φ,ѡ);if(!double
  144. .TryParse(φ,out τ))τ=0;if(ō=="script"){if(φ==ϟ)Ѧ=Ѡ;}else if(ō=="version"){if(τ==ѷ)ъ=Ѡ;}else if(Р.ContainsKey(ō))Р[ō]=(int
  145. )τ;else if(!Ŧ(ō,φ)&&!ť(ō,τ)&&!Ɓ(ō,σ)){if(П.ContainsKey(ō)&&Č(φ,"[")&&φ.EndsWith("]")){φ=φ.Substring(1,φ.Length-2);string[
  146. ]ς=φ.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);П[ō].Clear();for(int Ç=0;Ç<ς.Length;Ç++){if(Ĥ())yield
  147. return Ѡ;П[ō].Add(ς[Ç]);}}}}}yield return џ;}bool ρ(string Ģ){if(!Ƒ(Ģ)){ȿ(π(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<
  148. bool>π(string Ģ){while(Ѡ){foreach(long P in ш){if(Ĥ())yield return Ѡ;if(!o(P))continue;ʸ.Clear();((IMyAssembler)Й[P].C).
  149. GetQueue(ʸ);for(int ſ=0;ſ<ʸ.Count;ſ++){if(Ĥ())yield return Ѡ;if(ŵ(ʸ[ſ]))ɉ(ʸ[ſ]);}}foreach(long P in ч){if(Ĥ())yield return Ѡ;if(
  150. !o(P))continue;ˆ.Clear();Й[P].C.GetInventory(0).GetItems(ˆ);for(int ſ=0;ſ<ˆ.Count;ſ++){if(Ĥ())yield return Ѡ;if(Ŷ(ˆ[ſ])){
  151. Ƀ($"Unknown Item: {v(ˆ[ſ].Type.SubtypeId,14)}, found in: {v(Й[P].C.CustomName,14)}");ɋ(ˆ[ſ]);}}}А.Add(Ģ);yield return џ;}
  152. }bool ο(string Ģ){if(!Ƒ(Ģ)){ȿ(ξ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ξ(string Ģ){IMyAssembler S;ʅ Ȝ;
  153. SortedList<string,double>ʋ=new SortedList<string,double>();List<MyProductionItem>ʟ=Ɩ();bool Τ;IMyInventory Σ;while(Ѡ){foreach(long
  154. P in ш){if(Ĥ())yield return Ѡ;if(!o(P)||Й[P].ȸ)continue;Ȝ=Й[P].Ȝ;S=(IMyAssembler)Й[P].C;if(S.Mode==ў)Σ=S.GetInventory(0);
  155. else Σ=S.GetInventory(1);if(Ȝ.ʀ(Ѭ))Τ=џ;else Τ=Ѡ;if(!Τ){S.GetQueue(ʟ);foreach(MyProductionItem Ρ in ʟ){if(Ĥ())yield return Ѡ;
  156. if(!ʋ.ContainsKey(ƒ(Ρ)))ʋ[ƒ(Ρ)]=(double)Ρ.Amount;else ʋ[ƒ(Ρ)]+=(double)Ρ.Amount;}ʟ.Clear();foreach(KeyValuePair<string,
  157. double>Ĺ in ʋ){if(Ĥ())yield return Ѡ;if(!Ȝ.ʋ.ContainsKey(Ĺ.Key)||Ȝ.ʋ[Ĺ.Key]!=Ĺ.Value){Τ=Ѡ;break;}}}else Τ=џ;if(!Τ){if(Ȝ.ʁ){S.
  158. ClearQueue();S.GetInventory(0).GetItems(ˁ);for(int Ĩ=0;Ĩ<ˁ.Count;Ĩ++)while(!ӝ(ˁ[Ĩ],P,0))yield return Ѡ;ˁ.Clear();S.GetInventory(1)
  159. .GetItems(ˁ);for(int Ĩ=0;Ĩ<ˁ.Count;Ĩ++)while(!ӝ(ˁ[Ĩ],P,1))yield return Ѡ;ˁ.Clear();Ȝ.ɾ();}else Ȝ.ʁ=Ѡ;Ȝ.ʋ.Clear();}else Ȝ.
  160. ɾ();foreach(KeyValuePair<string,double>Ĺ in ʋ)Ȝ.ʋ[Ĺ.Key]=Ĺ.Value;ʋ.Clear();}А.Add(Ģ);yield return Ѡ;}}bool Π(string Ģ,Ǔ Ŵ
  161. ,string ĕ,string u,bool ǜ=Ѡ,string M="0",float į=0f){if(!Ƒ(Ģ)){List<ȭ>ɤ=ƚ();ȿ(Ο(Ŵ,ɤ,ĕ,u,ǜ,M,į),Ģ);if(Ĥ())return џ;}return
  162. Ħ(Ģ);}IEnumerator<bool>Ο(Ǔ Ŵ,List<ȭ>ɤ,string ĕ,string u,bool ǜ,string M="0",float į=0f){ȭ Z;bool Ξ=џ;double Υ;if(u.Length
  163. >0){for(int Ç=0;Ç<ɤ.Count;Ç++){if(Ĥ())yield return Ѡ;if(ĕ=="*"||ĕ==ɤ[Ç].ĕ){Z=ɤ[Ç];if(u.Length>2)Ξ=u.StartsWith("'")&&u.
  164. EndsWith("'");if(u=="*"||(Ξ&&ž(Z.Ȭ.Replace(" ",""),u.Substring(1,u.Length-2)))||(!Ξ&&Č(Z.Ȭ,u))){if(M.EndsWith("%")&&double.
  165. TryParse(M.Substring(0,M.Length-1),out Υ)){Υ/=100.0;Υ*=į;Υ/=e(Z.A,Z.D);if(!Z.Ǡ)Υ=Math.Floor(Υ);}else if(!double.TryParse(M,out Υ
  166. ))Υ=0;Ŵ.Ǜ(Z.A,Z.D,Υ,ǜ);}}}}yield return џ;}bool α(List<ư>Ț,string Ō){string Ģ=ѻ[47];if(!Ƒ(Ģ)){ȿ(ΰ(Ț,Ō),Ģ);if(Ĥ())return џ
  167. ;}return Ħ(Ģ);}IEnumerator<bool>ΰ(List<ư>Ț,string Ō){г.Clear();string ί=Ō.Replace(" ",""),A="",D="",ħ=">",ή="";string[]έ;
  168. int β,ά,Ϋ;if(Ĥ())yield return Ѡ;έ=ί.Split('|');for(int Ĩ=0;Ĩ<έ.Length;Ĩ++){if(Ĥ())yield return Ѡ;г.Add(έ[Ĩ]);}if(г.Count>0)
  169. {Ў.ǐ();Ͻ.ǐ();for(int Ĩ=0;Ĩ<г.Count;Ĩ++){if(Ĥ())yield return Ѡ;try{ή=г[Ĩ];β=ή.IndexOf(":");A=ή.Substring(0,β);ή=ή.
  170. Substring(β+1);if(ή.Contains(">="))ħ=">=";else if(ή.Contains("<="))ħ="<=";else if(ή.Contains(">"))ħ=">";else if(ή.Contains("<"))ħ
  171. ="<";else if(ή.Contains("="))ħ="=";β=ή.IndexOf(ħ);D=ή.Substring(0,β);ή=ή.Substring(β+ħ.Length);}catch{}Ў.ǐ();while(!Π(ѻ[
  172. 46],Ў,A,D))yield return Ѡ;ά=Ў.nj();β=ή.IndexOf(":");if(β>0){Ͻ.ǐ();A=ή.Substring(0,β);D=ή.Substring(β+1);while(!Π(ѻ[46],Ͻ,A,
  173. D))yield return Ѡ;Ϋ=Ͻ.nj();for(int Ç=0;Ç<ά;Ç++){for(int ſ=0;ſ<Ϋ;ſ++){if(Ĥ())yield return Ѡ;Ț.Add(new ư{A=Ў.Ǘ(Ç),Å=Ͻ.Ǘ(ſ),ħ
  174. =ħ});}}}else{for(int Ç=0;Ç<ά;Ç++){if(Ĥ())yield return Ѡ;Ț.Add(new ư{A=Ў.Ǘ(Ç),Å=ή,ħ=ħ});}}}}yield return џ;}bool Ϊ(string
  175. Ģ){if(!Ƒ(Ģ)){ȿ(Ω(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ω(string Ģ){IMyInventory Ψ,Χ;int Φ,Ͱ;ȭ Z;double ӎ;
  176. while(Ѡ){Ъ.ǐ();bool Ց=џ;foreach(long P in м){if(Ĥ())yield return Ѡ;if(!o(P))continue;Ι=Й[P];Φ=Ι.Ȳ.nj();if(Φ!=0){Ψ=Ι.C.
  177. GetInventory(0);Ъ.ǐ();и.ǐ();и.Ǎ(Ι.Ȳ);while(!Ӥ(Ъ,new List<long>{P}))yield return Ѡ;Ͱ=Ъ.nj();for(int Ĩ=0;Ĩ<Ͱ;Ĩ++){if(Ĥ())yield return Ѡ
  178. ;Z=Ъ.Nj(Ĩ);if(Z.D.Length>0)и.Ǜ(Z.A,Z.D,-Z.ȫ);}for(int Ĩ=0;Ĩ<Ͱ&&!Ց;Ĩ++){if(Ĥ())yield return Ѡ;try{Z=и.Nj(Ĩ);Ց=Z.ȫ<0;}catch{}
  179. }if(Ց){ˀ.Clear();Ψ.GetItems(ˀ);for(int Ĩ=0;Ĩ<ˀ.Count;Ĩ++){ӎ=и.ǘ(ˀ[Ĩ]);if(ӎ<0){ӎ*=-1.0;ӎ=Math.Min(ӎ,(double)ˀ[Ĩ].Amount);
  180. while(!ӝ(ˀ[Ĩ],P,0,ӎ))yield return Ѡ;}}}foreach(long Տ in о){if(Ĥ())yield return Ѡ;if(!ų(и))break;if(!o(Տ))continue;ˀ.Clear();
  181. Θ=Й[Տ];Χ=Θ.C.GetInventory(0);Χ.GetItems(ˀ);for(int ſ=0;ſ<ˀ.Count;ſ++){if(Ĥ())yield return Ѡ;if(!ų(и))break;if(и.ǘ(ˀ[ſ])>0
  182. ){try{ӎ=и.ǘ(ˀ[ſ]);if(ӎ>(double)ˀ[ſ].Amount)ӎ=(double)ˀ[ſ].Amount;if(!X(ˀ[ſ]))ӎ=Math.Floor(ӎ);if(ӎ>0){if(Ψ.
  183. TransferItemFrom(Χ,ˀ[ſ],(MyFixedPoint)ӎ))и.Ǜ(ˀ[ſ].Type.TypeId,ˀ[ſ].Type.SubtypeId,-ӎ);}}catch{}}}}}}А.Add(Ģ);yield return џ;}}bool Վ(
  184. string Ģ){if(!Ƒ(Ģ)){ȿ(Ս(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ս(string Ģ){IMyInventory Σ;double Ռ=0,Ջ=0;while(Ѡ
  185. ){а.Clear();foreach(long P in п){if(Ĥ())yield return Ѡ;if(!o(P))continue;Β=Й[P];Σ=Β.C.GetInventory(0);ʿ.Clear();а.Clear()
  186. ;Σ.GetItems(ʿ);if(ʿ.Count<=1)continue;for(int Ĩ=0;Ĩ<ʿ.Count;Ĩ++){if(Ĥ())yield return Ѡ;а.Add(new ɼ{M=Ż(ʿ[Ĩ]),ǖ=Ĩ});if(Ĩ==
  187. 0){Ռ=а[а.Count-1].M;Ջ=а[а.Count-1].M;}else{Ռ=Math.Min(Ռ,а[а.Count-1].M);Ջ=Math.Max(Ջ,а[а.Count-1].M);}}Β.ȳ.ǐ(џ,Ѡ);if(Ռ!=Ջ
  188. ){а=а.OrderBy(Ĩ=>Ĩ.M).ToList();ʾ.Clear();double Պ=0,Ɍ=(double)Σ.MaxVolume/e(ʿ[0]),Չ;for(int Ĩ=0;Ĩ<а.Count;Ĩ++){if(Ĥ())
  189. yield return Ѡ;ʾ.Add(ʿ[а[Ĩ].ǖ]);}if(ʾ.Count>1){int Ո=Р[Ґ];if(Ո==0){for(int ԃ=1;ԃ<=а.Count;ԃ++)Պ+=ԃ;}else{int Շ=0;for(int ԃ=а.
  190. Count;ԃ>0;ԃ--){if(Շ<Ո){Շ++;Պ+=ԃ;}else Պ++;}}Չ=ʾ.Count;for(int Ĩ=0;Ĩ<ʾ.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(Ո>0&&Ĩ>=Ո)Չ=1;Β.ȳ.Ǜ
  191. (ʾ[Ĩ].Type.TypeId,ʾ[Ĩ].Type.SubtypeId,(Չ/Պ)*Ɍ,џ,џ);for(int ԃ=0;ԃ<Σ.ItemCount;ԃ++){if(Ĥ())yield return Ѡ;try{
  192. MyInventoryItem F=(MyInventoryItem)Σ.GetItemAt(ԃ);if(F.Type.ToString()==ʾ[Ĩ].Type.ToString()){Σ.TransferItemFrom(Σ,ԃ,Ĩ,џ,ʾ[Ĩ].Amount);
  193. break;}}catch{}}if(Չ>1)Չ--;}}}if(Β.ȳ.nj()>0)й.Add(P);else й.Remove(P);}while(!Ի(й,Б.Contains("limit")))yield return Ѡ;А.Add(Ģ)
  194. ;yield return џ;}}bool Ր(string Ģ){if(!Ƒ(Ģ)){ȿ(Ւ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ւ(string Ģ){ȭ Z;
  195. while(Ѡ){bool Ș,զ=Ѡ;foreach(long P in л){if(Ĥ())yield return Ѡ;Η=Й[P];if(!(Η.C is IMyTimerBlock)||((IMyFunctionalBlock)Η.C).
  196. Enabled){Ș=Η.Ș;for(int Ĩ=0;Ĩ<Η.Ț.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(n(out Z,Η.Ț[Ĩ].A))զ=Ų(Z,Η.Ț[Ĩ].ħ,Η.Ț[Ĩ].Å);if((!զ&&Ș)||(զ
  197. &&!Ș))break;}if(Η.C is IMyTimerBlock){if(զ)((IMyTimerBlock)Η.C).Trigger();}else((IMyFunctionalBlock)Η.C).Enabled=զ;}}А.Add
  198. (Ģ);yield return џ;}}void ե(){ˬ++;string Ģ=ѻ[0];if(!Ƒ(Ģ))ȿ(դ(Ģ),Ģ);else Ħ(Ģ);}IEnumerator<bool>դ(string Ģ){while(!ё){Ԍ();
  199. yield return Ѡ;}while(Ѡ){while(!Յ())yield return Ѡ;while(!Դ())yield return Ѡ;գ();if(Ĥ(ѭ))yield return Ѡ;ա(ѻ[2]);if(Ĥ(ѭ))yield
  200. return Ѡ;А.Add(Ģ);}}void գ(){string Ģ=ѻ[1];if(!Ƒ(Ģ))ȿ(բ(Ģ),Ģ);else Ħ(Ģ);}IEnumerator<bool>բ(string Ģ){string ō;while(Ѡ){if(ј>=
  201. 10){ј=0;for(int Ç=2;Ç<ѻ.Length;Ç++){if(Ĥ())yield return Ѡ;if(Ƒ(ѻ[Ç]))ʘ(ѻ[Ç]);}}if(ϧ.TotalSeconds<=0.0){Ҍ=Ѡ;ϗ=ѻ[17];while(!
  202. ԥ(ϗ))yield return Ѡ;ɘ();Ҍ=џ;ϧ=TimeSpan.FromSeconds(Ũ(ϵ));}if(ŧ(Ү)){ϗ=ѻ[16];while(!Ԗ(ϗ))yield return Ѡ;ɘ();}if(ŧ(Ӎ)){ϗ=ѻ[
  203. 15];while(!ԓ(ϗ))yield return Ѡ;ɘ();}if(ŧ(Ҽ)){ō=ѻ[40];if(É(ō)){ϗ=ō;while(!ը(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ѧ));}}if(ŧ(ӊ)&&ŧ
  204. (Ӎ)){ō=ѻ[31];if(É(ō)){ϗ=ō;while(!Ձ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ϰ));}}if(ŧ(Ӊ)&&ŧ(Ӎ)){ō=ѻ[32];if(É(ō)){ϗ=ō;while(!Խ(ō))
  205. yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ϯ));}}if(ŧ(ӌ)&&ŧ(Ӎ)){ō=ѻ[27];if(É(ō)){ϗ=ō;while(!ג(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(Ϭ));}}if(ŧ(Ҿ)&&
  206. ŧ(Ӎ)){ō=ѻ[36];if(É(ō)){ϗ=ō;while(!հ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(щ));}}if(ћ>0&&ŧ(ҵ)){ō=ѻ[44];if(É(ō)){ϗ=ō;while(!Վ(ō))
  207. yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(Ҥ));}}if(й.Count>0&&ŧ(Ӆ)){ō=ѻ[12];if(É(ō)){ϗ=ō;while(!Ӣ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ϴ));}}if(ŧ
  208. (Ӌ)){ō=ѻ[13];if(É(ō)){ϗ=ō;if(Ũ(ҩ)>0&&Ϧ.TotalMilliseconds<=0.0)ю=Ѡ;else ю=џ;while(!ӟ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ϳ));if
  209. (ю)Ϧ=Ð(Ũ(ҩ));}}if(ŧ(ӈ)){ō=ѻ[9];if(É(ō)){ϗ=ō;while(!ӷ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ϲ));}}ō=ѻ[24];if(É(ō)){if(п.Count>1&&
  210. ŧ(ӄ)){ϗ="Spreading Refineries";while(!ӭ(п,ō))yield return Ѡ;}if(р.Count>1&&ŧ(Ӄ)){ϗ="Spreading Reactors";while(!ӭ(р,ō))
  211. yield return Ѡ;}if(ф.Count>1&&ŧ(ӂ)){ϗ="Spreading Weapons";while(!ӭ(ф,ō))yield return Ѡ;}if(ц.Count>1&&ŧ(Ӂ)){ϗ=
  212. "Spreading O2/H2 Gens";while(!ӭ(ц,ō))yield return Ѡ;}if(х.Count>1&&ŧ(Ӏ)){ϗ="Spreading Gravel Sifters";while(!ӭ(х,ō))yield return Ѡ;}if(с.Count
  213. >1&&ŧ(ҿ)){ϗ="Spreading Parachutes";while(!ӭ(с,ō))yield return Ѡ;}ɘ();Ϥ[ō]=Ð(Ũ(ϱ));}if(Ҋ&&ŧ(һ)){ō=ѻ[38];if(É(ō)){ϗ=ō;while
  214. (!խ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ҭ));}}if(ш.Count>1&&ŧ(Һ)){ō=ѻ[41];if(É(ō)){ϗ=ō;while(!ս(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ
  215. (ҫ));}}if(м.Count>0&&ŧ(ҹ)){ō=ѻ[43];if(É(ō)){ϗ=ō;while(!Ϊ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(Ҫ));}}if(л.Count>0&&ŧ(Ҹ)){ō=ѻ[45]
  216. ;if(É(ō)){ϗ=ō;while(!Ր(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(Ҩ));}}if(ш.Count>0&&ŧ(ҷ)){ō=ѻ[48];if(É(ō)){ϗ=ō;while(!ο(ō))yield
  217. return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ҧ));}}if(ŧ(Ҷ)){ō=ѻ[49];if(É(ō)){ϗ=ō;while(!ρ(ō))yield return Ѡ;ɘ();Ϥ[ō]=Ð(Ũ(ҥ));}}if(Ϗ==-1)Ϗ=ˬ;else Ϗ=
  218. Math.Min(Ϗ,ˬ);if(ʰ==-1)ʰ=ˬ;else ʰ=Math.Max(ʰ,ˬ);ˬ=0;А.Add(Ģ);yield return Ѡ;}}void ա(string Ģ){if(!Ƒ(Ģ)){ȿ(ՙ(Ģ),Ģ);if(Ĥ())
  219. return;}Ħ(Ģ,!Ҍ&&!я);}IEnumerator<bool>ՙ(string Ģ){while(Ѡ){while(Ҍ)yield return Ѡ;foreach(long P in к){if(Ĥ())yield return Ѡ;
  220. for(int Ֆ=0;Ֆ<Й[P].ț.Count;Ֆ++){while(!Ļ(Й[P].ț.Values[Ֆ])){yield return Ѡ;if(Ҍ)break;}if(Ҍ)break;}if(Ҍ)break;}А.Add(Ģ);
  221. yield return џ;}}bool Օ(ref double Ք,List<long>ә){string Ģ=ѻ[6];if(!Ƒ(Ģ)){ȿ(Փ(ә),Ģ);if(Ĥ())return џ;}bool ζ=Ħ(Ģ);if(ζ)Ք=ѵ;
  222. return ζ;}IEnumerator<bool>Փ(List<long>ә){double ɒ=0,ǿ=0;IMyInventory Σ;foreach(long P in ә){if(Ĥ())yield return Ѡ;if(!o(P))
  223. continue;Σ=Й[P].C.GetInventory(0);ɒ+=(double)Σ.MaxVolume;ǿ+=(double)Σ.CurrentVolume;}ѵ=ǿ/ɒ;yield return џ;}bool Ի(List<long>ә,
  224. bool Թ){string Ģ=ѻ[37];if(!Ƒ(Ģ)){ȿ(Ժ(ә,Թ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ժ(List<long>ә,bool Թ){for(int Ç=
  225. 0;Ç<ә.Count;Ç+=0){if(Ĥ())yield return Ѡ;if(!Ш.Add(ә[Ç]))ә.RemoveAt(Ç);else Ç++;}Ш.Clear();if(Թ&&Ҋ){List<long>Ը=new List<
  226. long>(ә);IOrderedEnumerable<long>Է=Ը.OrderByDescending(Ĩ=>Й[Ĩ].ȱ);ә.Clear();foreach(long P in Է){if(Ĥ())yield return Ѡ;ә.Add
  227. (P);}}yield return џ;}bool Զ(Ǔ Ŵ){string Ģ=ѻ[29];if(!Ƒ(Ģ)){ȿ(Ե(Ŵ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ե(Ǔ Ŵ
  228. ){List<ȭ>ɤ=ƚ();for(int Ç=0;Ç<ɤ.Count;Ç++){if(Ĥ())yield return Ѡ;ɤ[Ç].Ƿ=Ŵ.ǘ(ɤ[Ç].A,ɤ[Ç].D);}yield return џ;}bool Դ(){
  229. string Ģ=ѻ[30];if(!ѐ){if(Ƒ(Ģ))ʘ(Ģ);return Ѡ;}ϗ=Ģ;if(!Ƒ(Ģ)){ɗ("Saving Data");ȿ(Գ(),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator
  230. <bool>Գ(){StringBuilder Æ=new StringBuilder();string Բ;int Ա;SortedList<string,SortedList<string,ȭ>>ԧ=new SortedList<
  231. string,SortedList<string,ȭ>>();foreach(KeyValuePair<string,SortedList<string,ȭ>>ƙ in Н){if(Ĥ())yield return Ѡ;Ա=0;foreach(
  232. KeyValuePair<string,ȭ>ԑ in ƙ.Value){if(Ĥ())yield return Ѡ;Բ=ԑ.Value.ĕ;if(!ԧ.ContainsKey(Բ))ԧ[Բ]=new SortedList<string,ȭ>();if(!ԧ[Բ].
  233. ContainsKey(ԑ.Value.Ȭ))ԧ[Բ][ԑ.Value.Ȭ]=ԑ.Value;else{Ա++;ԧ[Բ][$"{ԑ.Value.Ȭ} {Ա}"]=ԑ.Value;}}}foreach(KeyValuePair<string,SortedList<
  234. string,ȭ>>ƙ in ԧ){if(Ĥ())yield return Ѡ;ɠ(ref Æ,$"Items - {Ƙ(ƙ.Key)}");foreach(KeyValuePair<string,ȭ>ԑ in ƙ.Value){if(Ĥ())
  235. yield return Ѡ;h(ref Æ,ԑ.Value);Æ.AppendLine();}}ɠ(ref Æ,"Item Groups");foreach(KeyValuePair<string,Ǔ>Ĺ in О){if(Ĥ())yield
  236. return Ѡ;Æ.Append($"group={Ĺ.Key}=");while(!ӻ(Æ,Ĺ.Value,џ))yield return Ѡ;}if(!э){foreach(KeyValuePair<string,SortedList<
  237. string,bool>>ƙ in С){if(Ĥ())yield return Ѡ;ɠ(ref Æ,$"Switches - {ƙ.Key}");foreach(KeyValuePair<string,bool>ԑ in ƙ.Value){if(Ĥ(
  238. ))yield return Ѡ;Æ.AppendLine($"{ԑ.Key}={ԑ.Value}");}}foreach(KeyValuePair<string,SortedList<string,double>>ƙ in Т){if(Ĥ(
  239. ))yield return Ѡ;ɠ(ref Æ,$"Numbers - {ƙ.Key}");foreach(KeyValuePair<string,double>ԑ in ƙ.Value){if(Ĥ())yield return Ѡ;Æ.
  240. AppendLine($"{ԑ.Key}={ԑ.Value}");}}foreach(KeyValuePair<string,int>Ĺ in Р){if(Ĥ())yield return Ѡ;Æ.AppendLine($"{Ĺ.Key}={Ĺ.Value}"
  241. );}foreach(KeyValuePair<string,SortedList<string,string>>ƙ in Ц){if(Ĥ())yield return Ѡ;ɠ(ref Æ,$"Text - {ƙ.Key}");foreach
  242. (KeyValuePair<string,string>ԑ in ƙ.Value){if(Ĥ())yield return Ѡ;Æ.AppendLine($"{ԑ.Key}={ԑ.Value}");}}ɠ(ref Æ,"Lists");
  243. foreach(KeyValuePair<string,List<string>>Ĺ in П){if(Ĥ())yield return Ѡ;Æ.Append($"{Ĺ.Key}=[");for(int Ç=0;Ç<Ĺ.Value.Count;Ç++){
  244. if(Ç>0){Æ.Append("|");if(Ĥ())yield return Ѡ;}Æ.Append(Ĺ.Value[Ç]);}Æ.AppendLine("]");Æ.AppendLine();}Æ.AppendLine();Æ.
  245. AppendLine();Æ.AppendLine($"script={ϟ}");if(!Ѿ)Æ.AppendLine($"version={ѷ}");else Æ.AppendLine("version=-1");}Me.CustomData=Æ.
  246. ToString().Trim();Ƽ=Me.CustomData;Ѧ=Ѡ;ъ=Ѡ;ѐ=џ;ɗ("Save Data Complete");yield return џ;}bool Յ(){string Ģ=ѻ[42];if(!я){if(Ƒ(Ģ))ʘ(Ģ
  247. );return Ѡ;}ϗ=Ģ;if(!Ƒ(Ģ)){ɇ();ɗ("Loading Data");ȿ(Մ(),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Մ(){if(Me.
  248. CustomData.Length>0){Ѧ=џ;ъ=џ;ж.Clear();yield return Ѡ;string[]Ճ=Me.CustomData.Split(new[]{"\r\n","\r","\n"},StringSplitOptions.
  249. RemoveEmptyEntries);List<string>Ն=new List<string>();for(int Ç=0;Ç<Ճ.Length;Ç++){if(Ĥ())yield return Ѡ;if(Ճ[Ç].StartsWith("^")&&Ն.Count>0)
  250. Ն[Ն.Count-1]+=$"||{Ճ[Ç].Substring(1).Trim()}";else Ն.Add(Ճ[Ç].Trim());}for(int Ç=0;Ç<Ն.Count;Ç++){if(Ĥ())yield return Ѡ;
  251. while(!ψ(Ն[Ç]))yield return Ѡ;}string Ղ;for(int Ç=0;Ç<П[ѥ].Count;Ç++){if(Ĥ())yield return Ѡ;Ղ=П[ѥ][Ç];if(Ղ.Contains("/"))П[ѥ]
  252. [Ç]=Ղ.Substring(Ղ.IndexOf("/")+1);}if(!ъ||!Ѧ)ѐ=Ѡ;}else ѐ=Ѡ;if(Ĥ())yield return Ѡ;Ί();if(Ĥ())yield return Ѡ;ʯ();if(Ĥ())
  253. yield return Ѡ;Ƽ=Me.CustomData;ɗ("Load Data Complete");я=џ;yield return џ;}bool Ձ(string Ģ){if(!Ƒ(Ģ)){ȿ(Հ(Ģ),Ģ);if(Ĥ())return
  254. џ;}return Ħ(Ģ);}IEnumerator<bool>Հ(string Ģ){double Կ;while(Ѡ){foreach(KeyValuePair<string,Ƴ>Ĺ in И){if(Ĥ())yield return
  255. Ѡ;Կ=Ï(Ĺ.Value);if(Կ>0){while(!ֆ(Ĺ.Value,Կ,ш))yield return Ѡ;}}int Ծ=Р[ґ];if(Ծ>0){Ƴ Î=new Ƴ{Ë=ϖ};while(!ֆ(Î,Ծ,ш,ў,џ))yield
  256. return Ѡ;}А.Add(Ģ);yield return џ;}}bool Խ(string Ģ){if(!Ƒ(Ģ)){ȿ(Լ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Լ(
  257. string Ģ){double Կ;while(Ѡ){foreach(KeyValuePair<string,Ƴ>Ĺ in И){if(Ĥ())yield return Ѡ;Կ=Ï(Ĺ.Value,Ѡ);if(Կ>0){while(!ֆ(Ĺ.
  258. Value,Կ,ш,ѝ))yield return Ѡ;}}А.Add(Ģ);yield return џ;}}bool ֆ(Ƴ Î,double M,List<long>փ,MyAssemblerMode Ñ=ў,bool õ=Ѡ){string
  259. Ģ=ѻ[26];if(!Ƒ(Ģ)){ȿ(օ(Î,M,փ,Ñ,õ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>օ(Ƴ Î,double ք,List<long>փ,
  260. MyAssemblerMode Ñ,bool õ){double M=ք,K=1;string ւ;if(Ñ==ѝ){K=Î.K;M=Math.Floor(ք/K);}MyDefinitionId Ë=MyDefinitionId.Parse(Õ(Î));
  261. IMyTerminalBlock C;Л.Clear();foreach(long P in փ){if(Ĥ())yield return Ѡ;if(!o(P))continue;if(Ò(Й[P],Ë,Ñ)){C=Й[P].C;ւ=Ɠ(C);if(!Л.
  262. ContainsKey(ւ))Л[ւ]=new List<Ʈ>();Л[ւ].Add(new Ʈ{P=P,ƭ=((IMyAssembler)C).IsQueueEmpty,Ƭ=Й[P].ȴ});}}List<long>ә=ö();foreach(
  263. KeyValuePair<string,List<Ʈ>>ƙ in Л){if(Ĥ())yield return Ѡ;foreach(Ʈ ց in ƙ.Value){if(Ĥ())yield return Ѡ;if(!ց.Ƭ||Л.Count==1){if(Ñ==ѝ
  264. &&ˣ.ContainsKey(ƙ.Key)&&ә.Count>0)continue;if(ց.ƭ)ә.Insert(0,ց.P);else ә.Add(ց.P);}}}Л.Clear();if(ә.Count>0){int Ӗ,ǽ,ր;Ӗ=
  265. Math.DivRem((int)M,ә.Count,out ǽ);if(Î.Ë==ϖ){ǽ=0;Ӗ=(int)M;}for(int Ç=0;Ç<ә.Count&&Ç<M;Ç++){ր=Ӗ;if(Ç<ǽ)ր++;if(ր>0){while(!տ(Ë
  266. ,ր*K,Й[ә[Ç]],Ñ,õ))yield return Ѡ;}}}yield return џ;}bool տ(MyDefinitionId Ë,double M,ȝ ª,MyAssemblerMode Ñ,bool õ=Ѡ){
  267. string Ģ=ѻ[33];if(!Ƒ(Ģ)){ȿ(ח(Ë,M,ª,Ñ,õ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ח(MyDefinitionId Ë,double M,ȝ ª,
  268. MyAssemblerMode Ñ,bool õ){double ր=Math.Floor(M);bool ז;IMyAssembler S=(IMyAssembler)ª.C;S.Mode=Ñ;if(S.Mode!=Ñ)S.Mode=Ñ;if(S.Mode==Ñ){
  269. if(S.IsQueueEmpty)S.AddQueueItem(Ë,ր);else{ʼ.Clear();bool ו=џ;double ה=0,ד=0;if(Ñ==ў)ה=Ì(Ë);S.GetQueue(ʼ);ז=џ;for(int Ç=0;
  270. !ז&&Ç<ʼ.Count;Ç++){if(Ĥ())yield return Ѡ;if(ƒ(ʼ[Ç])==Ë.SubtypeName){ז=Ѡ;if(Ë.SubtypeName==ϖ)ր=Math.Floor(ր-(double)ʼ[Ç].
  271. Amount);}}if(ր>0&&(ז||(Ñ==ў&&!ª.ȷ))){for(int Ç=0;Ç<ʼ.Count;Ç++){if(Ĥ())yield return Ѡ;if(!ז&&Ñ==ў)ד=Ì(ʼ[Ç].BlueprintId);if((!ז
  272. &&ה<=ד)||ƒ(ʼ[Ç])==Ë.SubtypeName){S.InsertQueueItem(Ç,Ë,ր);ו=Ѡ;break;}}}if(!ו&&ր>0)S.AddQueueItem(Ë,ր);}if(õ)Ƚ(Ë.
  273. SubtypeName,Ñ==ў,ր,Ѡ);}yield return џ;}bool ג(string Ģ){if(!Ƒ(Ģ)){ȿ(ב(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ב(string
  274. Ģ){ȭ Z;double ծ;while(Ѡ){foreach(KeyValuePair<string,Ƴ>Ĺ in И){if(Ĥ())yield return Ѡ;if(n(out Z,
  275. $"{Ĺ.Value.A}/{Ĺ.Value.D}")){ծ=Math.Floor(Z.ǭ);if(ծ>0){while(!א(Ĺ.Value,ծ))yield return Ѡ;}}}А.Add(Ģ);yield return џ;}}bool א(Ƴ Î,double M,
  276. MyAssemblerMode Ñ=ў){string Ģ=ѻ[35];if(!Ƒ(Ģ)){ȿ(և(Î,M,Ñ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>և(Ƴ Î,double M,
  277. MyAssemblerMode Ñ){double ջ,ձ=M;ʻ.Clear();IMyAssembler S;foreach(long P in ш){if(ձ<=0.0)break;if(Ĥ())yield return Ѡ;if(!o(P))continue;S
  278. =(IMyAssembler)Й[P].C;if(S.Mode==Ñ&&!S.IsQueueEmpty){ʻ.Clear();S.GetQueue(ʻ);for(int Ĩ=ʻ.Count-1;Ĩ>=0&&ձ>0;Ĩ--){if(Ĥ())
  279. yield return Ѡ;if(ƒ(ʻ[Ĩ])==Î.Ë){ջ=(double)ʻ[Ĩ].Amount;if(ջ>ձ)ջ=ձ;S.RemoveQueueItem(Ĩ,(MyFixedPoint)ջ);Ƚ(Î.Ë,Ñ==ў,-ջ,Ѡ);ձ-=ջ;}
  280. }}}yield return џ;}bool հ(string Ģ){if(!Ƒ(Ģ)){ȿ(կ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>կ(string Ģ){ȭ Z;
  281. double ծ;while(Ѡ){foreach(KeyValuePair<string,Ƴ>Ĺ in И){if(Ĥ())yield return Ѡ;if(n(out Z,$"{Ĺ.Value.A}/{Ĺ.Value.D}")){ծ=Math.
  282. Floor(Z.Ǭ);if(ծ>0){while(!א(Ĺ.Value,ծ,ѝ))yield return Ѡ;}}}А.Add(Ģ);yield return џ;}}bool խ(string Ģ){if(!Ƒ(Ģ)){ȿ(լ(Ģ),Ģ);if(
  283. Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>լ(string Ģ){while(Ѡ){foreach(KeyValuePair<string,List<long>>Ĺ in М){if(Ĥ())
  284. yield return Ѡ;if(Ĺ.Value.Count>1&&В.Contains(Ĺ.Key))while(!ի(Ĺ.Value))yield return Ѡ;}А.Add(Ģ);yield return џ;}}bool ի(List<
  285. long>ә){string Ģ=ѻ[39];if(!Ƒ(Ģ)){ȿ(ժ(ә),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ժ(List<long>ә){int թ=0;while(թ<ә.
  286. Count){if(Ĥ())yield return Ѡ;if(Q(ә[թ])>=0.985)թ++;else break;}for(int Ç=թ+1;Ç<ә.Count;Ç++){if(Ĥ())yield return Ѡ;if(!o(ә[Ç])
  287. )continue;if(Q(ә[թ])>=0.985)թ++;if(Ç>թ){ʽ.Clear();try{Ε=Й[ә[Ç]];}catch{continue;}Ε.C.GetInventory(0).GetItems(ʽ);for(int
  288. Ĩ=0;Ĩ<ʽ.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(Ε.Ȳ.ǘ(ʽ[Ĩ])<=0.0){while(!ӝ(ʽ[Ĩ],ә[Ç],0,-1,Ç,թ))yield return Ѡ;}}}}yield
  289. return џ;}bool ը(string Ģ){if(!Ƒ(Ģ)){ȿ(է(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>է(string Ģ){IMyAssembler S;int ղ
  290. ;double վ,Ռ=0,Ջ=0;ȝ ª;while(Ѡ){Я.Clear();ʺ.Clear();foreach(long P in ш){if(Ĥ())yield return Ѡ;ª=Й[P];ʺ.Clear();if(!o(P)||
  291. ª.ȷ)continue;S=(IMyAssembler)ª.C;if(!S.IsQueueEmpty&&S.Enabled&&S.Mode==ў){S.GetQueue(ʺ);if(ʺ.Count>1){Я.Clear();for(int
  292. Ĩ=0;Ĩ<ʺ.Count;Ĩ++){if(Ĥ())yield return Ѡ;ղ=(int)ʺ[Ĩ].Amount;if(Ĩ==0&&S.CurrentProgress>=0.1f){if(ղ>10)ղ-=3;else ղ=0;}if(ղ
  293. >0){վ=Ì(ʺ[Ĩ].BlueprintId);if(Ĩ==0)Ռ=վ;else Ռ=Math.Min(Ռ,վ);if(Ĩ==0)Ջ=վ;else Ջ=Math.Max(Ջ,վ);Я.Add(new ɼ{M=վ,ǖ=ղ,ō=ƒ(ʺ[Ĩ])
  294. });}}if(Ռ==Ջ)continue;Я=Я.OrderBy(Ĩ=>Ĩ.M).ToList();for(int Ӿ=0;Ӿ<Я.Count;Ӿ++){if(Ĥ())yield return Ѡ;for(int Ž=0;Ž<ʺ.Count
  295. ;Ž++){if(Ĥ())yield return Ѡ;if(ƒ(ʺ[Ž])==Я[Ӿ].ō){if(Ž!=Ӿ)S.MoveQueueItemRequest(ʺ[Ž].ItemId,Ӿ);continue;}}}}}}А.Add(Ģ);
  296. yield return џ;}}bool ս(string Ģ){if(!Ƒ(Ģ)){ȿ(ռ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ռ(string Ģ){string ō;
  297. IMyAssembler S;double M,պ;int չ,ո;List<long>շ=ö(),ն=ö();while(Ѡ){շ.Clear();ն.Clear();З.Clear();Ж.Clear();ʹ.Clear();bool յ=џ,ń,մ,ճ;
  298. foreach(long P in ш){if(Ĥ())yield return Ѡ;if(!o(P))continue;S=(IMyAssembler)Й[P].C;if(S.Enabled){if(!S.IsQueueEmpty)յ=Ѡ;if(S.
  299. Mode==ў||S.IsQueueEmpty)շ.Add(P);else ն.Add(P);}}if(յ&&(շ.Count>1||ն.Count>1)){ո=0;foreach(long P in ш){if(Ĥ())yield return
  300. Ѡ;if(!o(P)||Й[P].ȶ)continue;ʹ.Clear();S=(IMyAssembler)Й[P].C;S.GetQueue(ʹ);ń=S.Mode==ў;if(ˣ.ContainsKey(Ɠ(S)))պ=ˣ[Ɠ(S)];
  301. else պ=0;մ=!ń&&ո<պ&&ո<Math.Ceiling(ш.Count/2.0);for(int Ĩ=ʹ.Count-1;Ĩ>=0;Ĩ--){if(Ĥ())yield return Ѡ;M=(double)ʹ[Ĩ].Amount;if
  302. (ʹ.Count>1&&Ĩ==0&&M<=50&&!մ)break;ō=ƒ(ʹ[Ĩ]);if(M>1||Ĩ>0){if(!մ){M=Math.Ceiling(M*0.9);if(M==(double)ʹ[Ĩ].Amount&&Ĩ==0)M-=
  303. 1;}if(M>0){չ=0;foreach(long Ǖ in ш){if(Ĥ())yield return Ѡ;if(Ò(Й[Ǖ],ʹ[Ĩ].BlueprintId,S.Mode))չ++;}if(չ>1){ճ=Ѡ;if(ń){if(!З
  304. .ContainsKey(ō))З[ō]=new Ƴ{M=M,Ë=ō};else З[ō].M+=M;}else{if(Ɖ(ō)==1){if(!Ж.ContainsKey(ō))Ж[ō]=new Ƴ{M=M,Ë=ō};else Ж[ō].M
  305. +=M;}else ճ=џ;}if(ճ){try{S.RemoveQueueItem(Ĩ,M);}catch{}}}}}}ո++;}foreach(KeyValuePair<string,Ƴ>Ĺ in З){if(Ĥ())yield
  306. return Ѡ;while(!ֆ(Ĺ.Value,Ĺ.Value.M,շ,ў,џ))yield return Ѡ;}foreach(KeyValuePair<string,Ƴ>Ĺ in Ж){if(Ĥ())yield return Ѡ;while(!
  307. ֆ(Ĺ.Value,Ĺ.Value.M,ն,ѝ,џ))yield return Ѡ;}}А.Add(Ģ);yield return џ;}}bool ӭ(List<long>ә,string Ģ){if(!Ƒ(Ģ)){ȿ(Ӭ(ә),Ģ);if
  308. (Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӭ(List<long>ә){Ϫ.ǐ();while(!Ӥ(Ϫ,ә))yield return Ѡ;if(Ϫ.nj()>0){while(!ӫ(Ϫ.ǒ,ә
  309. ))yield return Ѡ;}yield return џ;}bool ӫ(SortedList<string,double>Ŵ,List<long>ә){string Ģ=ѻ[25];if(!Ƒ(Ģ)){ȿ(Ӫ(Ŵ,ә),Ģ);if(
  310. Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӫ(SortedList<string,double>Ŵ,List<long>ә){double õ;int ө;IMyTerminalBlock C,Ө
  311. ;string A,D;foreach(long ӧ in ә){foreach(KeyValuePair<string,double>Ĺ in Ŵ){if(Ĥ())yield return Ѡ;õ=0;if(!o(ӧ))continue;C
  312. =Й[ӧ].C;ə(Ĺ.Key,out A,out D);while(!Ӑ(ref õ,A,D,C))yield return Ѡ;ө=0;foreach(long ӥ in ә){if(Ĥ())yield return Ѡ;try{if(ů
  313. (Й[ӥ],A,D))ө++;}catch{}}if(O(õ,Ĺ.Value/ө,ѯ)){ˍ.Clear();C.GetInventory(0).GetItems(ˍ);for(int Ĩ=0;Ĩ<ˍ.Count;Ĩ+=0){if(Ĥ())
  314. yield return Ѡ;if(ˍ[Ĩ].Type.ToString()==Ĺ.Key)Ĩ++;else ˍ.RemoveAt(Ĩ);}if(ˍ.Count>0){double Ӡ=õ-(Ĺ.Value/ә.Count);SortedList<
  315. long,double>Ӧ=new SortedList<long,double>();foreach(long ӥ in ә){if(ӧ!=ӥ){if(Ĥ())yield return Ѡ;if(!o(ӥ))continue;õ=0;Ө=Й[ӥ]
  316. .C;if(!ů(Й[ӥ],A,D))continue;while(!Ӑ(ref õ,A,D,Ө))yield return Ѡ;if(N(õ,Ĺ.Value/ә.Count,ѯ))Ӧ[ӥ]=õ;}}if(Ӧ.Count>0)while(!ӳ
  317. (ˍ[0],C,Ӧ,Ӡ))yield return Ѡ;}}}}yield return џ;}bool Ӥ(Ǔ õ,List<long>ӣ,string A="",string D=""){string Ģ=ѻ[8];if(!Ƒ(Ģ)){ȿ
  318. (Ӯ(õ,ӣ,A,D),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӯ(Ǔ õ,List<long>ӣ,string A,string D){foreach(long P in ӣ){
  319. if(Ĥ())yield return Ѡ;ˌ.Clear();if(!o(P))continue;Й[P].C.GetInventory(0).GetItems(ˌ);for(int Ĩ=0;Ĩ<ˌ.Count;Ĩ++){if(Ĥ())
  320. yield return Ѡ;if((A.Length==0||ˌ[Ĩ].Type.TypeId==A)&&(D.Length==0||ˌ[Ĩ].Type.SubtypeId==D))õ.Ǜ(ˌ[Ĩ]);}}yield return џ;}bool
  321. ӷ(string Ģ){if(!Ƒ(Ģ)){ȿ(Ӷ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӷ(string Ģ){string D;SortedList<long,
  322. double>Ӧ=new SortedList<long,double>();List<long>ӵ=ö();while(Ѡ){foreach(long P in о){if(Ĥ())yield return Ѡ;if(!o(P))continue;ͱ
  323. =Й[P];IMyInventory Σ=ͱ.C.GetInventory(0);if(Σ.ItemCount==0)continue;ˋ.Clear();Σ.GetItems(ˋ);for(int Ĩ=0;Ĩ<ˋ.Count;Ĩ++){if
  324. (Ĥ())yield return Ѡ;if(I(ˋ[Ĩ],ͱ)){D=ˋ[Ĩ].Type.SubtypeId;Ӧ.Clear();ӵ.Clear();if(đ(ˋ[Ĩ]))ӵ.AddRange(п);else if(Đ(ˋ[Ĩ]))ӵ.
  325. AddRange(ф);else if(Ē(ˋ[Ĩ])&&D=="Stone")ӵ.AddRange(х);else if(Ď(ˋ[Ĩ])&&D=="Canvas")ӵ.AddRange(с);if(d(ˋ[Ĩ]))ӵ.AddRange(р);if(Ô(ˋ
  326. [Ĩ]))ӵ.AddRange(ц);if(ӵ.Count>0){foreach(long Ǖ in ӵ){if(Ĥ())yield return Ѡ;Ӧ[Ǖ]=-1;}while(!ӳ(ˋ[Ĩ],ͱ.C,Ӧ))yield return Ѡ;
  327. }}}}Ӧ.Clear();А.Add(Ģ);yield return џ;}}bool ӳ(MyInventoryItem F,IMyTerminalBlock C,SortedList<long,double>Ӧ,double Ӳ=-1)
  328. {string Ģ=ѻ[10];if(!Ƒ(Ģ)){ȿ(ӱ(F,C,Ӧ,Ӳ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ӱ(MyInventoryItem F,
  329. IMyTerminalBlock C,SortedList<long,double>ӣ,double Ӱ){IMyTerminalBlock ª;SortedList<long,double>ӯ=new SortedList<long,double>();List<
  330. long>Ӵ=ö();foreach(KeyValuePair<long,double>Ĺ in ӣ)ӯ[Ĺ.Key]=Ĺ.Value;double ϋ,ӗ,Ӗ,ӕ,Ɍ,ѯ,Ӕ,ū,ӓ=0;for(int Ç=0;Ç<ӯ.Count;Ç+=0){
  331. if(Ĥ())yield return Ѡ;if(o(ӯ.Keys[Ç])&&Q(ӯ.Keys[Ç])<0.99&&ů(Й[ӯ.Keys[Ç]],F)){Ӵ.Add(ӯ.Keys[Ç]);Ç++;}else ӯ.Remove(ӯ.Keys[Ç]
  332. );}if(ӯ.Count>0){ϩ.ǐ();while(!Ӥ(ϩ,Ӵ,F.Type.TypeId,F.Type.SubtypeId))yield return Ѡ;Ӵ.Clear();ӗ=(double)F.Amount;ѯ=Ũ(Қ);if
  333. (Ӱ>0&&ӗ>Ӱ)ӗ=Ӱ;bool Ǡ=X(F);ϩ.Ǜ(F.Type.TypeId,F.Type.SubtypeId,ӗ);if(ϩ.nj()>0&&ӯ.Count>0){Ӕ=ϩ.ǘ(F)/ӯ.Count;for(int Ç=0;Ç<ӯ.
  334. Count;Ç+=0){if(Ĥ())yield return Ѡ;ϋ=ӯ.Values[Ç];if(ϋ==-1){ϋ=0;ª=Й[ӯ.Keys[Ç]].C;while(!Ӑ(ref ϋ,F,ª))yield return Ѡ;ӯ[ӯ.Keys[Ç]
  335. ]=ϋ;}if(ϋ>Ӕ+(Ӕ*ѯ))ӯ.RemoveAt(Ç);else Ç++;}}if(ӯ.Count>0){long ō;bool Ӓ;int ӑ=0;foreach(KeyValuePair<long,double>Ĺ in ӯ){Ɍ
  336. =E(F,Й[Ĺ.Key].C);ū=Й[Ĺ.Key].ȳ.ǘ(out Ӓ,F);if(Ӓ)Ɍ=ū;Ӓ=Ɍ<double.MaxValue;Ӗ=ӗ/((double)ӯ.Count-ӑ);ϋ=Ĺ.Value;ō=Ĺ.Key;if(Ĥ())
  337. yield return Ѡ;if(ϋ==-1){ϋ=0;ª=Й[Ĺ.Key].C;if(Ӓ){while(!Ӑ(ref ϋ,F,ª))yield return Ѡ;}}if(Ӗ+ϋ>Ɍ)Ӗ=Ɍ-ϋ;if(!Ǡ){ӓ+=Ӗ-Math.Floor(Ӗ)
  338. ;Ӗ=Math.Floor(Ӗ);if(ӓ>=1&&(ϋ+Ӗ+1<=Ɍ)){Ӗ++;ӓ--;}}if(ӑ+1==ӯ.Count&&Ӗ+ӓ<=Ɍ)Ӗ+=ӓ;ӕ=Ӗ;while(!η(ref Ӗ,C.GetInventory(0),Й[Ĺ.Key
  339. ],F))yield return Ѡ;if(Ӗ>0)ӗ-=ӕ-Ӗ;ӑ++;}}}yield return џ;}bool Ӑ(ref double M,MyInventoryItem F,IMyTerminalBlock C){return
  340. Ӑ(ref M,F.Type.TypeId,F.Type.SubtypeId,C);}bool Ӑ(ref double M,string m,string D,IMyTerminalBlock C){string Ģ=ѻ[11];if(!Ƒ
  341. (Ģ)){ȿ(ӏ(m,D,C),Ģ);if(Ĥ())return џ;}if(Ħ(Ģ)){M=Ѹ;Ѹ=0;return Ѡ;}return џ;}IEnumerator<bool>ӏ(string m,string D,
  342. IMyTerminalBlock C){ˊ.Clear();C.GetInventory(0).GetItems(ˊ);for(int Ç=0;Ç<ˊ.Count;Ç++){if(Ĥ())yield return Ѡ;if(ˊ[Ç].Type.TypeId==m&&ˊ[Ç
  343. ].Type.SubtypeId==D)Ѹ+=(double)ˊ[Ç].Amount;}yield return џ;}bool Ӣ(string Ģ){if(!Ƒ(Ģ)){ȿ(ӡ(Ģ),Ģ);if(Ĥ())return џ;}return
  344. Ħ(Ģ);}IEnumerator<bool>ӡ(string Ģ){while(Ѡ){double Ű=0,Ӡ;foreach(long P in й){if(Ĥ())yield return Ѡ;if(!o(P))continue;Μ=Й
  345. [P];ˉ.Clear();Μ.C.GetInventory(0).GetItems(ˉ);if(Ĥ())yield return Ѡ;for(int Ĩ=0;Ĩ<ˉ.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(Ů
  346. (Μ,ref Ű,ˉ[Ĩ])){Ӡ=(double)ˉ[Ĩ].Amount-Ű;if(Ӡ>0)while(!ӝ(ˉ[Ĩ],P,0,Ӡ))yield return Ѡ;}}}А.Add(Ģ);yield return џ;}}bool ӟ(
  347. string Ģ){if(!Ƒ(Ģ)){ȿ(Ӟ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӟ(string Ģ){IMyTerminalBlock C;while(Ѡ){foreach(
  348. long P in н){if(Ĥ())yield return Ѡ;if(!o(P))continue;Κ=Й[P];C=Κ.C;if(Κ.Ⱥ||(!Κ.Ǐ&&W(Κ,0))){ˈ.Clear();C.GetInventory(0).
  349. GetItems(ˈ);for(int Ĩ=0;Ĩ<ˈ.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(Κ.Ⱥ||W(ˈ[Ĩ],Κ))while(!ӝ(ˈ[Ĩ],P,0))yield return Ѡ;}}if(C.
  350. InventoryCount>1&&(Κ.ȹ||(!Κ.Ǐ&&W(Κ,1)))){ˈ.Clear();C.GetInventory(1).GetItems(ˈ);for(int Ĩ=0;Ĩ<ˈ.Count;Ĩ++){if(Ĥ())yield return Ѡ;if(Κ
  351. .ȹ||W(ˈ[Ĩ],Κ,1))while(!ӝ(ˈ[Ĩ],P,1))yield return Ѡ;}}}А.Add(Ģ);yield return џ;}}bool ӝ(MyInventoryItem F,long Ӛ,int U,
  352. double ɒ=-1,int Ә=-1,int Ӝ=0){string Ģ=ѻ[14];if(!Ƒ(Ģ)){ȿ(ӛ(F,Ӛ,U,ɒ,Ә,Ӝ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ӛ(
  353. MyInventoryItem F,long Ӛ,int U,double ɒ,int Ә,int Ӝ){List<long>Ӵ=ö();string m=F.Type.ToString(),A;Δ=Й[Ӛ];IMyTerminalBlock Ө,ԕ=Δ.C;A=F.
  354. Type.TypeId;δ=(double)F.Amount;if(ɒ>0&&δ>ɒ)δ=ɒ;if(δ>(double)F.Amount)δ=(double)F.Amount;Ѵ=δ;ˎ=ԕ.GetInventory(U);bool Ԕ=ю&&ē(
  355. F)&&!(ԕ is IMyGasGenerator||ԕ is IMyGasTank);if(Ѵ>0){if(!Ԕ&&Д.ContainsKey(m)&&М.ContainsKey(Д[m]))Ӵ.AddRange(М[Д[m]]);if(
  356. Ӵ.Count==0){if(Ď(F)){if(М.ContainsKey(ϛ))Ӵ.AddRange(М[ϛ]);}else if(č(F)){if(Ԕ){if(F.Type.TypeId==І)Ӵ.AddRange(т);else if(
  357. F.Type.TypeId==Ї)Ӵ.AddRange(у);Ӵ.AddRange(ц);}else if(М.ContainsKey(ϙ))Ӵ.AddRange(М[ϙ]);}else if(Đ(F)){if(М.ContainsKey(Ϛ
  358. ))Ӵ.AddRange(М[Ϛ]);}else if(Ē(F)){if(М.ContainsKey(ϝ))Ӵ.AddRange(М[ϝ]);}else if(đ(F)){if(М.ContainsKey(Ϝ))Ӵ.AddRange(М[Ϝ]
  359. );}}if(!Ԕ&&Ӵ.Count==0)Ӵ.AddRange(о);for(int Ç=Ӝ;Ç<Ӵ.Count&&(Ә<=0||Ç<Ә);Ç++){if(Ĥ())yield return Ѡ;if(!o(Ӵ[Ç])||Q(Ӵ[Ç])>=
  360. 0.985)continue;Ө=Й[Ӵ[Ç]].C;if(Δ.C!=Ө){while(!η(ref δ,ˎ,Й[Ӵ[Ç]],F))yield return Ѡ;if(δ<=0)break;}}}yield return џ;}bool ԓ(
  361. string Ģ){if(!Ƒ(Ģ)){ȿ(Ԓ(Ģ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ԓ(string Ģ){IMyAssembler S;bool ɓ;List<Ƴ>Ԏ=new
  362. List<Ƴ>();Ƴ Î;while(Ѡ){ˮ.Clear();Ԏ.Clear();foreach(long P in ш){if(Ĥ())yield return Ѡ;if(!o(P))continue;ˮ.Clear();Ζ=Й[P];S=(
  363. IMyAssembler)Ζ.C;S.GetQueue(ˮ);if(ˮ.Count==0)S.Mode=ў;ɓ=((IMyAssembler)Ζ.C).Mode==ў;for(int Ĩ=0;Ĩ<ˮ.Count;Ĩ++){if(Ĥ())yield return Ѡ
  364. ;Ƚ(ˮ[Ĩ],ɓ);}}foreach(KeyValuePair<string,SortedList<string,ȭ>>ƙ in Н){if(Ĥ())yield return Ѡ;foreach(KeyValuePair<string,ȭ
  365. >ԑ in ƙ.Value){if(Ĥ())yield return Ѡ;ԑ.Value.Ȑ();ԑ.Value.Ǿ(Ѯ);Î=new Ƴ{Ë=ԑ.Value.Ë,M=ԑ.Value.Ǫ};if(Î.M>=1)Ԏ.Add(Î.ǔ());}}ˣ
  366. .Clear();while(!Ԑ(Ԏ))yield return Ѡ;А.Add(Ģ);yield return џ;}}bool Ԑ(List<Ƴ>Ԏ){string Ģ=ѻ[52];if(!Ƒ(Ģ)){ȿ(ԏ(Ԏ),Ģ);if(Ĥ())
  367. return џ;}return Ħ(Ģ);}IEnumerator<bool>ԏ(List<Ƴ>Ԏ){MyDefinitionId Ë;IMyAssembler S;string ō;foreach(long P in ш){if(Ĥ())yield
  368. return Ѡ;if(!o(P))continue;S=(IMyAssembler)Й[P].C;foreach(Ƴ Î in Ԏ){if(Ĥ())yield return Ѡ;Ë=MyDefinitionId.Parse(Õ(Î));if(S.
  369. CanUseBlueprint(Ë)){ō=Ɠ(S);if(ˣ.ContainsKey(ō))ˣ[ō]+=Î.M;else ˣ[ō]=Î.M;}}}yield return џ;}bool Ԗ(string Ģ){if(!Ƒ(Ģ)){ȿ(ԗ(Ģ),Ģ);if(Ĥ())
  370. return џ;}return Ħ(Ģ);}IEnumerator<bool>ԗ(string Ģ){IMyTerminalBlock C;while(Ѡ){ћ=0;foreach(long P in ч){if(Ĥ())yield return Ѡ
  371. ;if(!o(P)||Й[P].ȵ)continue;try{C=Й[P].C;ˇ.Clear();C.GetInventory(0).GetItems(ˇ);}catch{continue;}for(int Ĩ=0;Ĩ<ˇ.Count;Ĩ
  372. ++){if(Ĥ())yield return Ѡ;Ȃ(ˇ[Ĩ]);}if(C.InventoryCount>1){if(Ĥ())yield return Ѡ;ˇ.Clear();C.GetInventory(1).GetItems(ˇ);
  373. for(int Ĩ=0;Ĩ<ˇ.Count;Ĩ++){if(Ĥ())yield return Ѡ;Ȃ(ˇ[Ĩ]);}}}foreach(KeyValuePair<string,SortedList<string,ȭ>>ƙ in Н){if(Ĥ()
  374. )yield return Ѡ;foreach(KeyValuePair<string,ȭ>ԑ in ƙ.Value){ԑ.Value.ȏ(Ѳ,Ҁ&&Ƈ(ԑ.Value.Ë),Ѱ,ѱ,ѳ,ѿ);if(đ(ԑ.Value.A)&&ԑ.Value
  375. .D!="Ice"&&ԑ.Value.ȫ>=0.5&&ԑ.Value.Ǥ)ћ++;}}А.Add(Ģ);yield return џ;}}bool ԥ(string Ģ){if(!Ƒ(Ģ)){ȿ(Ԥ(Ģ),Ģ);if(Ĥ())return џ
  376. ;}return Ħ(Ģ);}IEnumerator<bool>Ԥ(string Ģ){List<IMyBlockGroup>ԣ=new List<IMyBlockGroup>();List<IMyTerminalBlock>Ԣ=new
  377. List<IMyTerminalBlock>();HashSet<IMyCubeGrid>ԡ=new HashSet<IMyCubeGrid>();HashSet<long>Ԧ=new HashSet<long>(),Ԡ=new HashSet<
  378. long>(),ԟ=new HashSet<long>(),Ԟ=new HashSet<long>();long ԝ;IMyTextSurfaceProvider Lj;IMyTerminalBlock Ԝ;ȝ ԛ;bool Ԛ;while(Ѡ){п
  379. .Clear();ш.Clear();р.Clear();ф.Clear();ц.Clear();х.Clear();о.Clear();с.Clear();у.Clear();т.Clear();н.Clear();м.Clear();л.
  380. Clear();к.Clear();ч.Clear();й.Clear();for(int Ç=0;Ç<М.Count;Ç++)М.Values[Ç].Clear();В.Clear();Б.Clear();Ҋ=џ;ˤ=1;bool ԙ=ŧ(ҽ),Ԙ
  381. =ŧ(Ѷ);Ч.GetBlockGroups(ԣ,ż=>Č(ż.Name,$"nds {Ϟ}"));foreach(IMyBlockGroup Ԁ in ԣ){if(Ĥ())yield return Ѡ;Ԁ.GetBlocks(Ԣ);
  382. foreach(IMyTerminalBlock C in Ԣ){if(Ĥ())yield return Ѡ;Ԧ.Add(C.EntityId);}Ԣ.Clear();}ԣ.Clear();Ч.GetBlocksOfType<IMyEntity>(К);
  383. for(int Ç=0;Ç<К.Count;Ç+=0){if(Ĥ())yield return Ѡ;if(!Ə(К[Ç])||!º(К[Ç])||!(К[Ç].InventoryCount>0||К[Ç]is
  384. IMyTextSurfaceProvider||К[Ç]is IMyProgrammableBlock||К[Ç].CustomData.Length>0)||Ԧ.Contains(К[Ç].EntityId))К.RemoveAt(Ç);else Ç++;}foreach(
  385. IMyTerminalBlock C in К){if(Ĥ())yield return Ѡ;Ԡ.Add(C.EntityId);}foreach(IMyTerminalBlock C in К){if(Ĥ())yield return Ѡ;if(!Й.
  386. ContainsKey(C.EntityId))Й[C.EntityId]=new ȝ{C=C,ƪ=this};}К.Clear();foreach(KeyValuePair<long,ȝ>Ĺ in Й){if(Ĥ())yield return Ѡ;while(
  387. !Ԃ(Ĺ.Value))yield return Ѡ;if(Ĺ.Value.ȕ)ԡ.Add(Ĺ.Value.C.CubeGrid);}if(ԙ){Ч.GetBlockGroups(ԣ,ż=>Č(ż.Name,$"nds {ϭ}"));
  388. foreach(IMyBlockGroup Ԁ in ԣ){if(Ĥ())yield return Ѡ;Ԁ.GetBlocks(Ԣ);foreach(IMyTerminalBlock C in Ԣ){if(Ĥ())yield return Ѡ;ԟ.Add
  389. (C.EntityId);}Ԣ.Clear();}ԣ.Clear();}foreach(KeyValuePair<long,ȝ>Ĺ in Й){if(Ĥ())yield return Ѡ;ԝ=Ĺ.Value.C.EntityId;if(!Ԡ.
  390. Contains(ԝ)||Ĺ.Value.ȓ||Ԧ.Contains(ԝ)||(ԙ&&!Ĺ.Value.ȕ&&!ԡ.Contains(Ĺ.Value.C.CubeGrid)&&!ԟ.Contains(ԝ)))Ԟ.Add(Ĺ.Key);}Ԧ.Clear();
  391. Ԡ.Clear();ԡ.Clear();ԟ.Clear();foreach(long P in Ԟ){if(Ĥ())yield return Ѡ;Й.Remove(P);}Ԟ.Clear();for(int Ç=0;Ç<М.Count;Ç+=
  392. 0){if(Ĥ())yield return Ѡ;if(!ж.Contains(М.Keys[Ç]))М.RemoveAt(Ç);else Ç++;}foreach(long P in Й.Keys){if(Ĥ())yield return
  393. Ѡ;ԛ=Й[P];Ԝ=ԛ.C;Ԛ=ԛ.ȱ!=1.0;Ҋ=Ҋ||Ԛ;if(!(Ԝ is IMyTextSurfaceProvider)||Ԝ is IMyShipController){if(!ԛ.Ǐ){if(ԛ.ȗ){х.Add(P);if(
  394. Ԛ)Б.Add("sifters");}else if(Ԝ is IMyAssembler){ш.Add(P);if(Ԛ)Б.Add("assemblers");if(ԛ.Ȝ==null)ԛ.Ȝ=new ʅ{S=(IMyAssembler)Ԝ
  395. };}else if(Ԝ is IMyGasGenerator){ц.Add(P);if(Ԛ)Б.Add("gasgens");}else if(Ԝ is IMyUserControllableGun){ф.Add(P);if(Ԛ)Б.Add
  396. ("guns");}else if(Ԝ is IMyGasTank){if(ƕ(Ɠ(Ԝ),"hydrogen")){у.Add(P);if(Ԛ)Б.Add("htanks");}else{т.Add(P);if(Ԛ)Б.Add(
  397. "otanks");}}else if(Ԝ is IMyParachute){с.Add(P);if(Ԛ)Б.Add("parachutes");}else if(Ԝ is IMyReactor){р.Add(P);if(Ԛ)Б.Add(
  398. "reactors");}else if(Ԝ is IMyRefinery){п.Add(P);if(Ԛ)Б.Add("refineries");}if(ԛ.Ȗ){о.Add(P);if(Ԛ)В.Add("storage");foreach(string ӿ
  399. in ԛ.ș){if(Ĥ())yield return Ѡ;if(ӿ=="all"||ӿ=="*")for(int Ĩ=0;Ĩ<М.Count;Ĩ++){if(Ĥ())yield return Ѡ;М.Values[Ĩ].Add(P);if(Ԛ
  400. )В.Add(М.Keys[Ĩ]);}else if(М.ContainsKey(ӿ)){М[ӿ].Add(P);if(Ԛ)В.Add(ӿ);}}}}if(Ԝ.InventoryCount>0){ч.Add(P);if(Ԛ)Б.Add(
  401. "inventory");if(ԛ.Ȳ.nj()>0){м.Add(P);if(Ԙ)Ϩ.Ǎ(ԛ.Ȳ);if(Ԛ)Б.Add("loadout");}if(ԛ.ȳ.nj()>0){if(Ԛ)Б.Add("limit");й.Add(P);}if((!ԛ.Ǐ||ԛ.Ⱥ
  402. ||ԛ.ȹ)&&!(ԛ.ȼ&&ԛ.Ȼ))for(int Ç=0;Ç<ԛ.C.InventoryCount;Ç++)if(W(ԛ,Ç)){н.Add(P);if(Ԛ)Б.Add("sortable");break;}ɑ(ԛ);}}if(Ԝ is
  403. IMyTextPanel){while(!Ő(ԛ))yield return Ѡ;if(µ(ԛ)){к.Add(P);ʍ(ԛ);}}else if(Ԝ is IMyTextSurfaceProvider){Lj=(IMyTextSurfaceProvider)Ԝ;
  404. for(int Ӿ=0;Ӿ<Lj.SurfaceCount;Ӿ++){if(Ĥ())yield return Ѡ;while(!Ő(ԛ,Ӿ))yield return Ѡ;if(µ(ԛ,Ӿ)){к.Add(P);ʍ(ԛ,Ӿ);}}}if(ԛ.Ț.
  405. Count>0)л.Add(Ԝ.EntityId);}while(!Ի(н,Б.Contains("sortable")))yield return Ѡ;while(!Ի(й,Б.Contains("limit")))yield return Ѡ;
  406. while(!Ի(ч,Б.Contains("inventory")))yield return Ѡ;while(!Ի(м,Б.Contains("loadout")))yield return Ѡ;while(!Ի(х,Б.Contains(
  407. "sifters")))yield return Ѡ;while(!Ի(ш,Б.Contains("assemblers")))yield return Ѡ;while(!Ի(ц,Б.Contains("gasgens")))yield return Ѡ;
  408. while(!Ի(ф,Б.Contains("guns")))yield return Ѡ;while(!Ի(у,Б.Contains("htanks")))yield return Ѡ;while(!Ի(т,Б.Contains("otanks")
  409. ))yield return Ѡ;while(!Ի(с,Б.Contains("parachutes")))yield return Ѡ;while(!Ի(р,Б.Contains("reactors")))yield return Ѡ;
  410. while(!Ի(п,Б.Contains("refineries")))yield return Ѡ;while(!Ի(о,В.Contains("storage")))yield return Ѡ;foreach(KeyValuePair<
  411. string,List<long>>Ĺ in М){if(Ĥ())yield return Ѡ;while(!Ի(Ĺ.Value,В.Contains(Ĺ.Key)))yield return Ѡ;}if(Ԙ&&Ϩ.nj()>0)while(!Զ(Ϩ))
  412. yield return Ѡ;foreach(long P in к){if(Ĥ())yield return Ѡ;foreach(ƫ Ĭ in Й[P].ț.Values){Ĭ.ƥ.Clear();if(Ĭ.Ş){foreach(long ӽ in
  413. к){if(Ĥ())yield return Ѡ;foreach(ƫ Ӽ in Й[ӽ].ț.Values)if(Ӽ.dž==ͺ.ͳ&&ž(Ĭ.ƽ,Ӽ.ņ)&&P!=ӽ||Ĭ.w!=Ӽ.w)Ĭ.ƥ.Add(new Ǻ{P=ӽ,w=Ӽ.w});}
  414. }}}А.Add(Ģ);yield return џ;}}bool ӻ(StringBuilder Æ,Ǔ Ŵ,bool ӹ=Ѡ){if(Ŵ==null||Ŵ.nj()==0)return Ѡ;string Ģ=ѻ[19];if(!Ƒ(Ģ)){
  415. ȿ(Ӻ(Æ,Ŵ,ӹ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ӻ(StringBuilder Æ,Ǔ Ŵ,bool ӹ){SortedList<double,List<string>
  416. >Ӹ=new SortedList<double,List<string>>();int ǃ=0;ȭ F;for(int Ç=0;Ç<Ŵ.nj();Ç++){if(Ĥ())yield return Ѡ;F=Ŵ.Nj(Ç);if(!Ӹ.
  417. ContainsKey(F.ȫ))Ӹ[F.ȫ]=new List<string>();Ӹ[F.ȫ].Add(c(F.A,F.D));}foreach(KeyValuePair<double,List<string>>Ĺ in Ӹ){if(Ĥ())yield
  418. return Ѡ;if(ǃ>0){Æ.Append("|");ǃ=0;}if(ӹ)Æ.Append($"{Ĺ.Key}:");foreach(string m in Ĺ.Value){if(Ĥ())yield return Ѡ;if(ǃ>0)Æ.
  419. Append(":");Æ.Append($"'{m}'");ǃ++;}}yield return џ;}void Ԍ(){ϗ=ѻ[21];if(!Ƒ(ϗ)){ȿ(ԋ(),ϗ);if(Ĥ())return;}ё=Ħ(ϗ);}IEnumerator<
  420. bool>ԋ(){Ɏ("Bulletproof Glass","BulletproofGlass",Ћ,"BulletproofGlass");Ɏ("Canvas","Canvas",Ћ,"Canvas");Ɏ("Computer",
  421. "Computer",Ћ,"ComputerComponent");Ɏ("Construction Comp","Construction",Ћ,"ConstructionComponent");Ɏ("Detector Component",
  422. "Detector",Ћ,"DetectorComponent");Ɏ("Display","Display",Ћ,"Display");if(Ĥ())yield return Ѡ;Ɏ("Explosives","Explosives",Ћ,
  423. "ExplosivesComponent");Ɏ("Girder","Girder",Ћ,"GirderComponent");Ɏ("Gravity Gen. Comp","GravityGenerator",Ћ,"GravityGeneratorComponent");Ɏ(
  424. "Interior Plate","InteriorPlate",Ћ,"InteriorPlate");Ɏ("Large Steel Tube","LargeTube",Ћ,"LargeTube");Ɏ("Medical Component","Medical",Ћ,
  425. "MedicalComponent");yield return Ѡ;Ɏ("Metal Grid","MetalGrid",Ћ,"MetalGrid");Ɏ("Motor","Motor",Ћ,"MotorComponent");Ɏ("Power Cell",
  426. "PowerCell",Ћ,"PowerCell");Ɏ("Radio Comm. Comp","RadioCommunication",Ћ,"RadioCommunicationComponent");Ɏ("Reactor Component",
  427. "Reactor",Ћ,"ReactorComponent");Ɏ("Small Steel Tube","SmallTube",Ћ,"SmallTube");if(Ĥ())yield return Ѡ;Ɏ("Solar Cell","SolarCell",
  428. Ћ,"SolarCell");Ɏ("Steel Plate","SteelPlate",Ћ,"SteelPlate");Ɏ("Superconductor","Superconductor",Ћ,"Superconductor");Ɏ(
  429. "Thruster Component","Thrust",Ћ,"ThrustComponent");Ɏ("Zone Chip","ZoneChip",Ћ,"None",џ);Ɏ("MR-20","AutomaticRifleItem",Ј,"AutomaticRifle");
  430. yield return Ѡ;Ɏ("MR-8P","PreciseAutomaticRifleItem",Ј,"PreciseAutomaticRifle");Ɏ("MR-50A","RapidFireAutomaticRifleItem",Ј,
  431. "RapidFireAutomaticRifle");Ɏ("MR-30E","UltimateAutomaticRifleItem",Ј,"UltimateAutomaticRifle");Ɏ("Welder 1","WelderItem",Ј,"Welder");Ɏ("Welder 2"
  432. ,"Welder2Item",Ј,"Welder2");Ɏ("Welder 3","Welder3Item",Ј,"Welder3");if(Ĥ())yield return Ѡ;Ɏ("Welder 4","Welder4Item",Ј,
  433. "Welder4");Ɏ("Grinder 1","AngleGrinderItem",Ј,"AngleGrinder");Ɏ("Grinder 2","AngleGrinder2Item",Ј,"AngleGrinder2");Ɏ("Grinder 3",
  434. "AngleGrinder3Item",Ј,"AngleGrinder3");Ɏ("Grinder 4","AngleGrinder4Item",Ј,"AngleGrinder4");Ɏ("Drill 1","HandDrillItem",Ј,"HandDrill");
  435. yield return Ѡ;Ɏ("Drill 2","HandDrill2Item",Ј,"HandDrill2");Ɏ("Drill 3","HandDrill3Item",Ј,"HandDrill3");Ɏ("Drill 4",
  436. "HandDrill4Item",Ј,"HandDrill4");Ɏ("Datapad","Datapad",Є,"Datapad",џ);Ɏ("Powerkit","Powerkit",Ѓ,"None",џ);Ɏ("Medkit","Medkit",Ѓ,"None",џ
  437. );if(Ĥ())yield return Ѡ;Ɏ("Clang Cola","ClangCola",Ѓ,"None",џ);Ɏ("Cosmic Coffee","CosmicCoffee",Ѓ,"None",џ);Ɏ(
  438. "SpaceCredit","SpaceCredit",Ђ,"None",џ);Ɏ("Oxygen Bottle","OxygenBottle",І,"OxygenBottle");Ɏ("Hydrogen Bottle","HydrogenBottle",Ї,
  439. "HydrogenBottle");Ɏ("NATO 5.56x45mm","NATO_5p56x45mm",Ѕ,"NATO_5p56x45mmMagazine");yield return Ѡ;Ɏ("NATO 25x184mm","NATO_25x184mm",Ѕ,
  440. "NATO_25x184mmMagazine");Ɏ("Missile 200mm","Missile200mm",Ѕ,"Missile200mm");Ɏ("Cobalt Ore","Cobalt",Њ);Ɏ("Gold Ore","Gold",Њ);Ɏ("Ice","Ice",Њ);
  441. Ɏ("Iron Ore","Iron",Њ);if(Ĥ())yield return Ѡ;Ɏ("Magnesium Ore","Magnesium",Њ);Ɏ("Nickel Ore","Nickel",Њ);Ɏ("Platinum Ore"
  442. ,"Platinum",Њ);Ɏ("Scrap Ore","Scrap",Њ,"",џ);Ɏ("Silicon Ore","Silicon",Њ);Ɏ("Silver Ore","Silver",Њ);yield return Ѡ;Ɏ(
  443. "Stone","Stone",Њ);Ɏ("Uranium Ore","Uranium",Њ);Ɏ("Cobalt Ingot","Cobalt",Љ);Ɏ("Gold Ingot","Gold",Љ);Ɏ("Gravel","Stone",Љ);Ɏ(
  444. "Iron Ingot","Iron",Љ,"",Ѡ,new List<string>(){"Scrap","Stone"});if(Ĥ())yield return Ѡ;Ɏ("Magnesium Powder","Magnesium",Љ);Ɏ(
  445. "Nickel Ingot","Nickel",Љ,"",Ѡ,new List<string>(){"Stone"});Ɏ("Platinum Ingot","Platinum",Љ,"");Ɏ("Silicon Wafer","Silicon",Љ,"",Ѡ,new
  446. List<string>(){"Stone"});Ɏ("Silver Ingot","Silver",Љ);Ɏ("Uranium Ingot","Uranium",Љ);yield return Ѡ;Ɏ("MR-20 Magazine",
  447. "AutomaticRifleGun_Mag_20rd",Ѕ,"AutomaticRifleGun_Mag_20rd");Ɏ("S-10E Magazine","ElitePistolMagazine",Ѕ,"ElitePistolMagazine");Ɏ("S-20A Magazine",
  448. "FullAutoPistolMagazine",Ѕ,"FullAutoPistolMagazine");Ɏ("MR-8P Magazine","PreciseAutomaticRifleGun_Mag_5rd",Ѕ,"PreciseAutomaticRifleGun_Mag_5rd")
  449. ;Ɏ("MR-50A Magazine","RapidFireAutomaticRifleGun_Mag_50rd",Ѕ,"RapidFireAutomaticRifleGun_Mag_50rd");Ɏ("S-10 Magazine",
  450. "SemiAutoPistolMagazine",Ѕ,"SemiAutoPistolMagazine");if(Ĥ())yield return Ѡ;Ɏ("MR-30E Magazine","UltimateAutomaticRifleGun_Mag_30rd",Ѕ,
  451. "UltimateAutomaticRifleGun_Mag_30rd");Ɏ("PRO-1","AdvancedHandHeldLauncherItem",Ј,"AdvancedHandHeldLauncher");Ɏ("RO-1","BasicHandHeldLauncherItem",Ј,
  452. "BasicHandHeldLauncher");Ɏ("S-10E","ElitePistolItem",Ј,"EliteAutoPistol");Ɏ("S-20A","FullAutoPistolItem",Ј,"FullAutoPistol");Ɏ("S-10",
  453. "SemiAutoPistolItem",Ј,"SemiAutoPistol");yield return џ;}bool Ԋ(string ԉ,string ԇ,Ǔ Ʒ,string ï,float į=0f){if(ï.Length==0)return Ѡ;if(!Ƒ(ԉ))
  454. {ȿ(Ԉ(ԇ,Ʒ,ï,į),ԉ);if(Ĥ())return џ;}return Ħ(ԉ);}IEnumerator<bool>Ԉ(string ԇ,Ǔ Ʒ,string ï,float į){string[]ԍ,Ԇ;double ԅ;
  455. bool Ԅ;string A,ɕ="0";ԍ=ï.ToLower().Split('|');A="*";for(int ſ=0;ſ<ԍ.Length;ſ++){if(Ĥ())yield return Ѡ;Ԇ=ԍ[ſ].Split(':');в.
  456. Clear();Ԅ=џ;for(int ԃ=0;ԃ<Ԇ.Length;ԃ++){if(Ĥ())yield return Ѡ;if(ԃ==0){if(Ԇ[ԃ].EndsWith("%")||double.TryParse(Ԇ[ԃ],out ԅ)){ɕ=
  457. Ԇ[ԃ];continue;}}if(ԃ<2&&!Ԅ&&ĥ(Ԇ[ԃ])){A=Ԇ[ԃ];Ԅ=Ѡ;}else в.Add(Ԇ[ԃ]);}if(Ԅ&&Ԇ.Length==1&&A=="*")в.Add("*");for(int ԃ=0;ԃ<в.
  458. Count;ԃ++){while(!Π(ԇ,Ʒ,A,в[ԃ],џ,ɕ,į))yield return Ѡ;}}yield return џ;}bool Ԃ(ȝ ª){string Ģ=ѻ[4];if(!Ƒ(Ģ)){ȿ(ԁ(ª),Ģ);if(Ĥ())
  459. return џ;}return Ħ(Ģ);}IEnumerator<bool>ԁ(ȝ ª){string Ŏ=ª.ȡ(),ō,Ō,ķ=Ɠ(ª.C);IMyTerminalBlock C=ª.C;if(Ŏ.Length==0){if(ª.Ƽ.
  460. Length==0)ª.Ǐ=џ;StringBuilder Æ=new StringBuilder();if(!(ª.C is IMyTextPanel)){while(!ĸ(ª,Æ))yield return Ѡ;ª.Ƞ(Æ.ToString());
  461. }ʒ(ª);}else if(!ž(Ŏ,ª.Ƽ)){ʒ(ª);string[]Ŋ=Ŏ.Split(new[]{"\r\n","\r","\n"},StringSplitOptions.RemoveEmptyEntries),ʼn;List<
  462. string>Ŕ;Ǔ œ=J();bool ň,Œ=џ,ő=џ;double Ň;ª.Ț.Clear();for(int Ç=0;Ç<Ŋ.Length&&Ç<200;Ç++){if(Ĥ())yield return Ѡ;if(!Ŋ[Ç].
  463. StartsWith("//")&&Ǝ(Ŋ[Ç],out ō,out Ō)){Ō=Ō.Trim();ň=ž(Ō,Ѣ);double.TryParse(Ō,out Ň);switch(ō.ToLower()){case"automatic":ª.Ǐ=!ň;
  464. break;case"options":Ŕ=Ō.Trim().ToLower().Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries).ToList();if(Ŕ.Count>0){
  465. if(C.InventoryCount>0){ʛ(ref ª.Ȗ,"storage",Ŕ);ʛ(ref ª.ȥ,"autoconveyor",Ŕ);ʛ(ref ª.Ȓ,"assemblyonly",Ŕ);ʛ(ref ª.ȧ,
  466. "disassemblyonly",Ŕ);ʛ(ref ª.ȼ,"keepinput",Ŕ);ʛ(ref ª.Ȼ,"keepoutput",Ŕ);ʛ(ref ª.Ⱥ,"removeinput",Ŕ);ʛ(ref ª.ȹ,"removeoutput",Ŕ);ʛ(ref ª.ȸ,
  467. "noidlereset",Ŕ);ʛ(ref ª.ȷ,"nosorting",Ŕ);ʛ(ref ª.ȶ,"nospreading",Ŕ);ʛ(ref ª.ȵ,"nocounting",Ŕ);ʛ(ref ª.ȴ,"uniqueblueprintsonly",Ŕ);}ʛ
  468. (ref ª.ȕ,ϭ,Ŕ);ʛ(ref ª.Ȕ,Ѝ,Ŕ);ʛ(ref ª.ȓ,"excluded",Ŕ);Œ=Ѡ;}break;case"storage":if(C.InventoryCount>0){ʼn=Ō.ToLower().Split(
  469. '|');for(int Ĩ=0;Ĩ<ʼn.Length;Ĩ++){if(Ĥ())yield return Ѡ;if(ĥ(ʼn[Ĩ]))ª.ș.Add(ʼn[Ĩ]);}ª.Ȗ=ª.ș.Count>0;ő=Ѡ;}break;case"loadout":œ
  470. .ǐ();if(C.InventoryCount>0)while(!Ԋ(ѻ[22],ѻ[46],œ,Ō.ToLower().Replace(" ",""),(float)C.GetInventory(0).MaxVolume))yield
  471. return Ѡ;if(œ.nj()>0)ª.Ȳ.Ǎ(œ);break;case"limit":œ.ǐ();if(C.InventoryCount>0)while(!Ԋ(ѻ[22],ѻ[46],œ,Ō.ToLower().Replace(" ",""),
  472. (float)C.GetInventory(0).MaxVolume))yield return Ѡ;if(œ.nj()>0)ª.ȳ.Ǎ(œ);break;case"logicand":while(!α(ª.Ț,Ō))yield return
  473. Ѡ;ª.Ș=ª.Ț.Count>0;break;case"logicor":while(!α(ª.Ț,Ō))yield return Ѡ;break;case"priority":ª.ȱ=Ň;break;}}if(ª.ȓ)break;}if(
  474. ª.Ȗ){if(ª.ș.Count==0)ª.ș.Add("all");}else if(ª.ș.Count>0)ª.Ȗ=Ѡ;else if(!Œ&&!ő&&ª.C is IMyCargoContainer){ª.Ȗ=Ѡ;ª.ș.Add(
  475. "all");}ª.Ƽ=Ŏ;}yield return џ;}bool Ő(ȝ ª,int w=0){string Ģ=ѻ[34];if(!Ƒ(Ģ)){ȿ(ŏ(ª,w),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}
  476. IEnumerator<bool>ŏ(ȝ ª,int w){if(!ª.ț.ContainsKey(w))ª.ț[w]=new ƫ{w=w,Lj=!(ª.C is IMyTextPanel),Ü=П[ѣ],ƪ=ª};ƫ Ĭ=ª.ț[w];string Ŏ=Ĭ.ȡ(
  477. ),ō,Ō,ķ=Ɠ(ª.C);if(Ŏ.Length==0){Ĭ.Ƞ(ϑ);ª.C.CustomName=ª.C.CustomName.Replace("[nds]","[NDS]");}else{if(!ž(Ŏ,Ĭ.Ƽ)){ʓ(ref Ĭ.
  478. ǃ);StringBuilder ŋ=new StringBuilder();string[]Ŋ=Ŏ.Split(new[]{"\r\n","\r","\n"},StringSplitOptions.RemoveEmptyEntries),ʼn
  479. ;bool ň,ŕ=џ;double Ň;for(int Ç=0;Ç<Ŋ.Length&&Ç<200;Ç++){if(Ĥ())yield return Ѡ;if(!Ŋ[Ç].StartsWith("//")&&Ǝ(Ŋ[Ç],out ō,out
  480. Ō)){ň=ž(Ō,Ѣ);double.TryParse(Ō,out Ň);switch(ō.ToLower()){case"type":switch(Ō.ToLower()){case"item":Ĭ.dž=ͺ.ͷ;break;case
  481. "cargo":Ĭ.dž=ͺ.Ͷ;break;case"output":Ĭ.dž=ͺ.Ƀ;break;case"status":Ĭ.dž=ͺ.ʹ;break;case"span":Ĭ.dž=ͺ.ͳ;break;}ŋ.Append($"{Ĭ.dž}");break;
  482. case"categories":ʼn=Ō.ToLower().Split('|');Ĭ.Ʀ.Clear();for(int Ĩ=0;Ĩ<ʼn.Length;Ĩ++){if(Ĥ())yield return Ѡ;if(ĥ(ʼn[Ĩ])){Ĭ.Ʀ.Add(
  483. ʼn[Ĩ]);ŋ.Append(ʼn[Ĩ]);}}break;case"items":while(!Ԋ(ѻ[22],ѻ[46],Ĭ.ǃ,Ō.ToLower()))yield return Ѡ;if(Ĭ.ǃ.nj()>0)while(!ӻ(ŋ,Ĭ.ǃ
  484. ,џ))yield return Ѡ;break;case"sorting":switch(Ō.ToLower()){case"alphabetical":Ĭ.LJ=Ή.Έ;break;case"ascendingamount":Ĭ.LJ=Ή.Ά
  485. ;break;case"descendingamount":Ĭ.LJ=Ή.ͽ;break;case"ascendingpercent":Ĭ.LJ=Ή.ͼ;break;case"descendingpercent":Ĭ.LJ=Ή.ͻ;break;}ŋ
  486. .Append(Ĭ.LJ.ToString());break;case"text color":Ă(out Ĭ.ǂ,Ō);ŋ.Append(Ĭ.ǂ.ToVector4());break;case"number color":Ă(out Ĭ.ǁ,
  487. Ō);ŋ.Append(Ĭ.ǁ);break;case"back color":Ă(out Ĭ.ǀ,Ō);ŋ.Append(Ĭ.ǀ);break;case"rows":Ĭ.Ƥ=(int)Ň;ŕ=Ѡ;break;case
  488. "name length":Ĭ.Ƣ=(int)Ň;ŋ.Append(Ĭ.Ƣ);break;case"decimals":Ĭ.Û=(int)Ň;ŋ.Append(Ĭ.Û);break;case"update delay":Ĭ.ơ=Ň;ˤ=Math.Min(ˤ,Ň);
  489. break;case"span id":Ĭ.ņ=Ō;break;case"span child id":Ĭ.ƽ=Ō;Ĭ.Ş=Ō.Length>0;break;case"number suffixes":ʼn=Ō.Split('|');Ĭ.Ü.Clear
  490. ();Ĭ.Ü.AddRange(ʼn);break;case"options":ʼn=Ō.ToLower().Split('|');Ĭ.Ʋ=ʼn.Contains("belowquota");Ĭ.lj=!ʼn.Contains(
  491. "hideprogressbar");break;case"minimum value":Ĭ.Ơ=Ň;ŋ.Append(Ĭ.Ơ);break;case"maximum value":Ĭ.Ɵ=Ň;ŋ.Append(Ĭ.Ɵ);break;case"font":Ĭ.ê=ą(((
  492. IMyTextSurfaceProvider)ª.C).GetSurface(0),Ō);break;case"item display":switch(Ō.ToLower()){case"detailed":Ĭ.Dž=ΐ.Ώ;break;case"compactamount":Ĭ.Dž
  493. =ΐ.Ύ;break;case"standard":Ĭ.Dž=ΐ.Λ;break;case"compactpercent":Ĭ.Dž=ΐ.Ό;break;}break;}}}if(Ĭ.dž!=ͺ.Ͳ){IMyTextSurface é=Ĭ.Ȣ();
  494. Ĭ.ß=é.SurfaceSize;Ĭ.ƿ=é.TextureSize-é.SurfaceSize;if(Ĭ.Lj||Ĭ.ƞ||ķ=="LargeTextPanel"||ķ=="LargeLCDPanel5x3")Ĭ.ƿ/=2f;Ĭ.ƾ=ŋ.
  495. ToString();if(!ŕ)Ĭ.Ƥ=15;switch(Ĭ.dž){case ͺ.Ͷ:Ĭ.ƣ=1;if(!ŕ)Ĭ.Ƥ=Ĭ.Ʀ.Count;break;case ͺ.Ƀ:if(!ŕ)Ĭ.Ƥ=13;Ĭ.ƣ=2;if(ŕ&&Ĭ.Ƥ==0)Ĭ.ƣ=1;
  496. break;case ͺ.ʹ:Ĭ.ƣ=2;if(!ŕ)Ĭ.Ƥ=8;if(ŕ&&Ĭ.Ƥ==0)Ĭ.ƣ=1;break;case ͺ.ͳ:Ĭ.ƣ=1;break;}}else ª.ț.Remove(w);}}Ĭ.Ƽ=Ŏ;yield return џ;}
  497. bool ţ(ƫ Ĭ){string Ģ=ѻ[3];if(!Ƒ(Ģ)){ȿ(Ţ(Ĭ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ţ(ƫ Ĭ){Ĭ.Ʃ.Clear();int ş=0;if(Ĭ
  498. .þ.Count>0){while(!š(Ĭ,Ĭ.þ,ş,џ))yield return Ѡ;ş=1;}if(Ĭ.ƨ.Count>0)while(!š(Ĭ,Ĭ.ƨ,ş,Ѡ))yield return Ѡ;yield return џ;}
  499. bool š(ƫ Ĭ,List<ʊ>þ,float ş,bool Ş){string Ģ=ѻ[18];if(!Ƒ(Ģ)){ȿ(Ť(Ĭ,þ,ş,Ş),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>
  500. Ť(ƫ Ĭ,List<ʊ>þ,float ş,bool Ş){List<ʊ>ŝ=new List<ʊ>();IMyTextSurface é=Ĭ.Ȣ();int Ŝ=Ĭ.Û+4;float á;if(Ĭ.Û>0)Ŝ++;Vector2 ś=ƀ
  501. (Ĭ.ƣ,Ĭ.Ƥ),Ś,ř,Ř,ŗ,Ŗ;if(!Ş)ś.Y=þ.Count;ř=ƀ(Ĭ.ß.X/ś.X,Ĭ.ß.Y/ś.Y);Ś=ƀ(ş);foreach(ʊ ü in þ){if(Ĥ())yield return Ѡ;if(!Ş||Ś.Y<
  502. ś.Y){Ř=ƀ(Ś.X*ř.X,Ś.Y*ř.Y)+Ĭ.ƿ;if(ü.ʈ.Length>0&&Ĭ.ǀ.A>0)Ĭ.Ʃ.Add(Ę(ü.ʈ,Ĭ.ǀ,Ř,ř));foreach(ɭ Š in ü.ʆ){if(Ĥ())yield return Ѡ;
  503. if(ü.F){á=Math.Min(1f,(float)(Š.ɫ/Š.ɪ));switch(Ĭ.Dž){case ΐ.Ύ:ŗ=ƀ(ř.X*0.75f,ř.Y);Ĭ.Ʃ.Add(ð(Š.ɬ,Ĭ.ǂ,Ř,ŗ,Š.ë,Ĭ.ê,é));Ŗ=ƀ(ŗ.X)
  504. ;ŗ=ƀ(ř.X*0.25f,ř.Y);Ĭ.Ʃ.Add(ð(ñ(Š.ɫ,Ĭ.Ü,Ĭ.Û,Ŝ),Ĭ.ǁ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));break;case ΐ.Ό:ŗ=ƀ(ř.X*0.75f,ř.Y);Ĭ.Ʃ.Add(ð(Š.ɬ,Ĭ.ǂ,
  505. Ř,ŗ,Š.ë,Ĭ.ê,é));Ŗ=ƀ(ŗ.X);if(Ĭ.lj){ŗ=ƀ(ř.X*0.25f,ř.Y);Ĭ.Ʃ.AddRange(â(á,Ř+Ŗ,ŗ));}break;case ΐ.Ώ:ŗ=ƀ(ř.X*0.6f,ř.Y/2f);Ĭ.Ʃ.Add
  506. (ð(Š.ɬ,Ĭ.ǂ,Ř,ŗ,Š.ë,Ĭ.ê,é));Ŗ=ƀ(ŗ.X);ŗ.X=ř.X*0.2f;Ĭ.Ʃ.Add(ð($"{ñ(Š.ɫ,Ĭ.Ü,Ĭ.Û,Ŝ)}/",Ĭ.ǁ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));Ŗ+=ƀ(ŗ.X);if(Ĭ.lj)
  507. Ĭ.Ʃ.AddRange(â(á,Ř+Ŗ,ŗ));Ĭ.Ʃ.Add(ð(ñ(Š.ɪ,Ĭ.Ü,Ĭ.Û,Ŝ),Ĭ.ǁ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));Ŗ=ƀ(0,ŗ.Y);ˡ.Clear();if(Š.ƶ>0)ˡ.Append(
  508. $"Assembling: {ñ(Š.ƶ,Ĭ.Ü,Ĭ.Û,Ŝ)}");if(Š.Ƶ>0){if(ˡ.Length>0)ˡ.Append(", ");ˡ.Append($"Disassembling: {ñ(Š.Ƶ,Ĭ.Ü,Ĭ.Û,Ŝ)}");}ŗ.X=ř.X*0.75f;Ĭ.Ʃ.Add(ð(ˡ.
  509. ToString(),Ĭ.ǂ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));Ŗ+=ƀ(ŗ.X);ŗ.X=ř.X*0.25f;Ĭ.Ʃ.Add(ð($"Rate: {ñ(Š.ƴ,Ĭ.Ü,Ĭ.Û,Ŝ)}",Ĭ.ǂ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));break;case
  510. ΐ.Λ:ŗ=ƀ(ř.X*0.6f,ř.Y);Ĭ.Ʃ.Add(ð(Š.ɬ,Ĭ.ǂ,Ř,ŗ,Š.ë,Ĭ.ê,é));Ŗ=ƀ(ŗ.X);ŗ=ƀ(ř.X*0.2f,ř.Y);Ĭ.Ʃ.Add(ð($"{ñ(Š.ɫ,Ĭ.Ü,Ĭ.Û,Ŝ)}/",Ĭ.ǁ,Ř
  511. +Ŗ,ŗ,Š.ë,Ĭ.ê,é));Ŗ+=ƀ(ŗ.X);Ĭ.Ʃ.AddRange(â(á,Ř+Ŗ,ŗ));Ĭ.Ʃ.Add(ð(ñ(Š.ɪ,Ĭ.Ü,Ĭ.Û,Ŝ),Ĭ.ǁ,Ř+Ŗ,ŗ,Š.ë,Ĭ.ê,é));break;}}else{ŗ=ƀ(ř.X
  512. *Š.Ȧ,ř.Y);if(Š.ė.Length>0)Ĭ.Ʃ.Add(Ę(Š.ė,Š.ʌ,Ř,ŗ));else if(Š.ï.Length>0)Ĭ.Ʃ.Add(ð(Š.ï,Ĭ.ǂ,Ř,ŗ,Š.ë,Ĭ.ê,é));else Ĭ.Ʃ.Add(ð(ñ
  513. (Š.R,Ĭ.Ü,Ĭ.Û,Ŝ),Ĭ.ǂ,Ř,ŗ,Š.ë,Ĭ.ê,é));if(Š.ȣ)Ř+=ƀ(ŗ.X);}}Ś.Y+=1f;}else if(Ĭ.Ş)ŝ.Add(ü.ǔ());else break;}foreach(Ǻ ņ in Ĭ.ƥ){
  514. if(Ĥ())yield return Ѡ;Й[ņ.P].ț[ņ.w].ƨ.Clear();if(ŝ.Count>0)ÿ(Й[ņ.P].ț[ņ.w].ƨ,ŝ);}yield return џ;}bool Ļ(ƫ Ĭ){string Ģ=ѻ[51
  515. ];if(!Ƒ(Ģ)){ȿ(ĵ(Ĭ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>ĵ(ƫ Ĭ){if(DateTime.Now>=Ĭ.DŽ){string Ĵ=Ĭ.ƾ;Ĭ.þ.Clear(
  516. );if(Ĭ.dž!=ͺ.ͳ){bool ij=Ĵ.Length>0;Ĭ.ƨ.Clear();if(ij&&Α.ContainsKey(Ĵ)&&Α[Ĵ].DŽ>DateTime.Now){ÿ(Ĭ.þ,Α[Ĵ].þ);ÿ(Ĭ.ƨ,Α[Ĵ].ƨ);}
  517. else{switch(Ĭ.dž){case ͺ.Ͷ:while(!ı(Ĭ))yield return Ѡ;break;case ͺ.ͷ:while(!Į(Ĭ))yield return Ѡ;break;case ͺ.Ƀ:while(!Ņ(Ĭ))
  518. yield return Ѡ;break;case ͺ.ʹ:while(!ŀ(Ĭ))yield return Ѡ;break;}if(ij){if(!Α.ContainsKey(Ĵ))Α[Ĵ]=new ɮ();else{Α[Ĵ].þ.Clear();Α
  519. [Ĵ].ƨ.Clear();}ÿ(Α[Ĵ].þ,Ĭ.þ);ÿ(Α[Ĵ].ƨ,Ĭ.ƨ);Α[Ĵ].DŽ=DateTime.Now.AddSeconds(ˤ);}}}Ĭ.DŽ=DateTime.Now.AddSeconds(Ĭ.ơ);while(!ţ
  520. (Ĭ))yield return Ѡ;if(Ĥ())yield return Ѡ;MySpriteDrawFrame IJ=Ĭ.Ȣ().DrawFrame();IJ.AddRange(Ĭ.Ʃ);IJ.Dispose();for(int Ç=0;Ç<
  521. Α.Count;Ç+=0){if(Ĥ())yield return Ѡ;if((DateTime.Now-Α.Values[Ç].DŽ).TotalSeconds>=60)Α.RemoveAt(Ç);else Ç++;}}yield
  522. return џ;}bool ı(ƫ Ĭ){string Ģ=ѻ[54];if(!Ƒ(Ģ)){ȿ(İ(Ĭ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>İ(ƫ Ĭ){double į=0;if(Ĭ
  523. .Ʀ.Contains("all")||Ĭ.Ʀ.Contains("*")){while(!Օ(ref į,о))yield return Ѡ;Ĭ.Ʊ("Total:".PadRight(Ĭ.Ƣ),џ,0.75f,Ѡ,Ѡ);if(Ĭ.lj)Ĭ.
  524. ƻ(ä((float)į));Ĭ.Ʊ($"{ñ(į*100.0,Ĭ.Ü,2,5)}%",џ,0.25f,џ);}foreach(string ĕ in Ĭ.Ʀ){if(Ĥ())yield return Ѡ;if(ĕ!="all"&&ĕ!=
  525. "*"&&М.ContainsKey(ĕ)){while(!Օ(ref į,М[ĕ]))yield return Ѡ;Ĭ.Ʊ($"{Ƙ(ĕ)}:".PadRight(Ĭ.Ƣ),џ,0.75f,Ѡ,Ѡ);if(Ĭ.lj)Ĭ.ƻ(ä((float)į)
  526. );Ĭ.Ʊ($"{ñ(į*100.0,Ĭ.Ü,2,5)}%",џ,0.25f,џ);}}yield return џ;}bool Į(ƫ Ĭ){string Ģ=ѻ[55];if(!Ƒ(Ģ)){ȿ(ĭ(Ĭ),Ģ);if(Ĥ())return
  527. џ;}return Ħ(Ģ);}IEnumerator<bool>ĭ(ƫ Ĭ){List<ȭ>ī=ƚ(),Ī=new List<ȭ>();bool ĩ;foreach(ȭ F in ī){if(Ĥ())yield return Ѡ;ĩ=Ĭ.Ʀ
  528. .Contains(F.ĕ);if(!ĩ)Ĭ.ǃ.ǘ(out ĩ,F.A,F.D);if(ĩ&&F.ǣ&&F.ȫ>=Ĭ.Ơ&&F.ȫ<=Ĭ.Ɵ&&(!Ĭ.Ʋ||F.ȫ<F.ǩ))Ī.Add(F);}switch(Ĭ.LJ){case Ή.Έ:Ī
  529. =Ī.OrderBy(Ĩ=>Ĩ.Ȭ).ToList();break;case Ή.Ά:Ī=Ī.OrderBy(Ĩ=>Ĩ.ȫ).ToList();break;case Ή.ͽ:Ī=Ī.OrderByDescending(Ĩ=>Ĩ.ȫ).
  530. ToList();break;case Ή.ͼ:Ī=Ī.OrderBy(Ĩ=>ę(Ĩ)).ToList();break;case Ή.ͻ:Ī=Ī.OrderByDescending(Ĩ=>ę(Ĩ)).ToList();break;}foreach(ȭ
  531. F in Ī){if(Ĥ())yield return Ѡ;Ĭ.Ƹ(F.Ȭ.PadRight(Ĭ.Ƣ),F.ȫ,F.ǩ,F.Ȫ,F.ȩ,F.ƴ);}yield return џ;}bool Ņ(ƫ Ĭ){string Ģ=ѻ[7];if(!Ƒ
  532. (Ģ)){ȿ(Ń(Ĭ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ń(ƫ Ĭ){List<ɽ>ł;ʢ(Ĭ,$"NDS Inventory Manager {ѷ}");ʢ(Ĭ,ϗ);ʢ(
  533. Ĭ,$"Runtime: {Ɣ(Ѫ)}");ʢ(Ĭ,$"Blocks: {ñ(Й.Count,Ĭ.Ü)}");ʢ(Ĭ,$"Storages: {ñ(о.Count,Ĭ.Ü)}");ʢ(Ĭ,
  534. $"Assemblers: {ñ(ш.Count,Ĭ.Ü)}");ʢ(Ĭ,$"H2/O2 Gens: {ñ(ц.Count,Ĭ.Ü)}");ʢ(Ĭ,$"Refineries: {ñ(п.Count,Ĭ.Ü)}");ʢ(Ĭ,$"H2 Tanks: {ñ(у.Count,Ĭ.Ü)}");ʢ(Ĭ,
  535. $"O2 Tanks: {ñ(т.Count,Ĭ.Ü)}");ʢ(Ĭ,$"Weapons: {ñ(ф.Count,Ĭ.Ü)}");ʢ(Ĭ,$"Reactors: {ñ(р.Count,Ĭ.Ü)}");if(ҁ){ł=new List<ɽ>(Щ);ʢ(Ĭ,
  536. $"Errors: {ñ(ј,Ĭ.Ü,0,6)} of {ñ(ї,Ĭ.Ü,0,6)}");}else{ł=new List<ɽ>(Џ);ʢ(Ĭ,$"Status: {ñ(Ϯ,null,3,6)}%");}foreach(ɽ Ł in ł){if(Ĥ())yield return Ѡ;Ĭ.Ʊ(Ł.Ƀ(),Ѡ);}yield
  537. return џ;}bool ŀ(ƫ Ĭ){string Ģ=ѻ[5];if(!Ƒ(Ģ)){ȿ(Ŀ(Ĭ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}IEnumerator<bool>Ŀ(ƫ Ĭ){SortedList<
  538. string,int>ľ=new SortedList<string,int>(),Ľ=new SortedList<string,int>();int ń=0,ļ=0,ĺ=0,ù=0;foreach(long P in ш){if(Ĥ())yield
  539. return Ѡ;ʡ(P,ref ń,ref ļ,ref ĺ,ref ù,ľ,Ľ);}foreach(KeyValuePair<string,int>Ĺ in ľ){if(Ĥ())yield return Ѡ;Ĭ.Ʊ(
  540. $"Assembling x{ñ(Ĺ.Value,Ĭ.Ü,Ĭ.Û,4,џ)} {v(Ĺ.Key,Ĭ.Ƣ,Ѡ)}",Ѡ);}foreach(KeyValuePair<string,int>Ĺ in Ľ){if(Ĥ())yield return Ѡ;Ĭ.Ʊ(
  541. $"Disassembling x{ñ(Ĺ.Value,Ĭ.Ü,Ĭ.Û,4,џ)} {v(Ĺ.Key,Ĭ.Ƣ,Ѡ)}",Ѡ);}ľ.Clear();Ľ.Clear();ʢ(Ĭ,û($"Assemblers x{ñ(ш.Count,Ĭ.Ü,Ĭ.Û,4,џ)}",ù).PadRight(Ĭ.Ƣ));ʢ(Ĭ,
  542. $" Assembling: {ñ(ń,Ĭ.Ü,Ĭ.Û,4)}".PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Disassembling: {ñ(ļ,Ĭ.Ü,Ĭ.Û,4)}".PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Idle: {ñ(ĺ,Ĭ.Ü,Ĭ.Û,4)}".PadRight(
  543. Ĭ.Ƣ));ń=0;ĺ=0;ù=0;foreach(long P in п){if(Ĥ())yield return Ѡ;ʡ(P,ref ń,ref ļ,ref ĺ,ref ù,ľ,Ľ);}foreach(KeyValuePair<
  544. string,int>Ĺ in ľ){if(Ĥ())yield return Ѡ;Ĭ.Ʊ($"Refining x{ñ(Ĺ.Value,Ĭ.Ü,Ĭ.Û,4,џ)} {v(Ĺ.Key,Ĭ.Ƣ,Ѡ)}",Ѡ);}ľ.Clear();ʢ(Ĭ,û(
  545. $"Refineries x{ñ(п.Count,Ĭ.Ü,Ĭ.Û,4,џ)}",ù).PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Refining: {ñ(ń,Ĭ.Ü,Ĭ.Û,4)}".PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Idle: {ñ(ĺ,Ĭ.Ü,Ĭ.Û,4)}".
  546. PadRight(Ĭ.Ƣ));ń=0;ĺ=0;ù=0;foreach(long P in ц){if(Ĥ())yield return Ѡ;ʡ(P,ref ń,ref ļ,ref ĺ,ref ù,ľ,Ľ);}ʢ(Ĭ,û(
  547. $"O2/H2 Gens x{ñ(ц.Count,Ĭ.Ü,Ĭ.Û,4,џ)}",ù).PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Active: {ñ(ń,Ĭ.Ü,Ĭ.Û,4)}".PadRight(Ĭ.Ƣ));ʢ(Ĭ,$" Idle: {ñ(ĺ,Ĭ.Ü,Ĭ.Û,4)}".
  548. PadRight(Ĭ.Ƣ));foreach(KeyValuePair<string,int>Ĺ in ľ){if(Ĥ())yield return Ѡ;Ĭ.Ʊ(
  549. $"Processing x{ñ(Ĺ.Value,Ĭ.Ü,Ĭ.Û,4,џ)} {v(Ĺ.Key,Ĭ.Ƣ,Ѡ)}",Ѡ);}yield return џ;}bool ĸ(ȝ ķ,StringBuilder Æ){string Ģ=ѻ[56];if(!Ƒ(Ģ)){ȿ(Ķ(ķ,Æ),Ģ);if(Ĥ())return џ;}return Ħ(Ģ);}
  550. IEnumerator<bool>Ķ(ȝ ķ,StringBuilder Æ){IMyTerminalBlock C=ķ.C;StringBuilder ƍ=new StringBuilder();Æ.AppendLine($"Automatic={!ķ.Ǐ}"
  551. );Æ.Append("Options=");ʏ(Æ,ƍ,ϭ,ķ.ȕ);ʏ(Æ,ƍ,Ѝ,ķ.Ȕ);ʏ(Æ,ƍ,"Excluded",ķ.ȓ);if(C.InventoryCount>0){ʏ(Æ,ƍ,"Storage",ķ.Ȗ);ʏ(Æ,ƍ,
  552. "AutoConveyor",ķ.ȥ);ʏ(Æ,ƍ,"KeepInput",ķ.ȼ);ʏ(Æ,ƍ,"RemoveInput",ķ.Ⱥ);ʏ(Æ,ƍ,"NoSpreading",ķ.ȶ);ʏ(Æ,ƍ,"NoCounting",ķ.ȵ);if(C.
  553. InventoryCount>1){ʏ(Æ,ƍ,"KeepOutput",ķ.Ȼ);ʏ(Æ,ƍ,"RemoveOutput",ķ.ȹ);ʏ(Æ,ƍ,"NoSorting",ķ.ȷ);if(C is IMyAssembler){ʏ(Æ,ƍ,"AssemblyOnly",
  554. ķ.Ȓ);ʏ(Æ,ƍ,"DisassemblyOnly",ķ.ȧ);ʏ(Æ,ƍ,"NoIdleReset",ķ.ȸ);ʏ(Æ,ƍ,"UniqueBlueprintsOnly",ķ.ȴ);}}}Æ.AppendLine();Æ.
  555. AppendLine(ƍ.ToString());ƍ.Clear();Æ.AppendLine($"Priority={ķ.ȱ}");if(C.InventoryCount>0){if(!ķ.Ȗ)Æ.Append("//");Æ.Append(
  556. "Storage=");ʏ(Æ,ƍ,"All",!ķ.Ȗ||ķ.ș.Contains("all")||ķ.ș.Contains("*"));foreach(string ĕ in ж){if(Ĥ())yield return Ѡ;ʏ(Æ,ƍ,ĕ,!ķ.Ȗ||ķ
  557. .ș.Contains(ĕ));}Æ.AppendLine();Æ.AppendLine(ƍ.ToString());ƍ.Clear();if(ķ.Ȳ.nj()>0){Æ.Append("Loadout=");while(!ӻ(Æ,ķ.Ȳ,Ѡ)
  558. )yield return Ѡ;Æ.AppendLine();}else ʏ(Æ,"Loadout=10:ingot:iron:silicon:nickel|50:ore:ice");if(ķ.ȳ.nj()>0){Æ.Append(
  559. "Limit=");while(!ӻ(Æ,ķ.ȳ,Ѡ))yield return Ѡ;Æ.AppendLine();}else ʏ(Æ,"Limit=25:ingot:*|100:ore:ice");}if(C is IMyFunctionalBlock)
  560. {if(ķ.Ț.Count>0){if(ķ.Ș)Æ.Append("LogicAnd=");else Æ.Append("LogicOr=");foreach(ư ƌ in ķ.Ț){if(Ĥ())yield return Ѡ;if(Æ[Æ.
  561. Length-1]!='=')Æ.Append("|");Æ.Append(ƌ.Ư());}Æ.AppendLine();}else{ʏ(Æ,"LogicAnd=ingot:iron<100 | ore:iron>=quota*0.1");ʏ(Æ,
  562. "LogicOr=ingot:iron<quota*0.95 | ingot:silicon<quota*0.95");}}yield return џ;}TimeSpan Ƌ(TimeSpan Ş){if(Ş.TotalMilliseconds>=ϥ.TotalMilliseconds)return Ş-ϥ;return new TimeSpan(0)
  563. ;}bool Ɗ(IMyTerminalBlock C,string A,string D){Ю.Clear();C.GetInventory(0).GetAcceptedItems(Ю);if(Ю.Count==0)return Ѡ;for
  564. (int Ç=0;Ç<Ю.Count;Ç++)if(Ю[Ç].ToString()==$"{A}/{D}")return Ѡ;return џ;}double Ɖ(string ō){if(И.ContainsKey(ō))return И[
  565. ō].K;return 1;}string ƈ(string m){if(Д.ContainsKey(m))return Д[m];string A,D;ə(m,out A,out D);if(Đ(A))return Ϛ;else if(Ď(
  566. A))return ϛ;else if(Ē(A))return ϝ;else if(đ(A))return Ϝ;else if(č(A))return ϙ;return A;}bool Ƈ(string Ō){return Ō.Length>
  567. 0&&!ž(Ō,"none");}bool Ɔ(MyInventoryItem F,ref string ƃ){if(ѕ<0)return џ;try{string ƅ=Ɯ(F.Type.SubtypeId),Ƃ;for(int Ç=0;Ç<
  568. д.Count;Ç++){Ƃ=Ɯ(д[Ç]);if(Math.Abs(Ƃ.Length-ƅ.Length)>ѕ)continue;if(Č(ƅ,Ƃ)||ƅ.EndsWith(Ƃ)||Č(Ƃ,ƅ)||Ƃ.EndsWith(ƅ)){ƃ=д[Ç];
  569. return Ѡ;}}}catch{Ƀ("Error/Temp: Error finding blueprint match");}return џ;}bool Ƅ(MyProductionItem Î,ref string ƃ){if(ѕ<0)
  570. return џ;try{string ƅ,Ƃ=Ɯ(ƒ(Î)),D,A;for(int Ç=0;Ç<Ф.Count;Ç++){ə(Ф.Keys[Ç],out A,out D);ƅ=Ɯ(D);if(Math.Abs(Ƃ.Length-ƅ.Length)>
  571. ѕ)continue;if(Č(ƅ,Ƃ)||ƅ.EndsWith(Ƃ)||Č(Ƃ,ƅ)||Ƃ.EndsWith(ƅ)){ƃ=Ф.Keys[Ç];return Ѡ;}}}catch{Ƀ(
  572. "Error/Temp: Error finding blueprint item");}return џ;}string Ɯ(string ƛ){return ƛ.ToLower().Replace("component","").Replace("magazine","").Replace("blueprint",""
  573. ).Replace("tier","t").Replace("hydrogen","hydro").Replace("thruster","thrust");}List<ȭ>ƚ(){Э.Clear();foreach(KeyValuePair
  574. <string,SortedList<string,ȭ>>ƙ in Н)Э.AddRange(ƙ.Value.Values);return Э;}string Ƙ(string ï){if(ï.Length>1)return
  575. $"{ï.Substring(0,1).ToUpper()}{ï.Substring(1).ToLower()}";return ï.ToUpper();}List<MyInventoryItem>Ɨ(){return new List<MyInventoryItem>();}List<MyProductionItem>Ɩ(){return new
  576. List<MyProductionItem>();}bool ƕ(string Ė,string ō){if(Ė.Length>=ō.Length&&ō.Length>0){return Ė.ToLower().Contains(ō.ToLower
  577. ());}return џ;}string Ɣ(double Ɲ){if(Ɲ>=1000.0){return$"{ñ(Ɲ/1000.0)}s";}return$"{ñ(Ɲ)}ms";}string Ɠ(IMyTerminalBlock C){
  578. return C.BlockDefinition.SubtypeName;}string ƒ(MyProductionItem Î){return Î.BlueprintId.SubtypeName;}bool Ƒ(string ō,bool Ɛ=џ)
  579. {if(Ɛ)return Х.ContainsKey(ō);if(ˠ.ContainsKey(ō)){if(!Х.ContainsKey(ō))Х[ō]="Initialize";return Ѡ;}return џ;}bool Ə(
  580. IMyTerminalBlock C){return(ϔ.Length==0||ƕ(C.CustomName,ϔ))&&!П[ѥ].Contains(Ɠ(C));}bool Ǝ(string ï,out string ō,out string Ō){int P=ï.
  581. IndexOf("=");if(P!=-1){ō=ï.Substring(0,P);Ō=ï.Substring(P+1);return Ѡ;}ō=ï;Ō=ï;return Ō.Length>0&&ō.Length>0;}bool ů(ȝ ª,string
  582. A,string D){IMyTerminalBlock C=ª.C;if(!Ɗ(ª.C,A,D))return џ;bool ű;double Ű=ª.ȳ.ǘ(out ű,A,D);if(ű&&Ű<=0.0)return џ;if(Đ(A)
  583. &&Е.ContainsKey(Ɠ(C)))return Е[Ɠ(C)]==D;return Ѡ;}bool ů(ȝ ª,MyInventoryItem F){return ů(ª,F.Type.TypeId,F.Type.SubtypeId)
  584. ;}bool Ů(ȝ ª,ref double ŭ,MyInventoryItem F){bool Ŭ;double ū=ª.ȳ.ǘ(out Ŭ,F);if(!Ŭ)ū=ª.Ȳ.ǘ(out Ŭ,F);if(Ŭ){ŭ=ū;return Ѡ;}
  585. return џ;}string Ū(string ō,bool ũ=Ѡ){foreach(KeyValuePair<string,SortedList<string,string>>Ĺ in Ц){if(Ĺ.Value.ContainsKey(ō))
  586. {if(ũ)return Ĺ.Value[ō].ToLower();return Ĺ.Value[ō];}}return"-0.1";}double Ũ(string ō){foreach(KeyValuePair<string,
  587. SortedList<string,double>>Ĺ in Т){if(Ĺ.Value.ContainsKey(ō)){return Ĺ.Value[ō];}}return-0.1;}bool ŧ(string ō){foreach(KeyValuePair
  588. <string,SortedList<string,bool>>Ĺ in С){if(Ĺ.Value.ContainsKey(ō)){return Ĺ.Value[ō];}}return џ;}bool Ŧ(string ō,string Ō
  589. ){foreach(KeyValuePair<string,SortedList<string,string>>Ĺ in Ц){if(Ĺ.Value.ContainsKey(ō)){Ĺ.Value[ō]=Ō;return Ѡ;}}return
  590. џ;}bool ť(string ō,double Ō){foreach(KeyValuePair<string,SortedList<string,double>>Ĺ in Т){if(Ĺ.Value.ContainsKey(ō)){Ĺ.
  591. Value[ō]=Ō;return Ѡ;}}return џ;}bool Ɓ(string ō,bool Ō){foreach(KeyValuePair<string,SortedList<string,bool>>Ĺ in С){if(Ĺ.
  592. Value.ContainsKey(ō)){Ĺ.Value[ō]=Ō;return Ѡ;}}return џ;}Vector2 ƀ(float Ĩ=0f,float ſ=0f){return new Vector2(Ĩ,ſ);}bool ž(
  593. string Ž,string ż){return Ž.Length==ż.Length&&string.Compare(Ž,ż,Ѡ)==0;}double Ż(MyInventoryItem F){double ź=0.5,Ź;ȭ Z;bool Ÿ=
  594. Ѡ;for(int Ĩ=0;Ĩ<У.Count;Ĩ++){if(n(out Z,У.Keys[Ĩ])){Ź=Z.ǟ.IndexOf(F.Type.SubtypeId);if(Ź!=-1){if(Ÿ){ź=Z.ǻ()+(Ź*0.00001);Ÿ
  595. =џ;}else ź=Math.Min(ź,Z.ǻ()+(Ź*0.00001));}}}return ź;}Ƴ ŷ(ȭ Z){return new Ƴ{Ë=Z.Ë,D=Z.D,A=Z.A,K=Z.ǵ};}bool Ŷ(
  596. MyInventoryItem F){ȭ Z;return!Ф.ContainsKey(F.Type.ToString())&&!n(out Z,F.Type.ToString());}bool ŵ(MyProductionItem Î){if(ƒ(Î)==ϖ){
  597. return џ;}return!д.Contains(ƒ(Î))&&!И.ContainsKey(ƒ(Î));}bool ų(Ǔ Ŵ){return ų(Ŵ.ǒ)||ų(Ŵ.Ǒ);}bool ų(SortedList<string,double>ý)
  598. {for(int Ç=0;Ç<ý.Count;Ç++)if(ý.Values[Ç]>0)return Ѡ;return џ;}bool Ų(ȭ Z,string ħ,string T){try{string Å=T.ToLower();
  599. double Ä=0,Ã;if(Å.StartsWith("quota")){Ä=Z.ǰ;int Â=Å.IndexOf("+"),Á=Å.IndexOf("*");if(Â>0){if(!double.TryParse(Å.Substring(Â+1
  600. ),out Ã))Ä+=Ã;}else if(Á>0&&!double.TryParse(Å.Substring(Á+1),out Ã))Ä*=Ã;}else if(ƕ(T,"/")){ȭ À;if(n(out À,T))Ä=À.ȫ;}
  601. else if(!double.TryParse(Å,out Ä))return џ;if(ħ==">=")return Z.ȫ>=Ä;else if(ħ=="<=")return Z.ȫ<=Ä;else if(ħ==">")return Z.ȫ>
  602. Ä;else if(ħ=="<")return Z.ȫ<Ä;else if(ħ=="=")return Z.ȫ==Ä;}catch{}return џ;}bool º(IMyTerminalBlock C){return!(C is
  603. IMyTextSurfaceProvider)||C is IMyShipController||ƕ(C.CustomName,ϫ);}bool µ(ȝ ª,int w=0){return ª.ț.ContainsKey(w)&&ª.ț[w].dž!=ͺ.Ͳ;}string v(
  604. string u,int t=20,bool r=џ){string q;if(u.Length<=t)q=u;else q=
  605. $"{u.Substring(0,(int)Math.Ceiling((t-1.0)/2.0))}.{u.Substring(u.Length-(int)Math.Floor((t-1.0)/2.0))}";if(r)q=q.PadRight(t);return q;}bool o(long P){try{if(!Й.ContainsKey(P))return џ;Γ=Й[P];if(Γ.C==null)return џ;return Γ.C
  606. .CubeGrid.CubeExists(Γ.C.Position)&&Γ.C.IsFunctional&&!Γ.C.Closed;}catch{}return џ;}bool n(out ȭ Z,string m){string A,D;ə
  607. (m,out A,out D);if(Н.ContainsKey(A)&&Н[A].TryGetValue(D,out Z))return Ѡ;Z=null;return џ;}string l(double k,int j){return
  608. $"{Math.Floor(k*(Math.Pow(10.0,j)))/(Math.Pow(10.0,j))}";}void h(ref StringBuilder Æ,ȭ Z){Æ.Append($"Name={Z.Ȭ}||Category={Ƙ(Z.ĕ)}||Quota={Z.Ʒ}");if(Z.Ʒ>=0&&Z.dz>Z.Ʒ)Æ.
  609. AppendLine($"<{Z.dz}");else Æ.AppendLine();Æ.Append($"^Type={Z.A}||Subtype={Z.D}");if(Ƈ(Z.Ë))Æ.Append(
  610. $"||Blueprint={Z.Ë}||Assembly Multiplier={Z.ǵ}||Assemble={Z.Ǧ}||Disassemble={Z.ǥ}");else if(ž(Z.Ë,"none"))Æ.Append("||Blueprint=None");if(đ(Z.A))Æ.Append($"||Refine={Z.Ǥ}");Æ.Append(
  611. $"||Fuel={Z.ǧ}||Display={Z.ǣ}");if(Z.ǡ||Ó(Z.A,Z.D))Æ.Append($"||Gas={Z.ǡ}");if(Ē(Z.A)||Z.ǟ.Count>0){Æ.Append("||Ore Keys=[");for(int Ç=0;Ç<Z.ǟ.Count;Ç
  612. ++){if(Ç>0)Æ.Append("|");Æ.Append(Z.ǟ[Ç]);}Æ.Append("]");}Æ.AppendLine();}bool Ô(MyInventoryItem F){return Ô(F.Type.TypeId
  613. ,F.Type.SubtypeId);}bool Ô(string A,string D){ȭ Z;if(n(out Z,$"{A}/{D}"))return Z.ǡ;return Ó(A,D);}bool Ó(string A,string
  614. D){return đ(A)&&D=="Ice";}bool Ò(ȝ C,MyDefinitionId Ë,MyAssemblerMode Ñ){IMyAssembler S=(IMyAssembler)C.C;if(!S.Enabled)
  615. return џ;if(!ŧ(ҏ)&&Ë.SubtypeName!=ϖ&&ƕ(Ɠ(S),"survival"))return џ;if((C.Ȓ&&Ñ==ѝ)||(C.ȧ&&Ñ==ў))return џ;return S.CanUseBlueprint
  616. (Ë)&&(S.IsQueueEmpty||S.Mode==Ñ);}string Õ(Ƴ Î){return$"{Ё}/{Î.Ë}";}double Ï(Ƴ Î,bool Í=џ){ȭ Z;if(n(out Z,$"{Î.A}/{Î.D}")
  617. ){if(Í&&Z.DZ<0)return-Z.DZ;else if(!Í&&Z.DZ>0)return Z.DZ;}return 0;}double Ì(MyDefinitionId Ë){if(Ë.SubtypeName==ϖ)return
  618. double.MaxValue;string A,D;if(ď(Ë.SubtypeName,out A,out D))return Ê(A,D);return-1;}double Ê(string A,string D){ȭ Z;if(n(out Z,
  619. $"{A}/{D}"))return Z.ǻ();return 100;}bool É(string È){if(!Ϥ.ContainsKey(È)){Ϥ[È]=new TimeSpan(0);return Ѡ;}return Ϥ[È].
  620. TotalMilliseconds<=0.0;}TimeSpan Ð(double g){return TimeSpan.FromSeconds(g);}double Y(IMyTerminalBlock C){return(double)C.GetInventory(0)
  621. .MaxVolume-(double)C.GetInventory(0).CurrentVolume;}double Q(long P){return(double)Й[P].C.GetInventory(0).CurrentVolume/(
  622. double)Й[P].C.GetInventory(0).MaxVolume;}bool O(double M,double L,double K){return M>L+(L*K);}bool N(double M,double L,double
  623. K){return M<L-(L*K);}Ǔ J(){return new Ǔ{ƪ=this};}bool I(MyInventoryItem F,ȝ C){if(Ĕ(C,F))return џ;string D=F.Type.
  624. SubtypeId;return(đ(F)&&H(F))||Đ(F)||d(F)||(х.Count>0&&Ē(F)&&D=="Stone")||(Ď(F)&&D=="Canvas")||Ô(F);}bool H(MyInventoryItem F){ȭ G
  625. ;if(n(out G,F.Type.ToString()))return G.Ǥ;return Ѡ;}double E(MyInventoryItem F,IMyTerminalBlock C){return E(F.Type.TypeId
  626. ,F.Type.SubtypeId,C);}double E(string A,string D,IMyTerminalBlock C){try{if(C is IMyGasGenerator){if(Ô(A,D))return B(Ũ(Ҟ)
  627. ,A,D,C);}else if(C is IMyRefinery){if(ћ>0)return((double)C.GetInventory(0).MaxVolume/ћ)/e(A,D);}else if(C is
  628. IMyUserControllableGun)return Math.Ceiling(B(Ũ(Ҝ),A,D,C));else if(C is IMyReactor)return B(Ũ(ҝ),A,D,C);else if(C is IMyParachute)return Math.
  629. Ceiling(B(Ũ(қ),A,D,C));}catch{}return double.MaxValue;}double B(double R,string A,string D,IMyTerminalBlock C){if(R<=1.0)return
  630. ((double)C.GetInventory(0).MaxVolume/e(A,D))*R;return R;}double e(string A,string D){try{ȭ G;if(n(out G,$"{A}/{D}")&&G.Dz
  631. !=0.0)return G.Dz;}catch{}return 0.17;}bool d(MyInventoryItem F){ȭ Z;return n(out Z,F.Type.ToString())&&Z.ǧ;}string c(
  632. MyInventoryItem F){return c(F.Type.TypeId,F.Type.SubtypeId);}string c(string A,string D){ȭ Z;if(n(out Z,$"{A}/{D}"))return Z.Ȭ;return D
  633. ;}double f(MyInventoryItem F,IMyTerminalBlock C){return Y(C)/e(F);}bool X(MyInventoryItem F){return F.Type.GetItemInfo().
  634. UsesFractions;}bool W(ȝ V,int U){if(U==0&&V.ȼ)return џ;if(U==1&&V.Ȼ)return џ;IMyTerminalBlock C=V.C;if(V.ȗ||C is IMyRefinery)return U
  635. ==1;if(C is IMyAssembler){IMyAssembler S=(IMyAssembler)C;return(S.IsQueueEmpty||((S.Mode==ў&&U==1)||(S.Mode==ѝ&&U==0)));}
  636. if(C is IMyReactor||C is IMyParachute||C is IMyUserControllableGun||C is IMySafeZoneBlock)return џ;return Ѡ;}bool W(
  637. MyInventoryItem F,ȝ V,int U=0){IMyTerminalBlock C=V.C;if(ю&&ē(F)&&!(C is IMyGasGenerator||C is IMyGasTank))return Ѡ;if(U==0&&(Ĕ(V,F)||Ö
  638. (V,F)||(C is IMyGasGenerator&&(Ô(F)))))return џ;if(C is IMyAssembler){IMyAssembler S=(IMyAssembler)C;return S.
  639. IsQueueEmpty||(U==0&&S.Mode==ѝ)||(U==1&&S.Mode==ў);}if(C is IMyShipWelder&&((IMyShipWelder)C).Enabled&&Ď(F))return џ;return Ѡ;}bool
  640. Ö(ȝ C,MyInventoryItem F){string m=F.Type.ToString(),ĕ;if(C.ș.Contains("all")||C.ș.Contains("*"))return Ѡ;ĕ=ƈ(m);return C.
  641. ș.Contains(ĕ);}bool Ĕ(ȝ C,MyInventoryItem F){return C.Ȳ.ǘ(F)>0;}double e(MyInventoryItem F){return F.Type.GetItemInfo().
  642. Volume;}bool ē(MyInventoryItem F){return ē(F.Type.TypeId);}bool ē(string A){return ž(A,Ї)||ž(A,І);}bool Ē(string A){return A==
  643. "*"||ž(A,Љ)||ž(A,ϝ)||(A.Length>1&&Č(ϝ,A));}bool đ(string A){return A=="*"||ž(A,Њ)||ž(A,Ϝ)||(A.Length>1&&Č(Ϝ,A));}bool Đ(
  644. string A){return A=="*"||ž(A,Ѕ)||ž(A,Ϛ)||(A.Length>1&&Č(Ϛ,A));}bool ď(string Ë,out string A,out string D){Ƴ Î;A="";D="";if(И.
  645. TryGetValue(Ë,out Î)){A=Î.A;D=Î.D;return Ѡ;}return џ;}bool Ď(string A){return A=="*"||ž(A,Ћ)||ž(A,ϛ)||(A.Length>1&&Č(ϛ,A));}bool č(
  646. string A){return A=="*"||ž(A,Ј)||ē(A)||ž(A,Є)||ž(A,Ѓ)||ž(A,Ђ)||ž(A,ϙ)||(A.Length>1&&(Č(Ј,A)||Č(Є,A)||Č(Ѓ,A)||Č(Ђ,A)||Č(ϙ,A)));
  647. }bool Č(string Ė,string ċ){return Ė.Replace(" ","").ToLower().StartsWith(ċ.Replace(" ","").ToLower());}bool Ē(
  648. MyInventoryItem F){return F.Type.GetItemInfo().IsIngot;}bool đ(MyInventoryItem F){return F.Type.GetItemInfo().IsOre;}bool Ď(
  649. MyInventoryItem F){return F.Type.GetItemInfo().IsComponent;}bool č(MyInventoryItem F){return F.Type.GetItemInfo().IsTool||č(F.Type.
  650. TypeId);}bool Đ(MyInventoryItem F){return F.Type.GetItemInfo().IsAmmo;}bool ĥ(string A){return A=="*"||A=="all"||ж.Contains(A.
  651. ToLower());}bool Ĥ(double K=0.95){double ģ=K;if(overheatAverage>0)ģ=Math.Min(ģ,1.0-(Ѫ/(overheatAverage*1.5)));if(ģ<=0)ģ=0.01;
  652. return Runtime.CurrentInstructionCount>=(Runtime.MaxInstructionCount*actionLimiterMultiplier*ģ)||(DateTime.Now-Ϣ).
  653. TotalMilliseconds>=runTimeLimiter*ģ;}bool Ħ(string Ģ,bool ġ=Ѡ){if(ġ)Ϡ=Ģ;bool Ġ,ğ;double Ğ=1.0/(double)ѻ.Length;DateTime ĝ=DateTime.Now,Ĝ;
  654. int ě=Runtime.CurrentInstructionCount;try{Ġ=ˠ[Ģ].MoveNext();ğ=А.Contains(Ģ);Ĝ=DateTime.Now;ϣ[Ģ].ɻ+=Runtime.
  655. CurrentInstructionCount-ě;ϣ[Ģ].Ʉ++;}catch{Ƀ($"Error in function: {Ģ} : {Х[Ģ]}");Ϯ-=Ğ;Ϯ=Math.Max(0,Ϯ);ʘ(Ģ);return Ѡ;}if(Ģ.Length!=0)ϣ[Ģ].Ş+=Ĝ-ĝ;
  656. if(!Ġ||ğ){ϣ[Ģ].ɰ();if(Ϯ>=99.9999)Ϯ=100.0;else{Ϯ+=(100.0-Ϯ)*(0.01/(double)ѻ.Length);Ϯ=Math.Min(Ϯ,100.0);}ʘ(Ģ,!ğ);}return!Ġ
  657. ||ğ;}double Ě(double k,int Û=2){return Math.Round(k,Û);}double ę(ȭ F){if(F.ǩ<=0.0)return 0;return F.ȫ/F.ǩ;}MySprite Ę(
  658. string ė,Color î,Vector2 í,Vector2 ß){return new MySprite(SpriteType.TEXTURE,ė,í+(ß/2f),ß,î);}MySprite ð(string ï,Color î,
  659. Vector2 í,Vector2 ì,TextAlignment ë,string ê,IMyTextSurface é){Vector2 è,ç,æ=ì*0.035f,ß;ß=ì*0.93f;ˡ.Clear();ˡ.Append(ï);ç=é.
  660. MeasureStringInPixels(ˡ,ê,1f);float å=Math.Min(ß.X/ç.X,ß.Y/ç.Y);ç=é.MeasureStringInPixels(ˡ,ê,(float)å);if(ë==ː)è=ƀ(ß.X*0.5f);else è=ƀ();è.Y=
  661. (ß.Y*0.5f)-(ç.Y*0.5f);return new MySprite(SpriteType.TEXT,ï,í+è+æ,ß,î,ê,ë,å);}List<ɭ>ä(float á){List<ɭ>ã=new List<ɭ>{new
  662. ɭ{ė="SquareHollow",ʌ=new Color(0,0,0,180),Ȧ=0.25f},new ɭ{ė="SquareSimple",ʌ=new Color((int)(230f*(1f-(float)á)),(int)(
  663. 230f*(float)á),0,220),Ȧ=0.25f*á}};return ã;}List<MySprite>â(float á,Vector2 à,Vector2 ß){List<MySprite>Þ=new List<MySprite>{
  664. Ę("SquareHollow",new Color(0,0,0,180),à,ß),Ę("SquareSimple",new Color((int)(230f*(1f-(float)á)),(int)(230f*(float)á),0,
  665. 220),à,ƀ(ß.X*á,ß.Y))};return Þ;}string Ý(double k,List<string>Ü,int Û){double Ú=1,Ù=Math.Abs(k);int P=-1,Ø=-1;while(k>=Ú*
  666. 1000.0&&P+1<Ü.Count){Ú*=1000.0;P++;if(Ü[P].Length>0)Ø=P;}Ù/=Math.Pow(1000,Ø+1);if(Ø>=0)return$"{l(Ù,Û)}{Ü[Ø]}";else return l(Ù
  667. ,Û);}string ñ(double k,List<string>ĉ=null,int Û=2,int Ĉ=0,bool ć=Ѡ){List<string>Ü=new List<string>();if(ĉ==null)Ü.
  668. AddRange(П[ѣ]);else Ü.AddRange(ĉ);string Ć="";if(k<0)Ć="-";if(ć)return$"{Ć}{Ý(Math.Abs(k),Ü,Û)}".PadLeft(Ĉ);return
  669. $"{Ć}{Ý(Math.Abs(k),Ü,Û)}".PadRight(Ĉ);}string ą(IMyTextSurface é,string Ą){List<string>ă=new List<string>();é.GetFonts(ă);for(int Ç=0;Ç<ă.Count;Ç
  670. ++){if(ž(Ą,ă[Ç])){return ă[Ç];}}return"Monospace";}bool Ă(out Color ā,string Ċ){ā=Color.White;try{string[]Ā=Ċ.Split(':');
  671. if(Ā.Length==4)ā=new Color(int.Parse(Ā[0]),int.Parse(Ā[1]),int.Parse(Ā[2]),int.Parse(Ā[3]));else if(Ā.Length==3)ā=new
  672. Color(int.Parse(Ā[0]),int.Parse(Ā[1]),int.Parse(Ā[2]));else return џ;return Ѡ;}catch{}return џ;}void ÿ(List<ʊ>þ,List<ʊ>ý){try
  673. {þ.Clear();foreach(ʊ ü in ý)þ.Add(ü.ǔ());}catch{Ƀ("Error cloning panel objects");}}string û(string ú,int ù){string ø=ú;if
  674. (ù>0)ø+=$" -({ñ(ù)})";return ø;}static List<long>ö(int õ=200){return new List<long>(õ);}void ô(){ϥ=Runtime.
  675. TimeSinceLastRun;Ƌ(ref ϧ);Ƌ(ref Ϧ);try{for(int Ç=0;Ç<Ϥ.Count;Ç++)Ϥ[Ϥ.Keys[Ç]]=Ƌ(Ϥ.Values[Ç]);}catch{}}void ó(ref ȭ Z){Z.ó();if(Z.ǟ.Count
  676. >0)У[Z.ǹ()]=Z.D;else У.Remove(Z.ǹ());}void ò(string ĕ){if(!ж.Contains(ĕ))ж.Add(ĕ);if(!М.ContainsKey(ĕ))М[ĕ]=ö();}void ɠ(
  677. ref StringBuilder Æ,string ɟ){string Ć="",ɞ="",ɝ="",ɜ="";for(int Ç=0;Ç<ɟ.Length;Ç++){Ć+="/";ɞ+=@"\";ɝ+=" ";ɜ+="|";}Æ.
  678. AppendLine();Æ.AppendLine($"{Ć}{ɝ}{ɞ}");Æ.AppendLine($"{ɜ} {ɟ} {ɜ}");Æ.AppendLine($"{ɞ}{ɝ}{Ć}");Æ.AppendLine();}void ɛ(int[]ɚ){
  679. for(int Ç=0;Ç<ɚ.Length;Ç++)ʘ(ѻ[ɚ[Ç]]);}void Ƌ(ref TimeSpan Ş){Ş=Ƌ(Ş);}void ə(string m,out string A,out string D){int P=m.
  680. IndexOf("/");A=m.Substring(0,P);D=m.Substring(P+1);}void ɘ(){ϗ="Idle";}void ɗ(string ï){ϕ=ï;ϡ=DateTime.Now.AddSeconds(15);}void
  681. ɖ(string u,string ɕ){Ǔ Ŵ;double M,Ɍ;ɧ(ɕ,out M,out Ɍ);if(О.TryGetValue(u.ToLower(),out Ŵ)){int õ=Ŵ.nj();for(int Ç=0;Ç<õ;Ç++
  682. )ɔ(Ŵ.Ǘ(Ç),M,Ɍ);}}void ɔ(string m,double M,double Ɍ){string ɩ,D;ə(m,out ɩ,out D);ɔ(ɩ,D,M,Ɍ);}void ɔ(string A,string D,
  683. double M,double Ɍ){ȭ Z;if(n(out Z,$"{A}/{D}"))ɡ(Z,M,Ɍ);}void ɨ(string u,string ɕ){if(u.Length>0){double M,Ɍ;ɧ(ɕ,out M,out Ɍ);
  684. if(ĥ(u)){if(u=="*"||u=="all")ɦ(M,Ɍ,"","");else ɦ(M,Ɍ,"",u);}else ɦ(M,Ɍ,u);}}void ɧ(string Ō,out double M,out double Ɍ){int
  685. P=Ō.IndexOf("<");if(P>0){M=double.Parse(Ō.Substring(0,P));Ɍ=double.Parse(Ō.Substring(P+1));}else{M=double.Parse(Ō);Ɍ=M;}}
  686. void ɦ(double M,double Ɍ,string ɥ="",string ĕ=""){List<ȭ>ɤ=ƚ();string ɣ=ɥ.Replace(" ","");bool ɢ=џ;if(ɣ.Length>2){if(ɣ.
  687. StartsWith("'")&&ɣ.EndsWith("'")){ɢ=Ѡ;ɣ=ɣ.Substring(1,ɣ.Length-2);}}for(int Ç=0;Ç<ɤ.Count;Ç++){if((ĕ.Length==0||ž(ĕ,ɤ[Ç].ĕ))&&(ɣ.
  688. Length==0||(!ɢ&&Č(ɤ[Ç].Ȭ,ɣ))||(ɢ&&ž(ɤ[Ç].Ȭ.Replace(" ",""),ɣ))))ɡ(ɤ[Ç],M,Ɍ);}}void ɡ(ȭ Z,double M,double ɒ){double Ɍ=ɒ+Z.Ƿ;Z.Ʒ
  689. =M;Z.dz=Ɍ;if(Z.dz<M)Z.dz=M;if(Z.dz<0)Z.dz=0;Z.Ǽ();}void ɋ(MyInventoryItem F){string D=F.Type.SubtypeId,m=F.Type.ToString(),Ɋ=D
  690. ;if(Ɏ(D,D,F.Type.TypeId,""))ѐ=Ѡ;if(Ē(F)||đ(F))return;if(д.Contains(Ɋ)||Ɔ(F,ref Ɋ)){if(ʖ(m,Ɋ)){ɗ(
  691. $"Merged Mod Item: {v(D,15)}");ѐ=Ѡ;}}else if(!Ф.ContainsKey(m))Ф[m]=D;}void ɉ(MyProductionItem Î){string D=ƒ(Î),Ɉ="";if(Ƅ(Î,ref Ɉ)){if(ʖ(Ɉ,D)){ɗ(
  692. $"Merged Mod Item: {v(Ɉ,15)}");ѐ=Ѡ;}}else if(!д.Contains(D))д.Add(D);}void ɇ(){while(ˠ.Count>0)ʘ(ˠ.Keys[0]);}void Ɇ(){if(ѓ>0){if(Ѻ==null||Ѻ.Length!=ѓ
  693. ){Ѻ=new double[ѓ];њ=0;for(int Ç=0;Ç<Ѻ.Length;Ç++)Ѻ[Ç]=-1;}Ѻ[њ]=Runtime.LastRunTimeMs;њ++;if(њ>=Ѻ.Length)њ=0;double Ʌ=0,Ʉ=
  694. 0;for(int Ç=0;Ç<Ѻ.Length;Ç++){if(Ѻ[Ç]!=-1){Ʌ+=Ѻ[Ç];Ʉ++;}}ҍ=Ʌ/Ʉ;}else{if(Ѻ!=null)Ѻ=null;ҍ=0;}ѫ+=Runtime.LastRunTimeMs*ѩ;ѫ
  695. *=1.0-ѩ;Ѫ=Math.Max(ҍ,ѫ);}void Ƀ(string Ɂ){if(Ɂ.Length!=0){if(Č(Ɂ,"Error")){ј++;ї++;ɂ(Ɂ,ref Щ);ɗ(Ɂ);}ɂ(Ɂ,ref Џ,ђ);}}void ɂ(
  696. string Ɂ,ref List<ɽ>ý,int Ű=30){bool ɀ=Ѡ;for(int Ç=0;Ç<ý.Count;Ç++){if(ý[Ç].ï==Ɂ){ý[Ç].õ++;ý.Move(Ç,0);ɀ=џ;break;}}if(ɀ)ý.
  697. Insert(0,new ɽ{ï=Ɂ});if(ý.Count>Ű)ý.RemoveRange(Ű,ý.Count-Ű);}void ȿ(IEnumerator<bool>Ⱦ,string Ģ){ˠ[Ģ]=Ⱦ;if(!ϣ.ContainsKey(Ģ))
  698. ϣ[Ģ]=new ʙ();Х[Ģ]="Initialize";}void ɍ(){Runtime.UpdateFrequency=UpdateFrequency.None;Runtime.UpdateFrequency&=~
  699. UpdateFrequency.Update1;Runtime.UpdateFrequency&=~UpdateFrequency.Update10;Runtime.UpdateFrequency&=~UpdateFrequency.Update100;if(є==
  700. 100)Runtime.UpdateFrequency=UpdateFrequency.Update100;else if(є==1)Runtime.UpdateFrequency=UpdateFrequency.Update1;else
  701. Runtime.UpdateFrequency=UpdateFrequency.Update10;}void Ƚ(string Ë,bool ɓ,double M,bool ǿ){Ƴ Î;if(И.TryGetValue(Ë,out Î))Ƚ(Î.A,Î
  702. .D,ɓ,M,ǿ);}void Ƚ(MyProductionItem F,bool ɓ,bool ǿ=џ){if(И.ContainsKey(ƒ(F))){Ƴ Î=И[ƒ(F)];Ƚ(Î.A,Î.D,ɓ,(double)F.Amount,ǿ)
  703. ;}}void Ƚ(string A,string D,bool ɓ,double M,bool ǿ){ȭ Z;if(n(out Z,$"{A}/{D}")){if(ɓ)Z.ȁ((MyFixedPoint)M,ǿ);else Z.Ȁ((
  704. MyFixedPoint)M,ǿ);}}void Ȃ(MyInventoryItem F,bool ǿ=џ){ȭ Z;if(n(out Z,F.Type.ToString())){Z.Ȃ(F.Amount,ǿ);if(Z.Dz==0){Z.Dz=F.Type.
  705. GetItemInfo().Volume;Z.Ǡ=X(F);}}}void ɑ(ȝ ª){IMyTerminalBlock C=ª.C;bool ɐ=џ,ȥ=ª.ȥ,ɏ;if(C is IMyAssembler)((IMyProductionBlock)C).
  706. UseConveyorSystem=Ѡ;else if(C is IMyRefinery)((IMyProductionBlock)C).UseConveyorSystem=ȥ||ŧ(Ҵ);else if(C is IMyReactor)((IMyReactor)C).
  707. UseConveyorSystem=ȥ||ŧ(ҳ);else if(C is IMyGasGenerator)((IMyGasGenerator)C).UseConveyorSystem=ȥ||ŧ(Ҳ);else if(C is IMySmallGatlingGun){ɏ=
  708. ((IMySmallGatlingGun)C).UseConveyorSystem;if(ȥ||ŧ(ұ))ɐ=!ɏ;else ɐ=ɏ;}else if(C is IMyLargeGatlingTurret){ɏ=((
  709. IMyLargeGatlingTurret)C).UseConveyorSystem;if(ȥ||ŧ(ұ))ɐ=!ɏ;else ɐ=ɏ;}else if(C is IMyLargeMissileTurret){ɏ=((IMyLargeMissileTurret)C).
  710. UseConveyorSystem;if(ȥ||ŧ(ұ))ɐ=!ɏ;else ɐ=ɏ;}else if(C is IMySmallMissileLauncherReload){ɏ=((IMySmallMissileLauncherReload)C).
  711. UseConveyorSystem;if(ȥ||ŧ(ұ))ɐ=!ɏ;else ɐ=ɏ;}else if(C is IMySmallMissileLauncher){ɏ=((IMySmallMissileLauncher)C).UseConveyorSystem;if(ȥ||
  712. ŧ(ұ))ɐ=!ɏ;else ɐ=ɏ;}if(ɐ)C.ApplyAction("UseConveyor");}bool Ɏ(string u,string D,string A,string Ë="None",bool ǣ=Ѡ,List<
  713. string>ǟ=null){if(!Н.ContainsKey(A))Н[A]=new SortedList<string,ȭ>();if(!Н[A].ContainsKey(D)){Н[A][D]=new ȭ{A=A,D=D,Ȭ=u,Ë=Ë,ǣ=ǣ
  714. };ʗ($"{A}/{D}",Ë,ǟ);return Ѡ;}return џ;}void ʗ(string m,string Ë,List<string>ǟ=null){ȭ Z;if(n(out Z,m)){if(Ē(Z.A)){Z.Ʒ=
  715. 100;Z.dz=100;if(Z.D=="Uranium")Z.ǧ=Ѡ;}Z.ĕ=ƈ(Z.ǹ());if(Ó(Z.A,Z.D)){Z.ǡ=Ѡ;Z.Ǥ=џ;}else if(đ(Z.A))Z.Ǥ=Ѡ;ʖ(m,Ë,ǟ);}}bool ʖ(string
  716. m,string Ë="",List<string>ǟ=null){ȭ Z;if(n(out Z,m)){if(Ē(Z.A)&&Z.ǟ.Count==0)Z.ǟ.Add(Z.D);if(ǟ!=null)Z.ǟ.AddRange(ǟ);ó(
  717. ref Z);if(Ƈ(Z.Ë))И.Remove(Z.Ë);Z.Ë=Ë;if(Ƈ(Ë))И[Ë]=ŷ(Z);string ĕ=Z.ĕ;Д[Z.ǹ()]=ĕ;ò(ĕ);ʕ(Z);return Ѡ;}return џ;}void ʕ(ȭ Z){if
  718. (!Ē(Z.A)&&!đ(Z.A)&&Z.Ë.Length==0){if(!Ф.ContainsKey(Z.ǹ()))Ф[Z.ǹ()]=Z.D;}else Ф.Remove(Z.ǹ());if(Ƈ(Z.Ë))д.Remove(Z.Ë);}
  719. void ʘ(string Ģ,bool ʔ=Ѡ){if(ʔ){try{ˠ[Ģ].Dispose();}catch{}try{ˠ[Ģ]=null;}catch{}ˠ.Remove(Ģ);}Х.Remove(Ģ);А.Remove(Ģ);}void
  720. ʓ(ref Ǔ Ŵ,bool ʑ=Ѡ,bool ʐ=џ){if(Ŵ==null)Ŵ=J();else Ŵ.ǐ(ʑ,ʐ);}void ʒ(ȝ C,bool ʑ=Ѡ,bool ʐ=џ){ʓ(ref C.ȳ,ʑ,ʐ);ʓ(ref C.Ȳ,ʑ,ʐ);
  721. }void ʏ(StringBuilder Æ,string ʎ){Æ.AppendLine($"//{ʎ}");}void ʍ(ȝ ķ,int w=0){ƫ Ĭ=ķ.ț[w];string ʣ=Ĭ.ȟ();if(!Г.Contains(ʣ)
  722. ){Г.Add(ʣ);IMyTextSurface é=Ĭ.Ȣ();if(é.ContentType!=ContentType.SCRIPT)é.ContentType=ContentType.SCRIPT;if(é.Script!=
  723. "None")é.Script="None";if(é.ScriptForegroundColor==ˢ){é.ScriptForegroundColor=Color.Black;é.ScriptBackgroundColor=new Color(73
  724. ,141,255,255);}}}void ʢ(ƫ Ĭ,string ï){Ĭ.Ʊ(ï.PadRight(Ĭ.Ƣ));}void ʡ(long P,ref int ń,ref int ļ,ref int ĺ,ref int ù,
  725. SortedList<string,int>ľ,SortedList<string,int>Ľ){IMyTerminalBlock C=Й[P].C;MyInventoryItem F;MyProductionItem ʠ;string ō;if(!o(P)
  726. ||!((IMyFunctionalBlock)C).Enabled){ù++;return;}if(C is IMyAssembler){IMyAssembler S=(IMyAssembler)C;if(S.IsQueueEmpty)ĺ++
  727. ;else{List<MyProductionItem>ʟ=Ɩ();S.GetQueue(ʟ);ʠ=ʟ[0];ō=ƒ(ʠ);if(И.ContainsKey(ō)){Ƴ Î=И[ō];ō=c(Î.A,Î.D);}if(S.Mode==ў){ń
  728. ++;if(!ľ.ContainsKey(ō))ľ[ō]=(int)ʠ.Amount;else ľ[ō]+=(int)ʠ.Amount;}else{ļ++;if(!Ľ.ContainsKey(ō))Ľ[ō]=(int)ʠ.Amount;else
  729. Ľ[ō]+=(int)ʠ.Amount;}}}else if(C is IMyRefinery){if(C.GetInventory(0).ItemCount==0)ĺ++;else{ń++;F=(MyInventoryItem)C.
  730. GetInventory(0).GetItemAt(0);ō=c(F);if(!ľ.ContainsKey(ō))ľ[ō]=(int)(F).Amount;else ľ[ō]+=(int)(F).Amount;}}else if(C is
  731. IMyGasGenerator){if(C.GetInventory(0).ItemCount>0){F=(MyInventoryItem)C.GetInventory(0).GetItemAt(0);ō=c(F);if(!ľ.ContainsKey(ō))ľ[ō]=(
  732. int)F.Amount;else ľ[ō]+=(int)F.Amount;if(Ô(F))ń++;else ĺ++;}else ĺ++;}}void ʏ(StringBuilder ʞ,StringBuilder ƍ,string ʝ,bool
  733. ʜ){if(ʜ){if(ʞ[ʞ.Length-1]!='=')ʞ.Append("|");ʞ.Append(Ƙ(ʝ));}else{if(ƍ.Length>0)ƍ.Append("|");else ƍ.Append("//");ƍ.
  734. Append(Ƙ(ʝ));}}void ʛ(ref bool ʚ,string ō,List<string>Ŕ){ʚ=Ŕ.Contains(ō);}class ʙ{public int Ʉ=0,ɻ=0,ʃ=0,ɺ=0,ɹ=0,ɸ=0,ɷ=0,ɶ=0,ɵ
  735. =0;public double ɴ=0,ɳ=0,ɲ;public TimeSpan Ş=new TimeSpan(0),ɱ=new TimeSpan(0);public void ɰ(){bool ɯ=ɹ==0;ɹ++;ʃ=Ʉ;Ʉ=0;ɺ=
  736. ɻ;ɻ=0;ɲ=Ş.TotalMilliseconds;Ş-=Ş;if(ɯ){ɸ=ɷ=ʃ;ɶ=ɵ=ɺ;ɴ=ɳ=ɲ;}else{ɸ=Math.Min(ɸ,ʃ);ɷ=Math.Max(ɷ,ʃ);ɶ=Math.Min(ɶ,ɺ);ɵ=Math.Max
  737. (ɵ,ɺ);ɴ=Math.Min(ɴ,ɲ);ɳ=Math.Max(ɳ,ɲ);}}}class ɮ{public DateTime DŽ=DateTime.Now.AddSeconds(1);public List<ʊ>þ=new List<ʊ>
  738. (),ƨ=new List<ʊ>();}class ɭ{public string ɬ="",ï="",ė="";public double ɫ=0,ɪ=0,R=0,ƶ=0,Ƶ=0,ƴ=0;public TextAlignment ë=ˑ;
  739. public float Ȧ=-1;public bool ȣ=џ;public Color ʌ=Color.White;public ɭ ǔ(){ɭ Š=new ɭ(){ɬ=ɬ,ï=ï,ė=ė,ɫ=ɫ,ɪ=ɪ,R=R,ƶ=ƶ,Ƶ=Ƶ,ƴ=ƴ,ë=ë,
  740. Ȧ=Ȧ,ȣ=ȣ,ʌ=new Color(ʌ,ʌ.A)};return Š;}}class ʊ{public double ʉ=0;public string ʈ="SquareSimple",ʇ="";public bool F=џ;
  741. public List<ɭ>ʆ=new List<ɭ>();public ʊ ǔ(){ʊ ü=new ʊ{ʉ=ʉ,ʈ=ʈ,ʇ=ʇ,F=F};foreach(ɭ Š in ʆ)ü.ʆ.Add(Š.ǔ());return ü;}}class ʅ{
  742. public MyAssemblerMode Ñ;public SortedList<string,double>ʋ=new SortedList<string,double>();public DateTime ʄ=DateTime.Now;
  743. public float ʂ=0f;public IMyAssembler S;public bool ʁ=џ;public bool ʀ(double ɿ){try{if(DateTime.Now<ʄ)return џ;bool Ɛ=S.
  744. Enabled&&!S.IsQueueEmpty&&S.CurrentProgress==ʂ&&S.Mode==Ñ;if(!Ɛ){ʋ.Clear();ʁ=џ;ʄ=DateTime.Now.AddSeconds(5);}else ʄ=DateTime.
  745. Now.AddSeconds(ɿ);Ñ=S.Mode;ʂ=S.CurrentProgress;return Ɛ;}catch{}return џ;}public void ɾ(){ʁ=џ;ʋ.Clear();ʄ=DateTime.Now.
  746. AddSeconds(5);}}class ɽ{public string ï="";public int õ=1;public string Ƀ(){if(õ>1)return$"{ï} x{õ}";else return ï;}}class ɼ{
  747. public double M=0;public string ō="",ï="";public int ǖ=0;}class Ƴ{public string Ë="",A="",D="";public double M=0,K=1;public Ƴ
  748. ǔ(){return new Ƴ{Ë=Ë,A=A,D=D,M=M,K=K};}}class Ǔ{public Program ƪ;public SortedList<string,double>ǒ=new SortedList<string,
  749. double>(),Ǒ=new SortedList<string,double>();public Ǔ(Ǔ Ʒ){ƪ=Ʒ.ƪ;Ǎ(Ʒ);}public Ǔ(){}public void ǐ(bool Ǐ=Ѡ,bool ǎ=џ){if(Ǐ)ǒ.
  750. Clear();if(ǎ)Ǒ.Clear();}public void Ǎ(Ǔ Ŵ){foreach(KeyValuePair<string,double>Ĺ in Ŵ.ǒ){if(!ǒ.ContainsKey(Ĺ.Key))ǒ[Ĺ.Key]=Ĺ.
  751. Value;else ǒ[Ĺ.Key]+=Ĺ.Value;}foreach(KeyValuePair<string,double>Ĺ in Ŵ.Ǒ){if(!Ǒ.ContainsKey(Ĺ.Key))Ǒ[Ĺ.Key]=Ĺ.Value;else Ǒ[Ĺ
  752. .Key]+=Ĺ.Value;}}public int nj(){return ǒ.Count+Ǒ.Count;}public ȭ Nj(int P){if(P<nj())return NJ(P);return new ȭ();}public ȭ NJ
  753. (int P){string A,D;int Ǖ=P;double M;if(Ǖ<ǒ.Count){ƪ.ə(ǒ.Keys[Ǖ],out A,out D);M=ǒ.Values[Ǖ];}else{Ǖ-=ǒ.Count;ƪ.ə(Ǒ.Keys[Ǖ]
  754. ,out A,out D);M=Ǒ.Values[Ǖ];}return new ȭ{A=A,D=D,ȫ=M};}public string Ǘ(int P){int Ǖ=P;if(Ǖ<ǒ.Count)return ǒ.Keys[Ǖ];else
  755. {Ǖ-=ǒ.Count;return Ǒ.Keys[Ǖ];}}public void Ǜ(string A,string D,double M,bool ǜ=Ѡ,bool Ǐ=Ѡ){if(Ǐ)ǚ(A,D,M,ǜ,ǒ);else if(!ǒ.
  756. ContainsKey($"{A}/{D}"))ǚ(A,D,M,ǜ,Ǒ);}public void Ǜ(MyInventoryItem F){Ǜ(F.Type.TypeId,F.Type.SubtypeId,(double)F.Amount);}public
  757. void ǚ(string A,string D,double M,bool ǜ,SortedList<string,double>ý){string m=$"{A}/{D}";if(!ǜ||!ý.ContainsKey(m))ý[m]=M;
  758. else ý[m]+=M;}public double ǘ(MyInventoryItem F){bool Ǚ;return ǘ(out Ǚ,F);}public double ǘ(string A,string D){bool Ǚ;return
  759. ǘ(out Ǚ,A,D);}public double ǘ(out bool ĩ,MyInventoryItem F){return ǘ(out ĩ,F.Type.TypeId,F.Type.SubtypeId);}public double
  760. ǘ(out bool ĩ,string A,string D){ĩ=Ѡ;double õ;string m=$"{A}/{D}";if(ǒ.TryGetValue(m,out õ)||Ǒ.TryGetValue(m,out õ))return
  761. õ;ĩ=џ;return 0;}}class ư{public string A="",ħ="",Å="";public string Ư(){return$"{A}{ħ}{Å}";}}class Ʈ{public long P;public
  762. bool ƭ,Ƭ;}class ƫ{public ȝ ƪ;public List<MySprite>Ʃ=new List<MySprite>();public List<ʊ>þ=new List<ʊ>(),ƨ=new List<ʊ>(),ŝ=new
  763. List<ʊ>(),Ƨ=new List<ʊ>();public List<string>Ʀ=new List<string>(),Ü;public List<Ǻ>ƥ=new List<Ǻ>();public int Û=2,Ƥ=-1,ƣ=1,Ƣ=
  764. 18,w=0;public double ơ=1,Ơ=0,Ɵ=double.MaxValue;public bool Ş=џ,ƞ=џ,Ʋ=џ,lj=Ѡ,Lj=џ;public Ή LJ=Ή.Έ;public ͺ dž=ͺ.Ͳ;public ΐ Dž=ΐ.
  765. Λ;public DateTime DŽ=DateTime.Now;public Ǔ ǃ;public Color ǂ=Color.Black,ǁ=Color.Black,ǀ=Color.GhostWhite;public Vector2 ß=
  766. new Vector2(1,1),ƿ=new Vector2(0,0);public string ê="Monospace",ƾ="",ņ="",ƽ="",Ƽ="";public void ƻ(List<ɭ>ý){þ[þ.Count-1].ʆ.
  767. AddRange(ý);}void ƺ(bool ƹ=џ,bool F=џ){if(ƹ)ƨ.Add(new ʊ{F=F});else þ.Add(new ʊ());}public void Ƹ(string u,double M,double Ʒ,
  768. double ƶ,double Ƶ,double ƴ){ƺ(Ѡ,Ѡ);ƨ[ƨ.Count-1].ʇ=u.Trim();if(LJ==Ή.ͼ||LJ==Ή.ͻ){if(Ʒ>0)ƨ[ƨ.Count-1].ʉ=M/Ʒ;else ƨ[ƨ.Count-1].ʉ=0;
  769. }ƨ[ƨ.Count-1].ʆ.Add(new ɭ{ɫ=M,ɬ=u,ɪ=Ʒ,ƶ=ƶ,Ƶ=Ƶ,ƴ=ƴ});}public void Ʊ(string ï,bool ƹ=џ,float Ȧ=1f,bool Ȥ=Ѡ,bool ȣ=џ,
  770. TextAlignment ë=ˑ){if(Ȥ)ƺ(ƹ);if(ƹ)ƨ[ƨ.Count-1].ʆ.Add(new ɭ{ï=ï,Ȧ=Ȧ,ȣ=ȣ,ë=ë});else þ[þ.Count-1].ʆ.Add(new ɭ{ï=ï,Ȧ=Ȧ,ȣ=ȣ,ë=ë});}public
  771. IMyTextSurface Ȣ(){if(!Lj)return(IMyTextPanel)ƪ.C;return((IMyTextSurfaceProvider)ƪ.C).GetSurface(w);}public string ȡ(){if(Lj){
  772. IMyTextSurface é=Ȣ();StringBuilder Æ=new StringBuilder();é.ReadText(Æ);return Æ.ToString();}return ƪ.C.CustomData;}public void Ƞ(
  773. string ï){if(Lj){IMyTextSurface é=Ȣ();StringBuilder Æ=new StringBuilder(ï);é.WriteText(Æ);}else ƪ.C.CustomData=ï;}public string
  774. ȟ(){string Ȟ=ƪ.C.EntityId.ToString();if(Lj)Ȟ+=$":{w}";return Ȟ;}}class ȝ{public Program ƪ;public IMyTerminalBlock C;public
  775. ʅ Ȝ;public SortedList<int,ƫ>ț=new SortedList<int,ƫ>();public List<ư>Ț=new List<ư>();public List<string>ș=new List<string>
  776. ();public bool Ș=џ,ȗ=џ,Ȗ=џ,Ǐ=Ѡ,ȕ=џ,Ȕ=џ,ȓ=џ,ȥ=џ,Ȓ=џ,ȧ=џ,ȼ=џ,Ȼ=џ,Ⱥ=џ,ȹ=џ,ȸ=џ,ȷ=џ,ȶ=џ,ȵ=џ,ȴ=џ;public Ǔ ȳ,Ȳ;public double ȱ=1
  777. ;public string Ƽ="";public string ȡ(){return C.CustomData;}public void Ƞ(string ï){C.CustomData=ï;}}class ȯ{public double
  778. õ=0,ļ=0;public DateTime Ȯ=DateTime.Now;}class ȭ{public string A="",D="",Ë="",Ȭ="",ĕ="";public double ȫ=0,Ȫ=0,ȩ=0,Ȩ=0,Ȱ=0,
  779. ȑ=0,Ʒ=0,ƴ=0,Ƿ=0,Ƕ=1,ǵ=1,Ǵ=0,dz=0,Dz=0,DZ=0,ǰ=0,ǯ=0,Ǯ=0,ǭ=0,Ǭ=0,ǫ=0,Ǫ=0,ǩ=0,Ǩ=0;public bool ǧ=џ,Ǧ=Ѡ,ǥ=Ѡ,Ǥ=Ѡ,ǣ=Ѡ,Ǣ=џ,ǡ=џ,Ǡ=Ѡ;
  780. public List<string>ǟ=new List<string>();public List<ȯ>Ǟ=new List<ȯ>();public DateTime Ǹ=DateTime.Now,ǝ=DateTime.Now;public
  781. string ǹ(){return A+"/"+D;}public void ó(){if(ǟ.Count>0)ǟ=ǟ.Distinct().ToList();}public void ȏ(double Ȏ,bool ȍ,double Ȍ,double
  782. ȋ,double Ȋ,bool ȉ){ȫ=Ȩ;Ȩ=0;if(DateTime.Now>=Ǹ){Ǟ.Add(new ȯ{õ=ȫ,Ȯ=DateTime.Now,ļ=ȩ});Ǹ=DateTime.Now.AddSeconds(1.25);if(Ǟ.
  783. Count>12)Ǟ.RemoveRange(0,Ǟ.Count-12);}double Ȉ=Math.Min(20,(DateTime.Now-Ǟ[0].Ȯ).TotalSeconds+0.0001),ȇ=(DateTime.Now-ǝ).
  784. TotalSeconds,Ȇ,ȅ=0,Ȅ=Math.Max(Ǟ[0].ļ,ȩ);if(Ǟ.Count>1&&Ȉ==20)Ǟ.RemoveAt(0);bool ȃ=ȫ<1.0;if(Ȉ>0)ƴ=(ȫ-Ǟ[0].õ)/Ȉ;else ƴ=0;Ȇ=ƴ;if(Ʒ>0)ȅ+=
  785. Ʒ;if(Ƿ>0)ȅ+=Ʒ;if(ȍ&&ȅ>0){if(ȇ>=1){if(ȉ&&ȃ)Ȇ-=ȅ*0.001;if(!ȃ&&Ȇ==0.0)Ȇ+=ȅ*0.1;if(Ȅ>=1)Ȇ=ȅ*0.005;if(ȫ>=ȅ)Ȇ=ȅ*0.15;Ǵ+=((Ȇ/ȅ)*
  786. Ȉ)*Math.Min(2.5,ȇ);if(Ǵ<=-Ȍ){Ƕ+=Ȋ;if(Ƕ>Ȏ)Ƕ=Ȏ;Ǵ=0;}else if(Ǵ>=ȋ){Ƕ-=Ȋ;if(Ƕ<1)Ƕ=1;Ǵ=0;}ǝ=DateTime.Now;}}else{Ƕ=1;ǝ=DateTime
  787. .Now;Ǵ=ȋ*0.95;}Ǽ();}public void Ȑ(){Ȫ=Math.Floor(Ȱ);ȩ=Math.Floor(ȑ);Ȱ=0;ȑ=0;}public void Ȃ(MyFixedPoint M,bool ǿ){if(ǿ)Ȩ
  788. +=(double)M;else Ȩ+=(double)M;}public void ȁ(MyFixedPoint M,bool ǿ){if(ǿ)Ȫ+=(double)M;else Ȱ+=(double)M;}public void Ȁ(
  789. MyFixedPoint M,bool ǿ){if(ǿ)ȩ+=(double)M;else ȑ+=(double)M;}public void Ǿ(double ǽ){Ǫ=0;DZ=0;ǭ=0;Ǭ=0;ǯ=Ȫ*ǵ;Ǯ=ȩ;Ǩ=ȫ+(ǯ)-(Ǯ);Ǽ();if(Ë.
  790. Length>0&&Ë!="None"){if(ǰ<0)ǫ=0;else{if(dz>ǰ)ǫ=dz;else if(ǰ>0)ǫ=Math.Floor(ǰ*(1.0+ǽ));else ǫ=double.MaxValue;}if(!Ǣ){if(ǯ>0&&ȫ+ǯ
  791. >ǫ)ǭ=(ȫ+ǯ)-ǫ;if(Ǯ>0&&ȫ-Ǯ<ǰ)Ǭ=ǰ-(ȫ-Ǯ);}else{ǭ=Ȫ;if(Ǯ>0&&Ǯ>ȫ)Ǭ=Ǯ-ȫ;}if(ǭ>0)ǭ=Math.Floor(ǭ/ǵ);if(Ǯ>0&&Ǯ<ǵ)Ǭ=Ǯ;if(!Ǧ)ǭ=0;if(!
  792. ǥ)Ǭ=0;if(Ǣ){if(Ǩ>0)DZ=-Ǩ;}else{if(ǰ==0)DZ=0;else{if(Ǩ<ǰ)DZ=ǰ-Ǩ;else if(Ǩ>ǫ)DZ=ǫ-Ǩ;}}if(DZ>0)DZ=Math.Ceiling(DZ/ǵ);else if(DZ<0){
  793. if(Math.Abs(DZ)<ǵ)DZ=0;else DZ=Math.Floor(Math.Abs(DZ)/ǵ)*-ǵ;}if(DZ>0)Ǫ=DZ;if(DZ>0&&(Ǯ>0||!Ǧ))DZ=0;if(DZ<0&&(ǯ>0||!ǥ))DZ=0;}}public
  794. void Ǽ(){ǰ=0;if(Ʒ>0)ǰ+=Ʒ;if(Ƿ>0)ǰ+=Ƿ;Ǣ=ǰ==0&&Ʒ<0;if(!Ǣ&&ǰ>0)ǰ*=Ƕ;ǰ=Math.Floor(ǰ);ǩ=ǰ;if(Ǣ)ǩ=-1;}public double ǻ(){if(ǰ==0)
  795. return 100;return(ȫ/ǰ)*100.0;}}class Ǻ{public long P;public int w=0;}
Add Comment
Please, Sign In to add comment