// Path: randomizer/awakening/singletons/AChapters.java
// public class AChapters {
//     private static AChapters instance;
//     private List<Chapter> chapters;
// 
//     private AChapters() {
//         Type chapterType = new TypeToken<List<Chapter>>() {}.getType();
// 
//         try {
//             Gson gson = new Gson();
//             JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(Randomizer.class
//                     .getResourceAsStream("data/json/AwakeningChapters.json"), "UTF-8")));
//             chapters = gson.fromJson(reader, chapterType);
//             reader.close();
//         } catch (IOException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static AChapters getInstance() {
//         if (instance == null)
//             instance = new AChapters();
//         return instance;
//     }
// 
//     public List<Chapter> getChaptersByType(ChapterType type) {
//         List<Chapter> selected = new ArrayList<>();
//         for(Chapter c : chapters) {
//             if(c.getType() == type)
//                 selected.add(c);
//         }
//         return selected;
//     }
// 
//     public List<Chapter> getChapters() {
//         return chapters;
//     }
// }
// 
// Path: randomizer/awakening/singletons/AFiles.java
// public class AFiles
// {
// 	private static AFiles instance;
// 
// 	// Used in file verification phase.
// 	private List<File> originalFileList;
// 	private File rom;
// 
// 	// Files mapped by chapter ID.
// 	private Map<String, File> dispos = new HashMap<>();
// 	private Map<String, File> person = new HashMap<>();
// 	private Map<String, File> text = new HashMap<>();
// 	private Map<String, File> script = new HashMap<>();
// 	private Map<String, File> terrain = new HashMap<>();
// 
// 	// Individual files used by the randomizer.
//     private File gameData;
//     private File characterFile;
// 
// 	private AFiles() {
// 
// 	}
// 	
// 	public static AFiles getInstance()
// 	{
// 		if(instance == null)
// 			instance = new AFiles();
// 		return instance;
// 	}
// 
// 	public List<File> getOriginalFileList() {
// 		return originalFileList;
// 	}
// 
// 	public void setOriginalFileList(List<File> originalFileList) {
// 		this.originalFileList = originalFileList;
// 	}
// 
// 	public File getRom() {
// 		return rom;
// 	}
// 
// 	public void setRom(File rom) {
// 		this.rom = rom;
// 	}
// 
//     public Map<String, File> getDispos() {
//         return dispos;
//     }
// 
//     public Map<String, File> getPerson() {
//         return person;
//     }
// 
//     public Map<String, File> getText() {
//         return text;
//     }
// 
//     public void setText(Map<String, File> text) {
//         this.text = text;
//     }
// 
//     public Map<String, File> getScript() {
//         return script;
//     }
// 
//     public File getGameData() {
//         return gameData;
//     }
// 
//     public void setGameData(File gameData) {
//         this.gameData = gameData;
//     }
// 
//     public Map<String, File> getTerrain() {
//         return terrain;
//     }
// 
// 	public File getCharacterFile() {
// 		return characterFile;
// 	}
// 
// 	public void setCharacterFile(File characterFile) {
// 		this.characterFile = characterFile;
// 	}
// }
// 
// Path: randomizer/common/enums/ChapterType.java
// public enum ChapterType {
//     Birthright, Conquest, Revelation, AllRoutes, Child, Amiibo
// }
// 
// Path: randomizer/common/structures/Chapter.java
// public class Chapter {
//     private ChapterType type;
//     private String cid;
//     private String parentPid;
//     private String childPid;
//     private int id;
// 
//     public String getChildPid() {
//         return childPid;
//     }
// 
//     public void setChildPid(String childPid) {
//         this.childPid = childPid;
//     }
// 
//     public String getParentPid() {
//         return parentPid;
//     }
// 
//     public void setParentPid(String parentPid) {
//         this.parentPid = parentPid;
//     }
// 
//     public String getCid() {
//         return cid;
//     }
// 
//     public void setCid(String cid) {
//         this.cid = cid;
//     }
// 
//     public ChapterType getType() {
//         return type;
//     }
// 
//     public void setType(ChapterType type) {
//         this.type = type;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// }


import randomizer.awakening.singletons.AChapters;
import randomizer.awakening.singletons.AFiles;
import randomizer.common.enums.ChapterType;
import randomizer.common.structures.Chapter;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
                mainText = new File(dir.getAbsolutePath() + "/m/G");
                break;
            case "Europe - Italian":
                mainText = new File(dir.getAbsolutePath() + "/m/I");
                break;
            case "Europe - French":
                mainText = new File(dir.getAbsolutePath() + "/m/F");
                break;
            default:
                return false; // Invalid region.
        }

        // Verify that chapter-independent files exist.
        File file = new File(dir.getAbsolutePath() + GAMEDATA_PATH);
        if(file.exists())
            verified.add(file);
        else
            failures.add(file);
        file = new File(dir.getAbsolutePath() + PERSON_PATH, "static.bin.lz");
        if(file.exists())
            verified.add(file);
        else
            failures.add(file);
        file = new File(mainText, "GameData.bin.lz");
        if(file.exists()) {
            NameMatcher.matchNames(file); // Get names from IDs.
        }
        else
            failures.add(file);

// Path: randomizer/awakening/singletons/AChapters.java
// public class AChapters {
//     private static AChapters instance;
//     private List<Chapter> chapters;
// 
//     private AChapters() {
//         Type chapterType = new TypeToken<List<Chapter>>() {}.getType();
// 
//         try {
//             Gson gson = new Gson();
//             JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(Randomizer.class
//                     .getResourceAsStream("data/json/AwakeningChapters.json"), "UTF-8")));
//             chapters = gson.fromJson(reader, chapterType);
//             reader.close();
//         } catch (IOException e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static AChapters getInstance() {
//         if (instance == null)
//             instance = new AChapters();
//         return instance;
//     }
// 
//     public List<Chapter> getChaptersByType(ChapterType type) {
//         List<Chapter> selected = new ArrayList<>();
//         for(Chapter c : chapters) {
//             if(c.getType() == type)
//                 selected.add(c);
//         }
//         return selected;
//     }
// 
//     public List<Chapter> getChapters() {
//         return chapters;
//     }
// }
// 
// Path: randomizer/awakening/singletons/AFiles.java
// public class AFiles
// {
// 	private static AFiles instance;
// 
// 	// Used in file verification phase.
// 	private List<File> originalFileList;
// 	private File rom;
// 
// 	// Files mapped by chapter ID.
// 	private Map<String, File> dispos = new HashMap<>();
// 	private Map<String, File> person = new HashMap<>();
// 	private Map<String, File> text = new HashMap<>();
// 	private Map<String, File> script = new HashMap<>();
// 	private Map<String, File> terrain = new HashMap<>();
// 
// 	// Individual files used by the randomizer.
//     private File gameData;
//     private File characterFile;
// 
// 	private AFiles() {
// 
// 	}
// 	
// 	public static AFiles getInstance()
// 	{
// 		if(instance == null)
// 			instance = new AFiles();
// 		return instance;
// 	}
// 
// 	public List<File> getOriginalFileList() {
// 		return originalFileList;
// 	}
// 
// 	public void setOriginalFileList(List<File> originalFileList) {
// 		this.originalFileList = originalFileList;
// 	}
// 
// 	public File getRom() {
// 		return rom;
// 	}
// 
// 	public void setRom(File rom) {
// 		this.rom = rom;
// 	}
// 
//     public Map<String, File> getDispos() {
//         return dispos;
//     }
// 
//     public Map<String, File> getPerson() {
//         return person;
//     }
// 
//     public Map<String, File> getText() {
//         return text;
//     }
// 
//     public void setText(Map<String, File> text) {
//         this.text = text;
//     }
// 
//     public Map<String, File> getScript() {
//         return script;
//     }
// 
//     public File getGameData() {
//         return gameData;
//     }
// 
//     public void setGameData(File gameData) {
//         this.gameData = gameData;
//     }
// 
//     public Map<String, File> getTerrain() {
//         return terrain;
//     }
// 
// 	public File getCharacterFile() {
// 		return characterFile;
// 	}
// 
// 	public void setCharacterFile(File characterFile) {
// 		this.characterFile = characterFile;
// 	}
// }
// 
// Path: randomizer/common/enums/ChapterType.java
// public enum ChapterType {
//     Birthright, Conquest, Revelation, AllRoutes, Child, Amiibo
// }
// 
// Path: randomizer/common/structures/Chapter.java
// public class Chapter {
//     private ChapterType type;
//     private String cid;
//     private String parentPid;
//     private String childPid;
//     private int id;
// 
//     public String getChildPid() {
//         return childPid;
//     }
// 
//     public void setChildPid(String childPid) {
//         this.childPid = childPid;
//     }
// 
//     public String getParentPid() {
//         return parentPid;
//     }
// 
//     public void setParentPid(String parentPid) {
//         this.parentPid = parentPid;
//     }
// 
//     public String getCid() {
//         return cid;
//     }
// 
//     public void setCid(String cid) {
//         this.cid = cid;
//     }
// 
//     public ChapterType getType() {
//         return type;
//     }
// 
//     public void setType(ChapterType type) {
//         this.type = type;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// }


// Path: randomizer/awakening/model/processors/prep/AVerifier.java
import randomizer.awakening.singletons.AChapters;
import randomizer.awakening.singletons.AFiles;
import randomizer.common.enums.ChapterType;
import randomizer.common.structures.Chapter;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

                mainText = new File(dir.getAbsolutePath() + "/m/G");
                break;
            case "Europe - Italian":
                mainText = new File(dir.getAbsolutePath() + "/m/I");
                break;
            case "Europe - French":
                mainText = new File(dir.getAbsolutePath() + "/m/F");
                break;
            default:
                return false; // Invalid region.
        }

        // Verify that chapter-independent files exist.
        File file = new File(dir.getAbsolutePath() + GAMEDATA_PATH);
        if(file.exists())
            verified.add(file);
        else
            failures.add(file);
        file = new File(dir.getAbsolutePath() + PERSON_PATH, "static.bin.lz");
        if(file.exists())
            verified.add(file);
        else
            failures.add(file);
        file = new File(mainText, "GameData.bin.lz");
        if(file.exists()) {
            NameMatcher.matchNames(file); // Get names from IDs.
        }
        else
            failures.add(file);

        for(Chapter c : AChapters.getInstance().getChapters()) {