void ː(){
	ʮ.Clear();
	GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(ʮ,È=>È.IsSameConstructAs(Me)&&È.CustomName.Contains(autocraftingKeyword));
	if(ʮ.Count==0)return;
	if(ʾ.Count==0){
		Ƽ("No usable assemblers found!\nBuild or enable assemblers to enable autocrafting!");
		return;
	}
	if(!enableAutocrafting&&!enableAutodisassembling)return;
	Π();
	List<MyDefinitionId>Έ=new List<MyDefinitionId>();
	var Ά=ϲ().ToString().TrimEnd('\n').Split('\n');StringBuilder Ƨ=new StringBuilder();
	foreach(var Ê in Ά){
		string C="";
		bool ͽ=true;
		if(Ê.StartsWith("-")){
			ͽ=false;
			try{
				C=Ê.Substring(1,Ê.IndexOf("=")-1);
			}
			catch{
				continue;
			}
		}
		else{
			try{
				C=Ê.Substring(0,Ê.IndexOf(" "));
			}
			catch{
				continue;
			}
		}
		MyDefinitionId F=Ƕ(C);
		if(F==null)continue;
		bool ͼ;
		MyDefinitionId á=Ǹ(F,out ͼ);
		if(!ͼ&&!showUnlearnedItems)continue;
		double ͺ=Math.Ceiling(f(F));
		string ͷ=Ê.Substring(Ê.IndexOfAny(Ɍ)+1).ToLower().Replace(" ","");
		double Ͷ=0;
		int ʹ=1;
		double.TryParse(System.Text.RegularExpressions.Regex.Match(ͷ,@"\d+").Value,out Ͷ);
		string ͳ=ͺ.ToString();
		string Ͳ=Ͷ.ToString();
		string ͻ="";
		bool ï=false;
		if(ͷ.Contains("h")&&ͽ){
			if(!ʮ[0].CustomData.StartsWith(ɍ))ʮ[0].CustomData=ɍ;
			ʮ[0].CustomData+="\n-"+C+"="+ͷ.Replace("h","").Replace(" ","").ToUpper();
			continue;
		}
		else if(ͷ.Contains("i")&&ͽ){
			if(!ʮ[0].CustomData.StartsWith(ɍ))ʮ[0].CustomData=ɍ;
			ʮ[0].CustomData+="\n-"+C;
			continue;
		}
		if(ͷ.Contains("a")){
			if(ͺ>Ͷ)Ͷ=ͺ;
			ͻ+="A";
		}
		if(ͷ.Contains("d")){
			if(ͺ<Ͷ)Ͷ=ͺ;
			ͻ+="D";
		}
		if(ͷ.Contains("p")){
			ï=true;
			ͻ+="P";
		}
		if(ͷ.Contains("y")){
			int.TryParse(System.Text.RegularExpressions.Regex.Match(ͷ,@"y\d+").Value.Replace("y",""),out ʹ);
			if(ʹ==0)ʹ=1;
			ͻ+="Y"+ʹ;
		}
		ǀ(F,Ͷ);
		double Α=Math.Abs((Ͷ-ͺ)/ʹ);
		if(ʹ!=1)Α=Math.Floor(Α);
		double Θ=ǁ(á);
		if(ͺ>=Ͷ+Ͷ*assembleMargin&&Θ>0&&ƿ(á)>0){
			Σ(á);
			ƾ(á,0);
			Θ=0;
			Ǎ("Removed '"+F.SubtypeId.ToString()+"' from the assembling queue.");
		}
		if(ͺ<=Ͷ-Ͷ*disassembleMargin&&Θ>0&&ƿ(á)<0){
			Σ(á);
			ƾ(á,0);
			Θ=0;
			Ǎ("Removed '"+F.SubtypeId.ToString()+"' from the disassembling queue.");
		}
		string ĥ="";if(Θ>0||Α>0){
			if((enableAutodisassembling||ͷ.Contains("d"))&&ͺ>Ͷ+Ͷ*disassembleMargin){
				ƾ(á,-1);
				ĥ="$[D:";
			}
			else if(enableAutocrafting&&ͺ<Ͷ-Ͷ*assembleMargin){
				ƾ(á,1);
				ĥ="$[A:";
			}
			if(ĥ!=""){
				if(Θ==0){
					ĥ+="Wait]";
				}
				else{
					ĥ+=Math.Round(Θ)+"]";
				}
			}
		}
		else{
			ƾ(á,0);
		}
		if(showUnlearnedItems&&!ͼ)ĥ="$[NoBP]";
		if(ï){
			Έ.Add(á);
		}
		string Ζ="$=$ ";
		if(ͺ>Ͷ)Ζ="$>$ ";
		if(ͺ<Ͷ)Ζ="$<$ ";
		if(ͽ)Ƨ.Append(C+" "+ͳ+ĥ+Ζ+Ͳ+ͻ+"\n");
		if(ĥ.Contains("[D:Wait]")){
			Ι(á,Α);
		}
		else if(ĥ.Contains("[A:Wait]")){
			Λ(á,Α,ï);
			Ǎ("Queued "+Α+" '"+F.SubtypeId.ToString()+"' in the assemblers.");
		}
	}
	Ρ(Έ);
	ϧ(Ƨ);
}
void Ε(){
	if(Refineries.Count>0)return;
	MyDefinitionId ˠ=MyItemType.MakeOre("Stone");
	MyDefinitionId á=MyDefinitionId.Parse(ȓ+"Position0010_StoneOreToIngotBasic");
	double Δ=f(ˠ);
	if(Δ>0){
		double Γ=Math.Floor(Δ/100/ʲ.Count);
		if(Γ<1)return;
		foreach(var Η in ʲ){
			if(Η.CanUseBlueprint(á)&&Η.IsQueueEmpty){
				Η.AddQueueItem(á,Γ);
				Ǎ("Queued "+Γ+" ingot crafts in "+Η.CustomName+".");
			}
		}
	}
}
void Β(){
	if(ʧ==0)ʧ+=ΐ(ʝ,ɂ,true,true);
	if(ʧ==1)ʧ+=ΐ(ʑ,Ɂ,true,true);
	if(ʧ==2)ʧ+=ΐ(ʐ,ɀ,true,true);
	if(ʧ==3)ʧ+=ΐ(ʏ,Ȫ,true,true);
	if(ʧ==4)ʧ+=ΐ(ʎ,ȿ,true,true);
	if(ʧ==5)ʧ+=ΐ(ʍ,"ContainerObject",true,true);
	ʧ++;
	if(ʧ>5)ʧ=0;
}