diff options
Diffstat (limited to 'src/Java')
6 files changed, 1314 insertions, 24 deletions
diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index 510913d794..ae33c8428d 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -66,12 +66,14 @@ public class ReflectionUtils { public static boolean setField(final Object object, final String fieldName, final Object fieldValue) { Class<?> clazz = object.getClass(); - while (clazz != null) { + if (clazz != null) { try { - final Field field = clazz.getDeclaredField(fieldName); - makeAccessible(field); - field.set(object, fieldValue); - return true; + final Field field = getField(clazz, fieldName); + if (field != null) { + makeAccessible(field); + field.set(object, fieldValue); + return true; + } } catch (final NoSuchFieldException e) { Logger.REFLECTION("setField("+object.toString()+", "+fieldName+") failed."); clazz = clazz.getSuperclass(); @@ -175,7 +177,7 @@ public class ReflectionUtils { fieldA.setByte(clazz, newValue);*/ } - + public static boolean invoke(Object objectInstance, String methodName, Class[] parameters, Object[] values){ if (objectInstance == null || methodName == null || parameters == null || values == null){ //Logger.REFLECTION("Null value when trying to Dynamically invoke "+methodName+" on an object of type: "+objectInstance.getClass().getName()); @@ -206,7 +208,7 @@ public class ReflectionUtils { Logger.REFLECTION("Invoke failed or did something wrong."); return false; } - + public static boolean invokeVoid(Object objectInstance, String methodName, Class[] parameters, Object[] values){ if (objectInstance == null || methodName == null || parameters == null || values == null){ return false; @@ -218,8 +220,8 @@ public class ReflectionUtils { if (mInvokingMethod != null){ Logger.REFLECTION(methodName+" was not null."); mInvokingMethod.invoke(objectInstance, values); - Logger.REFLECTION("Successfully invoked "+methodName+"."); - return true; + Logger.REFLECTION("Successfully invoked "+methodName+"."); + return true; } else { Logger.REFLECTION(methodName+" is null."); @@ -232,7 +234,7 @@ public class ReflectionUtils { Logger.REFLECTION("Invoke failed or did something wrong."); return false; } - + public static Object invokeNonBool(Object objectInstance, String methodName, Class[] parameters, Object[] values){ if (objectInstance == null || methodName == null || parameters == null || values == null){ return false; @@ -337,23 +339,23 @@ public class ReflectionUtils { } return null; } - + public static boolean dynamicallyLoadClassesInPackage(String aPackageName) { ClassLoader classLoader = GTplusplus.class.getClassLoader(); int loaded = 0; - try { - ClassPath path = ClassPath.from(classLoader); - for (ClassPath.ClassInfo info : path.getTopLevelClassesRecursive(aPackageName)) { - Class<?> clazz = Class.forName(info.getName(), true, classLoader); - if (clazz != null) { - loaded++; - Logger.INFO("Found "+clazz.getCanonicalName()+". ["+loaded+"]"); - } - } - } catch (ClassNotFoundException | IOException e) { - - } - + try { + ClassPath path = ClassPath.from(classLoader); + for (ClassPath.ClassInfo info : path.getTopLevelClassesRecursive(aPackageName)) { + Class<?> clazz = Class.forName(info.getName(), true, classLoader); + if (clazz != null) { + loaded++; + Logger.INFO("Found "+clazz.getCanonicalName()+". ["+loaded+"]"); + } + } + } catch (ClassNotFoundException | IOException e) { + + } + return loaded > 0; } diff --git a/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java b/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java new file mode 100644 index 0000000000..fa3e8ccbd8 --- /dev/null +++ b/src/Java/gtPlusPlus/plugin/villagers/Core_VillagerAdditions.java @@ -0,0 +1,77 @@ +package gtPlusPlus.plugin.villagers; + +import java.util.HashMap; + +import cpw.mods.fml.common.registry.VillagerRegistry; +import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler; +import gtPlusPlus.api.interfaces.IPlugin; +import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.plugin.manager.Core_Manager; +import net.minecraft.util.ResourceLocation; + +public class Core_VillagerAdditions implements IPlugin { + + final static Core_VillagerAdditions mInstance; + private static boolean shouldLoad = false; + + public static final HashMap<Integer, ResourceLocation> mVillagerSkins = new HashMap<Integer, ResourceLocation>(); + public static final AutoMap<Pair<Integer, IVillageTradeHandler>> mVillagerTrades = new AutoMap<Pair<Integer, IVillageTradeHandler>>(); + + static { + mInstance = new Core_VillagerAdditions(); + Core_Manager.registerPlugin(mInstance); + mInstance.log("Preparing "+mInstance.getPluginName()+" for use."); + } + + @Override + public boolean preInit() { + if (/*CORE.ConfigSwitches.enableSulfuricAcidFix || */CORE.DEVENV) { + shouldLoad = true; + } + if (shouldLoad) { + + //Register all Villager ID's and their Custom Trades. + for (Pair<Integer, IVillageTradeHandler> g : mVillagerTrades) { + if (g != null && g.getKey() != null) { + VillagerRegistry.instance().registerVillagerId(g.getKey()); + if (g.getValue() != null) { + VillagerRegistry.instance().registerVillageTradeHandler(g.getKey(), g.getValue()); + } + if (mVillagerSkins.get(g.getKey()) != null) { + VillagerRegistry.instance().registerVillagerSkin(g.getKey(), mVillagerSkins.get(g.getKey())); + } + } + } + return true; + } + return false; + } + + @Override + public boolean init() { + if (shouldLoad) + return true; + return false; + } + + @Override + public boolean postInit() { + if (shouldLoad) { + return true; + } + return false; + } + + @Override + public String getPluginName() { + return "GT++ Enhanced Villagers"; + } + + @Override + public String getPluginAbbreviation() { + return "Bank"; + } + +} diff --git a/src/Java/gtPlusPlus/plugin/villagers/NameLists.java b/src/Java/gtPlusPlus/plugin/villagers/NameLists.java new file mode 100644 index 0000000000..e11c45bf1b --- /dev/null +++ b/src/Java/gtPlusPlus/plugin/villagers/NameLists.java @@ -0,0 +1,708 @@ +package gtPlusPlus.plugin.villagers; + +import gtPlusPlus.core.util.math.MathUtils; + +public class NameLists { + + public static final String[] mFirstNames = new String[] { "AARON", "ABBIE", "ABBY", "ABEL", "ABIGAIL", "ABRAHAM", + "ADA", "ADAM", "ADAN", "ADDIE", "ADELA", "ADELAIDE", "ADELE", "ADELINE", "ADOLFO", "ADOLPH", "ADRIAN", + "ADRIANA", "ADRIENNE", "AGNES", "AGUSTIN", "AIDA", "AILEEN", "AIMEE", "AISHA", "AL", "ALAN", "ALANA", + "ALBA", "ALBERT", "ALBERTA", "ALBERTO", "ALEJANDRA", "ALEJANDRO", "ALEX", "ALEXANDER", "ALEXANDRA", + "ALEXANDRIA", "ALEXIS", "ALFONSO", "ALFRED", "ALFREDA", "ALFREDO", "ALI", "ALICE", "ALICIA", "ALINE", + "ALISA", "ALISHA", "ALISON", "ALISSA", "ALLAN", "ALLEN", "ALLENE", "ALLIE", "ALLISON", "ALLYSON", "ALMA", + "ALONZO", "ALPHONSO", "ALTA", "ALTHEA", "ALTON", "ALVARO", "ALVIN", "ALYCE", "ALYSON", "ALYSSA", "AMALIA", + "AMANDA", "AMBER", "AMELIA", "AMIE", "AMOS", "AMPARO", "AMY", "ANA", "ANASTASIA", "ANDRE", "ANDREA", + "ANDRES", "ANDREW", "ANDY", "ANGEL", "ANGELA", "ANGELIA", "ANGELICA", "ANGELINA", "ANGELINE", "ANGELIQUE", + "ANGELITA", "ANGELO", "ANGIE", "ANITA", "ANN", "ANNA", "ANNABELLE", "ANNE", "ANNETTE", "ANNIE", "ANNMARIE", + "ANTHONY", "ANTIONETTE", "ANTOINE", "ANTOINETTE", "ANTON", "ANTONIA", "ANTONIO", "ANTONY", "APRIL", + "ARACELI", "ARCHIE", "ARLENE", "ARLINE", "ARMAND", "ARMANDO", "ARNOLD", "ARRON", "ART", "ARTHUR", "ARTURO", + "ASHLEE", "ASHLEIGH", "ASHLEY", "AUBREY", "AUDRA", "AUDREY", "AUGUST", "AUGUSTA", "AURELIA", "AURELIO", + "AURORA", "AUSTIN", "AUTUMN", "AVA", "AVERY", "AVIS", "BARBARA", "BARBRA", "BARNEY", "BARRY", "BART", + "BASIL", "BEATRICE", "BEATRIZ", "BEAU", "BECKY", "BELINDA", "BEN", "BENITA", "BENITO", "BENJAMIN", + "BENNETT", "BENNIE", "BENNY", "BERNADETTE", "BERNADINE", "BERNARD", "BERNARDO", "BERNICE", "BERNIE", "BERT", + "BERTA", "BERTHA", "BERTIE", "BERYL", "BESSIE", "BETH", "BETHANY", "BETSY", "BETTE", "BETTIE", "BETTY", + "BETTYE", "BEULAH", "BEVERLEY", "BEVERLY", "BIANCA", "BILL", "BILLIE", "BILLY", "BLAINE", "BLAIR", "BLAKE", + "BLANCA", "BLANCHE", "BOB", "BOBBI", "BOBBIE", "BOBBY", "BONITA", "BONNIE", "BOOKER", "BOYD", "BRAD", + "BRADFORD", "BRADLEY", "BRADY", "BRAIN", "BRANDEN", "BRANDI", "BRANDIE", "BRANDON", "BRANDY", "BRENDA", + "BRENDAN", "BRENT", "BRET", "BRETT", "BRIAN", "BRIANA", "BRIANNA", "BRIDGET", "BRIDGETT", "BRIDGETTE", + "BRIGITTE", "BRITNEY", "BRITTANY", "BRITTNEY", "BROCK", "BROOKE", "BRUCE", "BRUNO", "BRYAN", "BRYANT", + "BRYCE", "BRYON", "BUDDY", "BUFORD", "BURTON", "BYRON", "CAITLIN", "CALEB", "CALLIE", "CALVIN", "CAMERON", + "CAMILLA", "CAMILLE", "CANDACE", "CANDICE", "CANDY", "CARA", "CAREY", "CARISSA", "CARL", "CARLA", "CARLENE", + "CARLO", "CARLOS", "CARLTON", "CARLY", "CARMELA", "CARMELLA", "CARMELO", "CARMEN", "CAROL", "CAROLE", + "CAROLINA", "CAROLINE", "CAROLYN", "CARRIE", "CARROLL", "CARSON", "CARTER", "CARY", "CARYN", "CASANDRA", + "CASEY", "CASSANDRA", "CASSIE", "CATALINA", "CATHERINE", "CATHLEEN", "CATHRYN", "CATHY", "CECELIA", "CECIL", + "CECILE", "CECILIA", "CEDRIC", "CELESTE", "CELIA", "CELINA", "CESAR", "CHAD", "CHANDRA", "CHARITY", + "CHARLENE", "CHARLES", "CHARLEY", "CHARLIE", "CHARLOTTE", "CHARMAINE", "CHASE", "CHASITY", "CHELSEA", + "CHELSEY", "CHERI", "CHERIE", "CHERRY", "CHERYL", "CHESTER", "CHRIS", "CHRISTA", "CHRISTI", "CHRISTIAN", + "CHRISTIE", "CHRISTINA", "CHRISTINE", "CHRISTOPHER", "CHRISTY", "CHRYSTAL", "CHUCK", "CINDY", "CLAIR", + "CLAIRE", "CLARA", "CLARE", "CLARENCE", "CLARICE", "CLARISSA", "CLARK", "CLAUDE", "CLAUDETTE", "CLAUDIA", + "CLAUDINE", "CLAY", "CLAYTON", "CLEMENT", "CLEO", "CLEVELAND", "CLIFF", "CLIFFORD", "CLIFTON", "CLINT", + "CLINTON", "CLYDE", "CODY", "COLBY", "COLE", "COLEEN", "COLETTE", "COLIN", "COLLEEN", "COLLIN", + "CONCEPCION", "CONCETTA", "CONNIE", "CONRAD", "CONSTANCE", "CONSUELO", "CORA", "COREY", "CORINA", "CORINE", + "CORINNE", "CORNELIA", "CORNELIUS", "CORNELL", "CORRINE", "CORTNEY", "CORY", "COURTNEY", "COY", "CRAIG", + "CRISTINA", "CRUZ", "CRYSTAL", "CURT", "CURTIS", "CYNTHIA", "DAISY", "DALE", "DALLAS", "DALTON", "DAMIAN", + "DAMIEN", "DAMON", "DAN", "DANA", "DANE", "DANIAL", "DANIEL", "DANIELLE", "DANNY", "DANTE", "DAPHNE", + "DARCY", "DAREN", "DARIN", "DARIUS", "DARLA", "DARLENE", "DARNELL", "DARREL", "DARRELL", "DARREN", "DARRIN", + "DARRYL", "DARWIN", "DARYL", "DAVE", "DAVID", "DAVIS", "DAWN", "DAYNA", "DEAN", "DEANA", "DEANN", "DEANNA", + "DEANNE", "DEBBIE", "DEBORA", "DEBORAH", "DEBRA", "DEE", "DEENA", "DEIDRA", "DEIDRE", "DEIRDRE", "DELBERT", + "DELIA", "DELLA", "DELMAR", "DELORES", "DELORIS", "DEMETRIUS", "DENA", "DENICE", "DENIS", "DENISE", + "DENNIS", "DENNY", "DENVER", "DEREK", "DERICK", "DERRICK", "DESIREE", "DESMOND", "DESSIE", "DEVIN", "DEVON", + "DEWAYNE", "DEWEY", "DEXTER", "DIANA", "DIANE", "DIANN", "DIANNA", "DIANNE", "DICK", "DIEGO", "DINA", + "DION", "DIONNE", "DIRK", "DIXIE", "DOLLIE", "DOLLY", "DOLORES", "DOMINGO", "DOMINIC", "DOMINICK", + "DOMINIQUE", "DON", "DONA", "DONALD", "DONNA", "DONNELL", "DONNIE", "DONNY", "DONOVAN", "DORA", "DOREEN", + "DORETHA", "DORIS", "DOROTHEA", "DOROTHY", "DORTHY", "DOUG", "DOUGLAS", "DOYLE", "DREW", "DUANE", "DUDLEY", + "DUSTIN", "DWAYNE", "DWIGHT", "DYLAN", "EARL", "EARLENE", "EARLINE", "EARNEST", "EARNESTINE", "EBONY", "ED", + "EDDIE", "EDDY", "EDGAR", "EDITH", "EDMOND", "EDMUND", "EDNA", "EDUARDO", "EDWARD", "EDWARDO", "EDWIN", + "EDWINA", "EDYTHE", "EFFIE", "EFRAIN", "EILEEN", "ELAINE", "ELBA", "ELBERT", "ELDA", "ELDON", "ELEANOR", + "ELENA", "ELI", "ELIAS", "ELIJAH", "ELINOR", "ELISA", "ELISABETH", "ELISE", "ELISHA", "ELIZA", "ELIZABETH", + "ELLA", "ELLEN", "ELLIOT", "ELLIOTT", "ELLIS", "ELMA", "ELMER", "ELNORA", "ELOISE", "ELSA", "ELSIE", + "ELTON", "ELVA", "ELVIA", "ELVIN", "ELVIRA", "ELVIS", "ELWOOD", "EMANUEL", "EMERSON", "EMERY", "EMIL", + "EMILIA", "EMILIE", "EMILIO", "EMILY", "EMMA", "EMMANUEL", "EMMETT", "EMORY", "ENID", "ENRIQUE", "ERIC", + "ERICA", "ERICK", "ERICKA", "ERIK", "ERIKA", "ERIN", "ERMA", "ERNA", "ERNEST", "ERNESTINE", "ERNESTO", + "ERNIE", "ERROL", "ERVIN", "ERWIN", "ESMERALDA", "ESPERANZA", "ESSIE", "ESTEBAN", "ESTELA", "ESTELLA", + "ESTELLE", "ESTER", "ESTHER", "ETHAN", "ETHEL", "ETTA", "EUGENE", "EUGENIA", "EULA", "EUNICE", "EVA", + "EVAN", "EVANGELINA", "EVANGELINE", "EVE", "EVELYN", "EVERETT", "FABIAN", "FAITH", "FANNIE", "FANNY", "FAY", + "FAYE", "FEDERICO", "FELECIA", "FELICIA", "FELIPE", "FELIX", "FERN", "FERNANDO", "FIDEL", "FLETCHER", + "FLORA", "FLORENCE", "FLORINE", "FLOSSIE", "FLOYD", "FORREST", "FRAN", "FRANCES", "FRANCESCA", "FRANCINE", + "FRANCIS", "FRANCISCA", "FRANCISCO", "FRANK", "FRANKIE", "FRANKLIN", "FRED", "FREDA", "FREDDIE", "FREDDY", + "FREDERIC", "FREDERICK", "FREDRICK", "FREIDA", "FRIEDA", "GABRIEL", "GABRIELA", "GABRIELLE", "GAIL", "GALE", + "GALEN", "GARLAND", "GARRETT", "GARRY", "GARY", "GAVIN", "GAY", "GAYLA", "GAYLE", "GENA", "GENARO", "GENE", + "GENEVA", "GENEVIEVE", "GEOFFREY", "GEORGE", "GEORGETTE", "GEORGIA", "GEORGINA", "GERALD", "GERALDINE", + "GERARD", "GERARDO", "GERI", "GERMAINE", "GERMAN", "GERRY", "GERTRUDE", "GILBERT", "GILBERTO", "GILDA", + "GINA", "GINGER", "GLADYS", "GLEN", "GLENDA", "GLENN", "GLENNA", "GLORIA", "GOLDIE", "GONZALO", "GORDON", + "GRACE", "GRACIE", "GRACIELA", "GRADY", "GRAHAM", "GRANT", "GREG", "GREGG", "GREGORIO", "GREGORY", "GRETA", + "GRETCHEN", "GROVER", "GUADALUPE", "GUILLERMO", "GUS", "GUSSIE", "GUSTAVO", "GUY", "GWEN", "GWENDOLYN", + "HAL", "HALEY", "HALLIE", "HANNAH", "HANS", "HARLAN", "HARLEY", "HAROLD", "HARRIET", "HARRIETT", "HARRIS", + "HARRISON", "HARRY", "HARVEY", "HATTIE", "HAZEL", "HEATH", "HEATHER", "HECTOR", "HEIDI", "HELEN", "HELENA", + "HELENE", "HELGA", "HENRIETTA", "HENRY", "HERBERT", "HERIBERTO", "HERMAN", "HERMINIA", "HESTER", "HILARY", + "HILDA", "HILLARY", "HIRAM", "HOLLIE", "HOLLIS", "HOLLY", "HOMER", "HOPE", "HORACE", "HOUSTON", "HOWARD", + "HUBERT", "HUGH", "HUGO", "HUMBERTO", "HUNG", "HUNTER", "IAN", "IDA", "IGNACIO", "ILA", "ILENE", "IMELDA", + "IMOGENE", "INA", "INES", "INEZ", "INGRID", "IRA", "IRENE", "IRIS", "IRMA", "IRVIN", "IRVING", "IRWIN", + "ISAAC", "ISABEL", "ISABELLA", "ISABELLE", "ISAIAH", "ISIDRO", "ISMAEL", "ISRAEL", "ISSAC", "IVA", "IVAN", + "IVY", "JACK", "JACKIE", "JACKLYN", "JACKSON", "JACLYN", "JACOB", "JACQUELINE", "JACQUELYN", "JACQUES", + "JADE", "JAIME", "JAKE", "JAMAL", "JAME", "JAMES", "JAMI", "JAMIE", "JAN", "JANA", "JANE", "JANELL", + "JANELLE", "JANET", "JANETTE", "JANICE", "JANIE", "JANINE", "JANIS", "JANNA", "JANNIE", "JARED", "JARROD", + "JARVIS", "JASMIN", "JASMINE", "JASON", "JASPER", "JAVIER", "JAY", "JAYNE", "JAYSON", "JEAN", "JEANETTE", + "JEANIE", "JEANINE", "JEANNE", "JEANNETTE", "JEANNIE", "JEANNINE", "JEFF", "JEFFERSON", "JEFFERY", + "JEFFREY", "JEFFRY", "JENIFER", "JENNA", "JENNIE", "JENNIFER", "JENNY", "JERALD", "JEREMIAH", "JEREMY", + "JERI", "JERMAINE", "JEROME", "JERRI", "JERRY", "JESS", "JESSE", "JESSICA", "JESSIE", "JESUS", "JEWEL", + "JEWELL", "JILL", "JILLIAN", "JIM", "JIMMIE", "JIMMY", "JO", "JOAN", "JOANN", "JOANNA", "JOANNE", "JOAQUIN", + "JOCELYN", "JODI", "JODIE", "JODY", "JOE", "JOEL", "JOESPH", "JOEY", "JOHANNA", "JOHN", "JOHNATHAN", + "JOHNATHON", "JOHNNIE", "JOHNNY", "JOLENE", "JON", "JONATHAN", "JONATHON", "JONI", "JORDAN", "JORGE", + "JOSE", "JOSEFA", "JOSEFINA", "JOSEPH", "JOSEPHINE", "JOSH", "JOSHUA", "JOSIE", "JOSUE", "JOY", "JOYCE", + "JUAN", "JUANA", "JUANITA", "JUDI", "JUDITH", "JUDY", "JULIA", "JULIAN", "JULIANA", "JULIANNE", "JULIE", + "JULIET", "JULIETTE", "JULIO", "JULIUS", "JUNE", "JUNIOR", "JUSTIN", "JUSTINA", "JUSTINE", "KAITLIN", + "KAITLYN", "KARA", "KAREN", "KARI", "KARIN", "KARINA", "KARL", "KARLA", "KARYN", "KASEY", "KATE", "KATELYN", + "KATHARINE", "KATHERINE", "KATHERYN", "KATHI", "KATHIE", "KATHLEEN", "KATHRINE", "KATHRYN", "KATHY", + "KATIE", "KATINA", "KATRINA", "KATY", "KAY", "KAYE", "KAYLA", "KEISHA", "KEITH", "KELLEY", "KELLI", + "KELLIE", "KELLY", "KELSEY", "KELVIN", "KEN", "KENDALL", "KENDRA", "KENDRICK", "KENNETH", "KENNY", "KENT", + "KENYA", "KERI", "KERMIT", "KERRI", "KERRY", "KEVIN", "KIM", "KIMBERLEE", "KIMBERLEY", "KIMBERLY", "KIRBY", + "KIRK", "KIRSTEN", "KITTY", "KRIS", "KRISTA", "KRISTEN", "KRISTI", "KRISTIE", "KRISTIN", "KRISTINA", + "KRISTINE", "KRISTOPHER", "KRISTY", "KRYSTAL", "KURT", "KURTIS", "KYLE", "LACEY", "LACY", "LADONNA", + "LAKEISHA", "LAKESHA", "LAKISHA", "LAMAR", "LAMONT", "LANA", "LANCE", "LANDON", "LANE", "LARA", "LARRY", + "LASHONDA", "LATANYA", "LATASHA", "LATISHA", "LATONYA", "LATOYA", "LAURA", "LAUREL", "LAUREN", "LAURENCE", + "LAURI", "LAURIE", "LAVERNE", "LAVONNE", "LAWANDA", "LAWRENCE", "LEA", "LEAH", "LEANN", "LEANNA", "LEANNE", + "LEE", "LEEANN", "LEIGH", "LEILA", "LELA", "LELAND", "LELIA", "LENA", "LENORA", "LENORE", "LEO", "LEOLA", + "LEON", "LEONA", "LEONARD", "LEONARDO", "LEONEL", "LEONOR", "LEROY", "LESA", "LESLEY", "LESLIE", "LESSIE", + "LESTER", "LETA", "LETHA", "LETICIA", "LETITIA", "LEVI", "LEWIS", "LIBBY", "LIDIA", "LILA", "LILIA", + "LILIAN", "LILIANA", "LILLIAN", "LILLIE", "LILLY", "LILY", "LINA", "LINCOLN", "LINDA", "LINDSAY", "LINDSEY", + "LINWOOD", "LIONEL", "LISA", "LIZ", "LIZA", "LIZZIE", "LLOYD", "LOGAN", "LOIS", "LOLA", "LOLITA", "LONNIE", + "LORA", "LORAINE", "LOREN", "LORENA", "LORENE", "LORENZO", "LORETTA", "LORI", "LORIE", "LORNA", "LORRAINE", + "LORRIE", "LOTTIE", "LOU", "LOUELLA", "LOUIE", "LOUIS", "LOUISA", "LOUISE", "LOURDES", "LOWELL", "LOYD", + "LUANN", "LUCAS", "LUCIA", "LUCILE", "LUCILLE", "LUCINDA", "LUCY", "LUELLA", "LUIS", "LUISA", "LUKE", + "LULA", "LUPE", "LUTHER", "LUZ", "LYDIA", "LYLE", "LYNDA", "LYNETTE", "LYNN", "LYNNE", "LYNNETTE", "MA", + "MABEL", "MABLE", "MACK", "MADELEINE", "MADELINE", "MADELYN", "MADGE", "MAE", "MAGDALENA", "MAGGIE", "MAI", + "MALCOLM", "MALINDA", "MALLORY", "MAMIE", "MANDY", "MANUEL", "MANUELA", "MARA", "MARC", "MARCEL", + "MARCELINO", "MARCELLA", "MARCI", "MARCIA", "MARCIE", "MARCO", "MARCOS", "MARCUS", "MARCY", "MARGARET", + "MARGARITA", "MARGERY", "MARGIE", "MARGO", "MARGOT", "MARGRET", "MARGUERITE", "MARI", "MARIA", "MARIAN", + "MARIANA", "MARIANNE", "MARIANO", "MARIBEL", "MARICELA", "MARIE", "MARIETTA", "MARILYN", "MARINA", "MARIO", + "MARION", "MARISA", "MARISOL", "MARISSA", "MARITZA", "MARJORIE", "MARK", "MARLA", "MARLENE", "MARLIN", + "MARLON", "MARQUITA", "MARSHA", "MARSHALL", "MARTA", "MARTHA", "MARTIN", "MARTINA", "MARTY", "MARVA", + "MARVIN", "MARY", "MARYANN", "MARYANNE", "MARYELLEN", "MARYLOU", "MASON", "MATHEW", "MATILDA", "MATT", + "MATTHEW", "MATTIE", "MAUDE", "MAURA", "MAUREEN", "MAURICE", "MAURICIO", "MAVIS", "MAX", "MAXINE", + "MAXWELL", "MAY", "MAYNARD", "MAYRA", "MEAGAN", "MEGAN", "MEGHAN", "MELANIE", "MELBA", "MELINDA", "MELISA", + "MELISSA", "MELLISA", "MELODY", "MELVA", "MELVIN", "MERCEDES", "MEREDITH", "MERLE", "MERLIN", "MERRILL", + "MIA", "MICAH", "MICHAEL", "MICHAELA", "MICHEAL", "MICHEL", "MICHELE", "MICHELL", "MICHELLE", "MICKEY", + "MIGUEL", "MIKE", "MILAGROS", "MILDRED", "MILES", "MILLARD", "MILLICENT", "MILLIE", "MILTON", "MINA", + "MINDY", "MINERVA", "MINNIE", "MIRANDA", "MIRIAM", "MISTY", "MITCHELL", "MITZI", "MOHAMMAD", "MOISES", + "MOLLIE", "MOLLY", "MONA", "MONICA", "MONIKA", "MONIQUE", "MONROE", "MONTE", "MONTY", "MORGAN", "MORRIS", + "MOSES", "MURIEL", "MURRAY", "MYRA", "MYRNA", "MYRON", "MYRTLE", "NADIA", "NADINE", "NAN", "NANCY", + "NANETTE", "NANNIE", "NAOMI", "NATALIA", "NATALIE", "NATASHA", "NATHAN", "NATHANIEL", "NEAL", "NED", "NEIL", + "NELDA", "NELL", "NELLIE", "NELLY", "NELSON", "NESTOR", "NETTIE", "NEVA", "NICHOLAS", "NICHOLE", "NICK", + "NICKOLAS", "NICOLAS", "NICOLE", "NIKKI", "NINA", "NITA", "NOAH", "NOE", "NOEL", "NOELLE", "NOEMI", "NOLA", + "NOLAN", "NONA", "NORA", "NORBERT", "NOREEN", "NORMA", "NORMAN", "NORRIS", "NUMBERS", "OCTAVIA", "OCTAVIO", + "ODELL", "ODESSA", "OFELIA", "OLA", "OLGA", "OLIVE", "OLIVER", "OLIVIA", "OLLIE", "OMAR", "OPAL", "OPHELIA", + "ORA", "ORLANDO", "ORVILLE", "OSCAR", "OTIS", "OTTO", "OWEN", "PABLO", "PAIGE", "PAM", "PAMALA", "PAMELA", + "PANSY", "PASQUALE", "PAT", "PATRICA", "PATRICE", "PATRICIA", "PATRICK", "PATSY", "PATTI", "PATTY", "PAUL", + "PAULA", "PAULETTE", "PAULINE", "PEARL", "PEARLIE", "PEDRO", "PEGGY", "PENELOPE", "PENNY", "PERCY", "PERRY", + "PETE", "PETER", "PETRA", "PHIL", "PHILIP", "PHILLIP", "PHOEBE", "PHYLLIS", "PIERRE", "POLLY", "PRESTON", + "PRISCILLA", "QUEEN", "QUENTIN", "QUINCY", "QUINTON", "RACHAEL", "RACHEL", "RACHELLE", "RAE", "RAFAEL", + "RALPH", "RAMIRO", "RAMON", "RAMONA", "RANDAL", "RANDALL", "RANDI", "RANDOLPH", "RANDY", "RAPHAEL", + "RAQUEL", "RAUL", "RAY", "RAYMOND", "RAYMUNDO", "REBA", "REBECCA", "REBEKAH", "REED", "REGGIE", "REGINA", + "REGINALD", "RENA", "RENAE", "RENE", "RENEE", "REUBEN", "REVA", "REX", "REYNA", "REYNALDO", "RHEA", "RHODA", + "RHONDA", "RICARDO", "RICHARD", "RICK", "RICKEY", "RICKIE", "RICKY", "RIGOBERTO", "RILEY", "RITA", "ROB", + "ROBBIE", "ROBBY", "ROBERT", "ROBERTA", "ROBERTO", "ROBIN", "ROBYN", "ROCCO", "ROCHELLE", "ROCIO", "ROCKY", + "ROD", "RODERICK", "RODGER", "RODNEY", "RODOLFO", "RODRIGO", "ROGELIO", "ROGER", "ROLAND", "ROLANDO", + "ROMAN", "ROMEO", "RON", "RONALD", "RONDA", "RONNIE", "ROOSEVELT", "RORY", "ROSA", "ROSALIA", "ROSALIE", + "ROSALIND", "ROSALINDA", "ROSALYN", "ROSANNA", "ROSANNE", "ROSARIO", "ROSCOE", "ROSE", "ROSEANN", "ROSELLA", + "ROSEMARIE", "ROSEMARY", "ROSETTA", "ROSIE", "ROSLYN", "ROSS", "ROWENA", "ROXANNE", "ROXIE", "ROY", "ROYCE", + "RUBEN", "RUBY", "RUDOLPH", "RUDY", "RUFUS", "RUSSEL", "RUSSELL", "RUSTY", "RUTH", "RUTHIE", "RYAN", + "SABRINA", "SADIE", "SALLIE", "SALLY", "SALVADOR", "SALVATORE", "SAM", "SAMANTHA", "SAMMIE", "SAMMY", + "SAMUEL", "SANDRA", "SANDY", "SANFORD", "SANTIAGO", "SANTOS", "SARA", "SARAH", "SASHA", "SAUL", "SAUNDRA", + "SAVANNAH", "SCOT", "SCOTT", "SCOTTY", "SEAN", "SEBASTIAN", "SELENA", "SELINA", "SELMA", "SERENA", "SERGIO", + "SETH", "SHANA", "SHANE", "SHANNA", "SHANNON", "SHARI", "SHARLENE", "SHARON", "SHARRON", "SHAUN", "SHAUNA", + "SHAWN", "SHAWNA", "SHEENA", "SHEILA", "SHELBY", "SHELDON", "SHELIA", "SHELLEY", "SHELLY", "SHELTON", + "SHEREE", "SHERI", "SHERMAN", "SHERRI", "SHERRIE", "SHERRY", "SHERYL", "SHIRLEY", "SIDNEY", "SIERRA", + "SILAS", "SILVIA", "SIMON", "SIMONE", "SOCORRO", "SOFIA", "SOLOMON", "SON", "SONDRA", "SONIA", "SONJA", + "SONNY", "SONYA", "SOPHIA", "SOPHIE", "SPENCER", "STACEY", "STACI", "STACIE", "STACY", "STAN", "STANLEY", + "STEFAN", "STEFANIE", "STELLA", "STEPHAN", "STEPHANIE", "STEPHEN", "STERLING", "STEVE", "STEVEN", "STEWART", + "STUART", "SUE", "SUMMER", "SUSAN", "SUSANA", "SUSANNA", "SUSANNE", "SUSIE", "SUZANNE", "SUZETTE", "SYBIL", + "SYDNEY", "SYLVESTER", "SYLVIA", "TABATHA", "TABITHA", "TAMARA", "TAMEKA", "TAMERA", "TAMI", "TAMIKA", + "TAMMI", "TAMMIE", "TAMMY", "TAMRA", "TANIA", "TANISHA", "TANYA", "TARA", "TASHA", "TAYLOR", "TED", "TEDDY", + "TERENCE", "TERESA", "TERI", "TERRA", "TERRANCE", "TERRELL", "TERRENCE", "TERRI", "TERRIE", "TERRY", + "TESSA", "THADDEUS", "THELMA", "THEODORE", "THERESA", "THERESE", "THERON", "THOMAS", "THURMAN", "TIA", + "TIFFANY", "TIM", "TIMMY", "TIMOTHY", "TINA", "TISHA", "TOBY", "TODD", "TOM", "TOMAS", "TOMMIE", "TOMMY", + "TONI", "TONIA", "TONY", "TONYA", "TORI", "TRACEY", "TRACI", "TRACIE", "TRACY", "TRAVIS", "TRENT", + "TRENTON", "TREVOR", "TRICIA", "TRINA", "TRISHA", "TRISTAN", "TROY", "TRUDY", "TRUMAN", "TWILA", "TY", + "TYLER", "TYRONE", "TYSON", "ULYSSES", "URSULA", "VALARIE", "VALERIA", "VALERIE", "VAN", "VANCE", "VANESSA", + "VAUGHN", "VELMA", "VERA", "VERN", "VERNA", "VERNON", "VERONICA", "VICENTE", "VICKI", "VICKIE", "VICKY", + "VICTOR", "VICTORIA", "VILMA", "VINCE", "VINCENT", "VIOLA", "VIOLET", "VIRGIE", "VIRGIL", "VIRGINIA", + "VITO", "VIVIAN", "VONDA", "WADE", "WALLACE", "WALTER", "WANDA", "WARD", "WARREN", "WAYNE", "WELDON", + "WENDELL", "WENDI", "WENDY", "WESLEY", "WHITNEY", "WILBERT", "WILBUR", "WILDA", "WILEY", "WILFORD", + "WILFRED", "WILFREDO", "WILL", "WILLA", "WILLARD", "WILLIAM", "WILLIAMS", "WILLIE", "WILLIS", "WILMA", + "WILMER", "WILSON", "WINFRED", "WINIFRED", "WINNIE", "WINSTON", "WM", "WOODROW", "XAVIER", "YESENIA", + "YOLANDA", "YOUNG", "YVETTE", "YVONNE", "ZACHARY", "ZACHERY", "ZELDA", "ZELMA" }; + + public static final String[] mLastNames = new String[] { "AARON ", "ABBOTT ", "ABEL ", "ABELL ", "ABERNATHY ", + "ABNER ", "ABNEY ", "ABRAHAM ", "ABRAMS ", "ABREU ", "ACEVEDO ", "ACKER ", "ACKERMAN ", "ACKLEY ", + "ACOSTA ", "ACUNA ", "ADAIR ", "ADAM ", "ADAME ", "ADAMS ", "ADAMSON ", "ADCOCK ", "ADDISON ", "ADKINS ", + "ADLER ", "AGEE ", "AGNEW ", "AGUAYO ", "AGUIAR ", "AGUILAR ", "AGUILERA ", "AGUIRRE ", "AHERN ", "AHMAD ", + "AHMED ", "AHRENS ", "AIELLO ", "AIKEN ", "AINSWORTH ", "AKERS ", "AKIN ", "AKINS ", "ALANIZ ", "ALARCON ", + "ALBA ", "ALBERS ", "ALBERT ", "ALBERTSON ", "ALBRECHT ", "ALBRIGHT ", "ALCALA ", "ALCORN ", "ALDERMAN ", + "ALDRICH ", "ALDRIDGE ", "ALEMAN ", "ALEXANDER ", "ALFARO ", "ALFONSO ", "ALFORD ", "ALFRED ", "ALGER ", + "ALI ", "ALICEA ", "ALLAN ", "ALLARD ", "ALLEN ", "ALLEY ", "ALLISON ", "ALLMAN ", "ALLRED ", "ALMANZA ", + "ALMEIDA ", "ALMOND ", "ALONSO ", "ALONZO ", "ALSTON ", "ALTMAN ", "ALVARADO ", "ALVAREZ ", "ALVES ", + "AMADOR ", "AMARAL ", "AMATO ", "AMAYA ", "AMBROSE ", "AMES ", "AMMONS ", "AMOS ", "AMUNDSON ", "ANAYA ", + "ANDERS ", "ANDERSEN ", "ANDERSON ", "ANDRADE ", "ANDRE ", "ANDRES ", "ANDREW ", "ANDREWS ", "ANDRUS ", + "ANGEL ", "ANGELO ", "ANGLIN ", "ANGULO ", "ANTHONY ", "ANTOINE ", "ANTONIO ", "APODACA ", "APONTE ", + "APPEL ", "APPLE ", "APPLEGATE ", "APPLETON ", "AQUINO ", "ARAGON ", "ARANDA ", "ARAUJO ", "ARCE ", + "ARCHER ", "ARCHIBALD ", "ARCHIE ", "ARCHULETA ", "ARELLANO ", "AREVALO ", "ARIAS ", "ARMENTA ", "ARMIJO ", + "ARMSTEAD ", "ARMSTRONG ", "ARNDT ", "ARNETT ", "ARNOLD ", "ARREDONDO ", "ARREOLA ", "ARRIAGA ", + "ARRINGTON ", "ARROYO ", "ARSENAULT ", "ARTEAGA ", "ARTHUR ", "ARTIS ", "ASBURY ", "ASH ", "ASHBY ", + "ASHCRAFT ", "ASHE ", "ASHER ", "ASHFORD ", "ASHLEY ", "ASHMORE ", "ASHTON ", "ASHWORTH ", "ASKEW ", + "ATCHISON ", "ATHERTON ", "ATKINS ", "ATKINSON ", "ATWELL ", "ATWOOD ", "AUGUST ", "AUGUSTINE ", "AULT ", + "AUSTIN ", "AUTRY ", "AVALOS ", "AVERY ", "AVILA ", "AVILES ", "AYALA ", "AYERS ", "AYRES ", "BABB ", + "BABCOCK ", "BABIN ", "BACA ", "BACH ", "BACHMAN ", "BACK ", "BACON ", "BADER ", "BADGER ", "BADILLO ", + "BAER ", "BAEZ ", "BAGGETT ", "BAGLEY ", "BAGWELL ", "BAILEY ", "BAIN ", "BAINES ", "BAIR ", "BAIRD ", + "BAKER ", "BALDERAS ", "BALDWIN ", "BALES ", "BALL ", "BALLARD ", "BANDA ", "BANDY ", "BANKS ", "BANKSTON ", + "BANNISTER ", "BANUELOS ", "BAPTISTE ", "BARAJAS ", "BARBA ", "BARBEE ", "BARBER ", "BARBOSA ", "BARBOUR ", + "BARCLAY ", "BARDEN ", "BARELA ", "BARFIELD ", "BARGER ", "BARHAM ", "BARKER ", "BARKLEY ", "BARKSDALE ", + "BARLOW ", "BARNARD ", "BARNES ", "BARNETT ", "BARNETTE ", "BARNEY ", "BARNHART ", "BARNHILL ", "BARON ", + "BARONE ", "BARR ", "BARRAZA ", "BARRERA ", "BARRETO ", "BARRETT ", "BARRIENTOS ", "BARRIOS ", "BARRON ", + "BARROW ", "BARROWS ", "BARRY ", "BARTELS ", "BARTH ", "BARTHOLOMEW ", "BARTLETT ", "BARTLEY ", "BARTON ", + "BASHAM ", "BASKIN ", "BASS ", "BASSETT ", "BATCHELOR ", "BATEMAN ", "BATES ", "BATISTA ", "BATISTE ", + "BATSON ", "BATTAGLIA ", "BATTEN ", "BATTLE ", "BATTLES ", "BATTS ", "BAUER ", "BAUGH ", "BAUGHMAN ", + "BAUM ", "BAUMAN ", "BAUMANN ", "BAUMGARDNER ", "BAUMGARTNER ", "BAUTISTA ", "BAXLEY ", "BAXTER ", "BAYER ", + "BAYLOR ", "BAYNE ", "BAYS ", "BEACH ", "BEAL ", "BEALE ", "BEALL ", "BEALS ", "BEAM ", "BEAMON ", "BEAN ", + "BEANE ", "BEAR ", "BEARD ", "BEARDEN ", "BEASLEY ", "BEATTIE ", "BEATTY ", "BEATY ", "BEAUCHAMP ", + "BEAUDOIN ", "BEAULIEU ", "BEAUREGARD ", "BEAVER ", "BEAVERS ", "BECERRA ", "BECK ", "BECKER ", "BECKETT ", + "BECKHAM ", "BECKMAN ", "BECKWITH ", "BECNEL ", "BEDARD ", "BEDFORD ", "BEEBE ", "BEELER ", "BEERS ", + "BEESON ", "BEGAY ", "BEGLEY ", "BEHRENS ", "BELANGER ", "BELCHER ", "BELL ", "BELLAMY ", "BELLO ", "BELT ", + "BELTON ", "BELTRAN ", "BENAVIDES ", "BENAVIDEZ ", "BENDER ", "BENEDICT ", "BENEFIELD ", "BENITEZ ", + "BENJAMIN ", "BENNER ", "BENNETT ", "BENOIT ", "BENSON ", "BENTLEY ", "BENTON ", "BERG ", "BERGER ", + "BERGERON ", "BERGMAN ", "BERGSTROM ", "BERLIN ", "BERMAN ", "BERMUDEZ ", "BERNAL ", "BERNARD ", + "BERNHARDT ", "BERNIER ", "BERNSTEIN ", "BERRIOS ", "BERRY ", "BERRYMAN ", "BERTRAM ", "BERTRAND ", + "BERUBE ", "BESS ", "BEST ", "BETANCOURT ", "BETHEA ", "BETHEL ", "BETTS ", "BETZ ", "BEVERLY ", "BEVINS ", + "BEYER ", "BIBLE ", "BICKFORD ", "BIDDLE ", "BIGELOW ", "BIGGS ", "BILLINGS ", "BILLINGSLEY ", "BILLIOT ", + "BILLS ", "BILLUPS ", "BILODEAU ", "BINDER ", "BINGHAM ", "BINKLEY ", "BIRCH ", "BIRD ", "BISHOP ", + "BISSON ", "BITTNER ", "BIVENS ", "BIVINS ", "BLACK ", "BLACKBURN ", "BLACKMAN ", "BLACKMON ", "BLACKWELL ", + "BLACKWOOD ", "BLAINE ", "BLAIR ", "BLAIS ", "BLAKE ", "BLAKELY ", "BLALOCK ", "BLANCHARD ", "BLANCHETTE ", + "BLANCO ", "BLAND ", "BLANK ", "BLANKENSHIP ", "BLANTON ", "BLAYLOCK ", "BLEDSOE ", "BLEVINS ", "BLISS ", + "BLOCK ", "BLOCKER ", "BLODGETT ", "BLOOM ", "BLOUNT ", "BLUE ", "BLUM ", "BLUNT ", "BLYTHE ", "BOATRIGHT ", + "BOATWRIGHT ", "BOBBITT ", "BOBO ", "BOCK ", "BOEHM ", "BOETTCHER ", "BOGAN ", "BOGGS ", "BOHANNON ", + "BOHN ", "BOISVERT ", "BOLAND ", "BOLDEN ", "BOLDUC ", "BOLEN ", "BOLES ", "BOLIN ", "BOLING ", "BOLLING ", + "BOLLINGER ", "BOLT ", "BOLTON ", "BOND ", "BONDS ", "BONE ", "BONILLA ", "BONNER ", "BOOKER ", "BOONE ", + "BOOTH ", "BOOTHE ", "BORDELON ", "BORDEN ", "BORDERS ", "BOREN ", "BORGES ", "BORREGO ", "BOSS ", + "BOSTIC ", "BOSTICK ", "BOSTON ", "BOSWELL ", "BOTTOMS ", "BOUCHARD ", "BOUCHER ", "BOUDREAU ", + "BOUDREAUX ", "BOUNDS ", "BOURGEOIS ", "BOURNE ", "BOURQUE ", "BOWDEN ", "BOWEN ", "BOWENS ", "BOWER ", + "BOWERS ", "BOWIE ", "BOWLES ", "BOWLIN ", "BOWLING ", "BOWMAN ", "BOWSER ", "BOX ", "BOYCE ", "BOYD ", + "BOYER ", "BOYKIN ", "BOYLE ", "BOYLES ", "BOYNTON ", "BOZEMAN ", "BRACKEN ", "BRACKETT ", "BRADBURY ", + "BRADEN ", "BRADFORD ", "BRADLEY ", "BRADSHAW ", "BRADY ", "BRAGG ", "BRANCH ", "BRAND ", "BRANDENBURG ", + "BRANDON ", "BRANDT ", "BRANHAM ", "BRANNON ", "BRANSON ", "BRANT ", "BRANTLEY ", "BRASWELL ", "BRATCHER ", + "BRATTON ", "BRAUN ", "BRAVO ", "BRAXTON ", "BRAY ", "BRAZIL ", "BREAUX ", "BREEDEN ", "BREEDLOVE ", + "BREEN ", "BRENNAN ", "BRENNER ", "BRENT ", "BREWER ", "BREWSTER ", "BRICE ", "BRIDGES ", "BRIGGS ", + "BRIGHT ", "BRILEY ", "BRILL ", "BRIM ", "BRINK ", "BRINKLEY ", "BRINKMAN ", "BRINSON ", "BRIONES ", + "BRISCOE ", "BRISENO ", "BRITO ", "BRITT ", "BRITTAIN ", "BRITTON ", "BROADNAX ", "BROADWAY ", "BROCK ", + "BROCKMAN ", "BRODERICK ", "BRODY ", "BROGAN ", "BRONSON ", "BROOKINS ", "BROOKS ", "BROOME ", "BROTHERS ", + "BROUGHTON ", "BROUSSARD ", "BROWDER ", "BROWER ", "BROWN ", "BROWNE ", "BROWNELL ", "BROWNING ", + "BROWNLEE ", "BROYLES ", "BRUBAKER ", "BRUCE ", "BRUMFIELD ", "BRUNER ", "BRUNNER ", "BRUNO ", "BRUNS ", + "BRUNSON ", "BRUTON ", "BRYAN ", "BRYANT ", "BRYSON ", "BUCHANAN ", "BUCHER ", "BUCK ", "BUCKINGHAM ", + "BUCKLEY ", "BUCKNER ", "BUENO ", "BUFFINGTON ", "BUFORD ", "BUI ", "BULL ", "BULLARD ", "BULLOCK ", + "BUMGARNER ", "BUNCH ", "BUNDY ", "BUNKER ", "BUNN ", "BUNNELL ", "BUNTING ", "BURCH ", "BURCHETT ", + "BURCHFIELD ", "BURDEN ", "BURDETTE ", "BURDICK ", "BURGE ", "BURGER ", "BURGESS ", "BURGOS ", "BURK ", + "BURKE ", "BURKETT ", "BURKHART ", "BURKHOLDER ", "BURKS ", "BURLESON ", "BURLEY ", "BURNETT ", "BURNETTE ", + "BURNEY ", "BURNHAM ", "BURNS ", "BURNSIDE ", "BURR ", "BURRELL ", "BURRIS ", "BURROUGHS ", "BURROW ", + "BURROWS ", "BURT ", "BURTON ", "BUSBY ", "BUSCH ", "BUSH ", "BUSS ", "BUSSEY ", "BUSTAMANTE ", "BUSTOS ", + "BUTCHER ", "BUTLER ", "BUTTERFIELD ", "BUTTON ", "BUTTS ", "BUXTON ", "BYARS ", "BYERS ", "BYNUM ", + "BYRD ", "BYRNE ", "BYRNES ", "CABALLERO ", "CABAN ", "CABLE ", "CABRAL ", "CABRERA ", "CADE ", "CADY ", + "CAGLE ", "CAHILL ", "CAIN ", "CALABRESE ", "CALDERON ", "CALDWELL ", "CALHOUN ", "CALKINS ", "CALL ", + "CALLAGHAN ", "CALLAHAN ", "CALLAWAY ", "CALLENDER ", "CALLOWAY ", "CALVERT ", "CALVIN ", "CAMACHO ", + "CAMARILLO ", "CAMBELL ", "CAMERON ", "CAMP ", "CAMPBELL ", "CAMPOS ", "CANADA ", "CANADY ", "CANALES ", + "CANDELARIA ", "CANFIELD ", "CANNON ", "CANO ", "CANTRELL ", "CANTU ", "CANTWELL ", "CANTY ", "CAPPS ", + "CARABALLO ", "CARAWAY ", "CARBAJAL ", "CARBONE ", "CARD ", "CARDEN ", "CARDENAS ", "CARDER ", "CARDONA ", + "CARDOZA ", "CARDWELL ", "CAREY ", "CARL ", "CARLIN ", "CARLISLE ", "CARLOS ", "CARLSON ", "CARLTON ", + "CARMAN ", "CARMICHAEL ", "CARMONA ", "CARNAHAN ", "CARNES ", "CARNEY ", "CARO ", "CARON ", "CARPENTER ", + "CARR ", "CARRANZA ", "CARRASCO ", "CARRERA ", "CARRICO ", "CARRIER ", "CARRILLO ", "CARRINGTON ", + "CARRION ", "CARROLL ", "CARSON ", "CARSWELL ", "CARTER ", "CARTWRIGHT ", "CARUSO ", "CARVALHO ", "CARVER ", + "CARY ", "CASAS ", "CASE ", "CASEY ", "CASH ", "CASILLAS ", "CASKEY ", "CASON ", "CASPER ", "CASS ", + "CASSELL ", "CASSIDY ", "CASTANEDA ", "CASTEEL ", "CASTELLANO ", "CASTELLANOS ", "CASTILLO ", "CASTLE ", + "CASTLEBERRY ", "CASTRO ", "CASWELL ", "CATALANO ", "CATES ", "CATHEY ", "CATO ", "CATRON ", "CAUDILL ", + "CAUDLE ", "CAUSEY ", "CAVANAUGH ", "CAVAZOS ", "CAVE ", "CECIL ", "CENTENO ", "CERDA ", "CERVANTES ", + "CHACON ", "CHADWICK ", "CHAFFIN ", "CHALMERS ", "CHAMBERLAIN ", "CHAMBERLIN ", "CHAMBERS ", "CHAMBLISS ", + "CHAMPAGNE ", "CHAMPION ", "CHAN ", "CHANCE ", "CHANDLER ", "CHANEY ", "CHANG ", "CHAPA ", "CHAPIN ", + "CHAPMAN ", "CHAPPELL ", "CHARLES ", "CHARLTON ", "CHASE ", "CHASTAIN ", "CHATMAN ", "CHAU ", "CHAVARRIA ", + "CHAVES ", "CHAVEZ ", "CHAVIS ", "CHEATHAM ", "CHEEK ", "CHEN ", "CHENEY ", "CHENG ", "CHERRY ", "CHESSER ", + "CHESTER ", "CHESTNUT ", "CHEUNG ", "CHEW ", "CHILD ", "CHILDERS ", "CHILDRESS ", "CHILDS ", "CHILTON ", + "CHIN ", "CHISHOLM ", "CHISM ", "CHISOLM ", "CHITWOOD ", "CHO ", "CHOATE ", "CHOI ", "CHONG ", "CHOW ", + "CHRISTENSEN ", "CHRISTENSON ", "CHRISTIAN ", "CHRISTIANSEN ", "CHRISTIANSON ", "CHRISTIE ", "CHRISTMAN ", + "CHRISTMAS ", "CHRISTOPHER ", "CHRISTY ", "CHU ", "CHUN ", "CHUNG ", "CHURCH ", "CHURCHILL ", "CINTRON ", + "CISNEROS ", "CLANCY ", "CLANTON ", "CLAPP ", "CLARK ", "CLARKE ", "CLARKSON ", "CLARY ", "CLAUSEN ", + "CLAWSON ", "CLAY ", "CLAYTON ", "CLEARY ", "CLEGG ", "CLEM ", "CLEMENS ", "CLEMENT ", "CLEMENTS ", + "CLEMMONS ", "CLEMONS ", "CLEVELAND ", "CLEVENGER ", "CLICK ", "CLIFFORD ", "CLIFTON ", "CLINE ", + "CLINTON ", "CLOSE ", "CLOUD ", "CLOUGH ", "CLOUTIER ", "COATES ", "COATS ", "COBB ", "COBBS ", "COBLE ", + "COBURN ", "COCHRAN ", "COCHRANE ", "COCKRELL ", "CODY ", "COE ", "COFFEY ", "COFFIN ", "COFFMAN ", + "COGGINS ", "COHEN ", "COHN ", "COKER ", "COLBERT ", "COLBURN ", "COLBY ", "COLE ", "COLEMAN ", "COLES ", + "COLEY ", "COLLADO ", "COLLAZO ", "COLLEY ", "COLLIER ", "COLLINS ", "COLON ", "COLSON ", "COLVIN ", + "COLWELL ", "COMBS ", "COMEAUX ", "COMER ", "COMPTON ", "COMSTOCK ", "CONAWAY ", "CONCEPCION ", "CONDON ", + "CONE ", "CONGER ", "CONKLIN ", "CONLEY ", "CONN ", "CONNELL ", "CONNELLY ", "CONNER ", "CONNERS ", + "CONNOLLY ", "CONNOR ", "CONNORS ", "CONOVER ", "CONRAD ", "CONROY ", "CONTE ", "CONTI ", "CONTRERAS ", + "CONWAY ", "CONYERS ", "COOK ", "COOKE ", "COOKS ", "COOKSEY ", "COOLEY ", "COOMBS ", "COON ", "COONEY ", + "COONS ", "COOPER ", "COPE ", "COPELAND ", "COPLEY ", "COPPOLA ", "CORBETT ", "CORBIN ", "CORBITT ", + "CORCORAN ", "CORDELL ", "CORDERO ", "CORDOVA ", "COREY ", "CORLEY ", "CORMIER ", "CORNELIUS ", "CORNELL ", + "CORNETT ", "CORNISH ", "CORNWELL ", "CORONA ", "CORONADO ", "CORRAL ", "CORREA ", "CORREIA ", "CORRIGAN ", + "CORTES ", "CORTEZ ", "CORWIN ", "COSBY ", "COSGROVE ", "COSTA ", "COSTELLO ", "COTA ", "COTE ", "COTHRAN ", + "COTTER ", "COTTON ", "COTTRELL ", "COUCH ", "COUGHLIN ", "COULTER ", "COUNCIL ", "COUNTS ", "COURTNEY ", + "COUSINS ", "COUTURE ", "COVERT ", "COVEY ", "COVINGTON ", "COWAN ", "COWARD ", "COWART ", "COWELL ", + "COWLES ", "COWLEY ", "COX ", "COY ", "COYLE ", "COYNE ", "CRABTREE ", "CRADDOCK ", "CRAFT ", "CRAIG ", + "CRAIN ", "CRAMER ", "CRANDALL ", "CRANE ", "CRANFORD ", "CRAVEN ", "CRAWFORD ", "CRAWLEY ", "CRAYTON ", + "CREAMER ", "CREECH ", "CREEL ", "CREIGHTON ", "CRENSHAW ", "CRESPO ", "CREWS ", "CRIDER ", "CRISP ", + "CRIST ", "CRISWELL ", "CRITTENDEN ", "CROCKER ", "CROCKETT ", "CROFT ", "CROMER ", "CROMWELL ", "CRONIN ", + "CROOK ", "CROOKS ", "CROSBY ", "CROSS ", "CROTEAU ", "CROUCH ", "CROUSE ", "CROW ", "CROWDER ", "CROWE ", + "CROWELL ", "CROWLEY ", "CRUM ", "CRUMP ", "CRUSE ", "CRUTCHER ", "CRUTCHFIELD ", "CRUZ ", "CUELLAR ", + "CUEVAS ", "CULBERTSON ", "CULLEN ", "CULP ", "CULPEPPER ", "CULVER ", "CUMMINGS ", "CUMMINS ", + "CUNNINGHAM ", "CUPP ", "CURLEY ", "CURRAN ", "CURRIE ", "CURRIER ", "CURRY ", "CURTIN ", "CURTIS ", + "CUSHMAN ", "CUSTER ", "CUTLER ", "CYR ", "DABNEY ", "DAHL ", "DAIGLE ", "DAILEY ", "DAILY ", "DALE ", + "DALEY ", "DALLAS ", "DALTON ", "DALY ", "DAMICO ", "DAMON ", "DAMRON ", "DANCY ", "DANG ", "DANGELO ", + "DANIEL ", "DANIELS ", "DANIELSON ", "DANNER ", "DARBY ", "DARDEN ", "DARLING ", "DARNELL ", "DASILVA ", + "DAUGHERTY ", "DAUGHTRY ", "DAVENPORT ", "DAVID ", "DAVIDSON ", "DAVIES ", "DAVILA ", "DAVIS ", "DAVISON ", + "DAWKINS ", "DAWSON ", "DAY ", "DAYTON ", "DEAL ", "DEAN ", "DEATON ", "DEBERRY ", "DECKER ", "DEES ", + "DEHART ", "DEJESUS ", "DELACRUZ ", "DELAGARZA ", "DELANEY ", "DELAROSA ", "DELATORRE ", "DELEON ", + "DELGADILLO ", "DELGADO ", "DELL ", "DELLINGER ", "DELOACH ", "DELONG ", "DELOSSANTOS ", "DELUCA ", + "DELVALLE ", "DEMARCO ", "DEMERS ", "DEMPSEY ", "DENHAM ", "DENNEY ", "DENNING ", "DENNIS ", "DENNISON ", + "DENNY ", "DENSON ", "DENT ", "DENTON ", "DEROSA ", "DERR ", "DERRICK ", "DESANTIS ", "DESIMONE ", + "DEVINE ", "DEVITO ", "DEVLIN ", "DEVORE ", "DEVRIES ", "DEW ", "DEWEY ", "DEWITT ", "DEXTER ", "DIAL ", + "DIAMOND ", "DIAS ", "DIAZ ", "DICK ", "DICKENS ", "DICKERSON ", "DICKEY ", "DICKINSON ", "DICKSON ", + "DIEHL ", "DIETRICH ", "DIETZ ", "DIGGS ", "DILL ", "DILLARD ", "DILLON ", "DINKINS ", "DION ", "DIX ", + "DIXON ", "DO ", "DOAN ", "DOBBINS ", "DOBBS ", "DOBSON ", "DOCKERY ", "DODD ", "DODDS ", "DODGE ", + "DODSON ", "DOE ", "DOHERTY ", "DOLAN ", "DOLL ", "DOLLAR ", "DOMINGO ", "DOMINGUEZ ", "DOMINQUEZ ", + "DONAHUE ", "DONALD ", "DONALDSON ", "DONATO ", "DONNELL ", "DONNELLY ", "DONOHUE ", "DONOVAN ", "DOOLEY ", + "DOOLITTLE ", "DORAN ", "DORMAN ", "DORN ", "DORRIS ", "DORSEY ", "DORTCH ", "DOSS ", "DOTSON ", "DOTY ", + "DOUCETTE ", "DOUGHERTY ", "DOUGHTY ", "DOUGLAS ", "DOUGLASS ", "DOVE ", "DOVER ", "DOW ", "DOWD ", + "DOWDY ", "DOWELL ", "DOWLING ", "DOWNEY ", "DOWNING ", "DOWNS ", "DOYLE ", "DOZIER ", "DRAKE ", "DRAPER ", + "DRAYTON ", "DREW ", "DRISCOLL ", "DRIVER ", "DRUMMOND ", "DRURY ", "DUARTE ", "DUBE ", "DUBOIS ", + "DUBOSE ", "DUCKETT ", "DUCKWORTH ", "DUDLEY ", "DUFF ", "DUFFY ", "DUGAN ", "DUGAS ", "DUGGAN ", "DUGGER ", + "DUKE ", "DUKES ", "DUMAS ", "DUMONT ", "DUNAWAY ", "DUNBAR ", "DUNCAN ", "DUNHAM ", "DUNLAP ", "DUNN ", + "DUNNE ", "DUNNING ", "DUONG ", "DUPONT ", "DUPRE ", "DUPREE ", "DUPUIS ", "DURAN ", "DURAND ", "DURANT ", + "DURBIN ", "DURDEN ", "DURHAM ", "DURKIN ", "DURR ", "DUTTON ", "DUVAL ", "DUVALL ", "DWYER ", "DYE ", + "DYER ", "DYKES ", "DYSON ", "EAGLE ", "EARL ", "EARLE ", "EARLEY ", "EARLS ", "EARLY ", "EARNEST ", + "EASLEY ", "EASON ", "EAST ", "EASTER ", "EASTERLING ", "EASTMAN ", "EASTON ", "EATON ", "EAVES ", "EBERT ", + "ECHEVARRIA ", "ECHOLS ", "ECKERT ", "EDDY ", "EDGAR ", "EDGE ", "EDMOND ", "EDMONDS ", "EDMONDSON ", + "EDWARD ", "EDWARDS ", "EGAN ", "EGGLESTON ", "ELAM ", "ELDER ", "ELDRIDGE ", "ELIAS ", "ELIZONDO ", + "ELKINS ", "ELLER ", "ELLINGTON ", "ELLIOT ", "ELLIOTT ", "ELLIS ", "ELLISON ", "ELLSWORTH ", "ELMORE ", + "ELROD ", "ELSTON ", "ELY ", "EMANUEL ", "EMBRY ", "EMERSON ", "EMERY ", "EMMONS ", "ENG ", "ENGEL ", + "ENGLAND ", "ENGLE ", "ENGLISH ", "ENNIS ", "ENOS ", "ENRIGHT ", "ENRIQUEZ ", "EPPERSON ", "EPPS ", + "EPSTEIN ", "ERDMANN ", "ERICKSON ", "ERNST ", "ERVIN ", "ERWIN ", "ESCALANTE ", "ESCAMILLA ", "ESCOBAR ", + "ESCOBEDO ", "ESPARZA ", "ESPINAL ", "ESPINO ", "ESPINOSA ", "ESPINOZA ", "ESPOSITO ", "ESQUIVEL ", + "ESTEP ", "ESTES ", "ESTRADA ", "ESTRELLA ", "ETHERIDGE ", "ETHRIDGE ", "EUBANKS ", "EVANS ", "EVERETT ", + "EVERHART ", "EVERS ", "EVERSON ", "EWING ", "EZELL ", "FABER ", "FABIAN ", "FAGAN ", "FAHEY ", "FAIN ", + "FAIR ", "FAIRBANKS ", "FAIRCHILD ", "FAIRLEY ", "FAISON ", "FAJARDO ", "FALCON ", "FALK ", "FALLON ", + "FALLS ", "FANNING ", "FARIAS ", "FARLEY ", "FARMER ", "FARNSWORTH ", "FARR ", "FARRAR ", "FARRELL ", + "FARRINGTON ", "FARRIS ", "FARROW ", "FAULK ", "FAULKNER ", "FAUST ", "FAY ", "FEENEY ", "FELDER ", + "FELDMAN ", "FELICIANO ", "FELIX ", "FELLOWS ", "FELTON ", "FELTS ", "FENNELL ", "FENNER ", "FENTON ", + "FERGUSON ", "FERNANDES ", "FERNANDEZ ", "FERRARA ", "FERRARI ", "FERRARO ", "FERREIRA ", "FERRELL ", + "FERRER ", "FERRIS ", "FERRY ", "FIELD ", "FIELDER ", "FIELDS ", "FIERRO ", "FIFE ", "FIGUEROA ", "FINCH ", + "FINCHER ", "FINDLEY ", "FINE ", "FINK ", "FINLEY ", "FINN ", "FINNEGAN ", "FINNEY ", "FIORE ", "FISCHER ", + "FISH ", "FISHER ", "FISHMAN ", "FISK ", "FITCH ", "FITE ", "FITTS ", "FITZGERALD ", "FITZPATRICK ", + "FITZSIMMONS ", "FLAGG ", "FLAHERTY ", "FLANAGAN ", "FLANDERS ", "FLANIGAN ", "FLANNERY ", "FLECK ", + "FLEMING ", "FLEMMING ", "FLETCHER ", "FLINT ", "FLOOD ", "FLORA ", "FLORENCE ", "FLORES ", "FLOREZ ", + "FLOURNOY ", "FLOWERS ", "FLOYD ", "FLYNN ", "FOGARTY ", "FOGG ", "FOGLE ", "FOLEY ", "FOLSE ", "FOLSOM ", + "FOLTZ ", "FONG ", "FONSECA ", "FONTAINE ", "FONTENOT ", "FOOTE ", "FORBES ", "FORD ", "FOREMAN ", + "FOREST ", "FORET ", "FORMAN ", "FORNEY ", "FORREST ", "FORRESTER ", "FORSTER ", "FORSYTH ", "FORSYTHE ", + "FORT ", "FORTE ", "FORTENBERRY ", "FORTIER ", "FORTIN ", "FORTNER ", "FORTUNE ", "FOSS ", "FOSTER ", + "FOUNTAIN ", "FOURNIER ", "FOUST ", "FOWLER ", "FOX ", "FOY ", "FRALEY ", "FRAME ", "FRANCE ", "FRANCIS ", + "FRANCISCO ", "FRANCO ", "FRANCOIS ", "FRANK ", "FRANKLIN ", "FRANKS ", "FRANTZ ", "FRANZ ", "FRASER ", + "FRASIER ", "FRAZER ", "FRAZIER ", "FREDERICK ", "FREDERICKS ", "FREDRICK ", "FREDRICKSON ", "FREE ", + "FREED ", "FREEDMAN ", "FREEMAN ", "FREESE ", "FREITAS ", "FRENCH ", "FREUND ", "FREY ", "FRIAS ", "FRICK ", + "FRIEDMAN ", "FRIEND ", "FRIERSON ", "FRIES ", "FRITZ ", "FRIZZELL ", "FROST ", "FRY ", "FRYE ", "FRYER ", + "FUCHS ", "FUENTES ", "FUGATE ", "FULCHER ", "FULLER ", "FULLERTON ", "FULMER ", "FULTON ", "FULTZ ", + "FUNDERBURK ", "FUNK ", "FUQUA ", "FURMAN ", "FURR ", "FUSCO ", "GABLE ", "GABRIEL ", "GADDIS ", "GADDY ", + "GAFFNEY ", "GAGE ", "GAGNE ", "GAGNON ", "GAINES ", "GAINEY ", "GAITHER ", "GALARZA ", "GALBRAITH ", + "GALE ", "GALINDO ", "GALLAGHER ", "GALLANT ", "GALLARDO ", "GALLEGOS ", "GALLO ", "GALLOWAY ", "GALVAN ", + "GALVEZ ", "GALVIN ", "GAMBLE ", "GAMBOA ", "GAMEZ ", "GANDY ", "GANN ", "GANNON ", "GANT ", "GANTT ", + "GARAY ", "GARBER ", "GARCIA ", "GARDINER ", "GARDNER ", "GARLAND ", "GARMON ", "GARNER ", "GARNETT ", + "GARRETT ", "GARRIS ", "GARRISON ", "GARVEY ", "GARVIN ", "GARY ", "GARZA ", "GASKIN ", "GASKINS ", "GASS ", + "GASTON ", "GATES ", "GATEWOOD ", "GATLIN ", "GAULT ", "GAUTHIER ", "GAVIN ", "GAY ", "GAYLORD ", "GEARY ", + "GEE ", "GEER ", "GEIGER ", "GENTILE ", "GENTRY ", "GEORGE ", "GERALD ", "GERARD ", "GERBER ", "GERMAN ", + "GETZ ", "GIBBONS ", "GIBBS ", "GIBSON ", "GIFFORD ", "GIL ", "GILBERT ", "GILBERTSON ", "GILBREATH ", + "GILCHRIST ", "GILES ", "GILL ", "GILLEN ", "GILLESPIE ", "GILLETTE ", "GILLEY ", "GILLIAM ", "GILLILAND ", + "GILLIS ", "GILMAN ", "GILMER ", "GILMORE ", "GILSON ", "GINN ", "GIORDANO ", "GIPSON ", "GIRARD ", + "GIRON ", "GIROUX ", "GIST ", "GIVENS ", "GLADDEN ", "GLADNEY ", "GLASER ", "GLASGOW ", "GLASS ", "GLAZE ", + "GLEASON ", "GLENN ", "GLOVER ", "GLYNN ", "GOAD ", "GOBLE ", "GODDARD ", "GODFREY ", "GODINEZ ", "GODWIN ", + "GOEBEL ", "GOETZ ", "GOFF ", "GOFORTH ", "GOINS ", "GOLD ", "GOLDBERG ", "GOLDEN ", "GOLDMAN ", + "GOLDSMITH ", "GOLDSTEIN ", "GOMES ", "GOMEZ ", "GONSALVES ", "GONZALES ", "GONZALEZ ", "GOOCH ", "GOOD ", + "GOODE ", "GOODEN ", "GOODIN ", "GOODING ", "GOODMAN ", "GOODRICH ", "GOODSON ", "GOODWIN ", "GOOLSBY ", + "GORDON ", "GORE ", "GORHAM ", "GORMAN ", "GOSS ", "GOSSETT ", "GOUGH ", "GOULD ", "GOULET ", "GRACE ", + "GRACIA ", "GRADY ", "GRAF ", "GRAFF ", "GRAGG ", "GRAHAM ", "GRANADOS ", "GRANGER ", "GRANT ", "GRANTHAM ", + "GRAVES ", "GRAY ", "GRAYSON ", "GREATHOUSE ", "GRECO ", "GREEN ", "GREENBERG ", "GREENE ", "GREENFIELD ", + "GREENLEE ", "GREENWOOD ", "GREER ", "GREGG ", "GREGORY ", "GREINER ", "GRENIER ", "GRESHAM ", "GREY ", + "GRICE ", "GRIDER ", "GRIER ", "GRIFFIN ", "GRIFFIS ", "GRIFFITH ", "GRIFFITHS ", "GRIGGS ", "GRIGSBY ", + "GRIMES ", "GRIMM ", "GRISHAM ", "GRISSOM ", "GRISWOLD ", "GROCE ", "GROGAN ", "GROOMS ", "GROSS ", + "GROSSMAN ", "GROVE ", "GROVER ", "GROVES ", "GRUBB ", "GRUBBS ", "GRUBER ", "GUAJARDO ", "GUENTHER ", + "GUERIN ", "GUERRA ", "GUERRERO ", "GUESS ", "GUEST ", "GUEVARA ", "GUFFEY ", "GUIDRY ", "GUILLEN ", + "GUILLORY ", "GUINN ", "GULLEY ", "GUNDERSON ", "GUNN ", "GUNTER ", "GUNTHER ", "GURLEY ", "GUSTAFSON ", + "GUTHRIE ", "GUTIERREZ ", "GUY ", "GUYTON ", "GUZMAN ", "HA ", "HAAG ", "HAAS ", "HAASE ", "HACKER ", + "HACKETT ", "HACKNEY ", "HADDEN ", "HADLEY ", "HAGAN ", "HAGEN ", "HAGER ", "HAGGARD ", "HAGGERTY ", + "HAHN ", "HAIGHT ", "HAILEY ", "HAINES ", "HAIR ", "HAIRSTON ", "HALCOMB ", "HALE ", "HALES ", "HALEY ", + "HALL ", "HALLER ", "HALLMAN ", "HALSEY ", "HALSTEAD ", "HALVERSON ", "HAM ", "HAMBLIN ", "HAMBY ", + "HAMEL ", "HAMER ", "HAMILTON ", "HAMLIN ", "HAMM ", "HAMMER ", "HAMMETT ", "HAMMOND ", "HAMMONDS ", + "HAMMONS ", "HAMPTON ", "HAMRICK ", "HAN ", "HANCOCK ", "HAND ", "HANDLEY ", "HANDY ", "HANES ", "HANEY ", + "HANKINS ", "HANKS ", "HANLEY ", "HANLON ", "HANNA ", "HANNAH ", "HANNAN ", "HANNON ", "HANSEN ", "HANSON ", + "HARBIN ", "HARDAWAY ", "HARDEE ", "HARDEN ", "HARDER ", "HARDESTY ", "HARDIN ", "HARDING ", "HARDISON ", + "HARDMAN ", "HARDWICK ", "HARDY ", "HARE ", "HARGIS ", "HARGRAVE ", "HARGROVE ", "HARKINS ", "HARLAN ", + "HARLEY ", "HARLOW ", "HARMAN ", "HARMON ", "HARMS ", "HARNESS ", "HARP ", "HARPER ", "HARR ", "HARRELL ", + "HARRINGTON ", "HARRIS ", "HARRISON ", "HARRY ", "HART ", "HARTER ", "HARTLEY ", "HARTMAN ", "HARTMANN ", + "HARTWELL ", "HARVEY ", "HARWELL ", "HARWOOD ", "HASKELL ", "HASKINS ", "HASS ", "HASSELL ", "HASTINGS ", + "HATCH ", "HATCHER ", "HATCHETT ", "HATFIELD ", "HATHAWAY ", "HATLEY ", "HATTON ", "HAUGEN ", "HAUSER ", + "HAVENS ", "HAWES ", "HAWK ", "HAWKINS ", "HAWKS ", "HAWLEY ", "HAWTHORNE ", "HAY ", "HAYDEN ", "HAYES ", + "HAYNES ", "HAYS ", "HAYWARD ", "HAYWOOD ", "HAZEL ", "HEAD ", "HEADLEY ", "HEADRICK ", "HEALEY ", "HEALY ", + "HEARD ", "HEARN ", "HEATH ", "HEATON ", "HEBERT ", "HECK ", "HECKMAN ", "HEDGES ", "HEDRICK ", "HEFFNER ", + "HEFLIN ", "HEFNER ", "HEIM ", "HEIN ", "HEINRICH ", "HEINZ ", "HELD ", "HELLER ", "HELM ", "HELMS ", + "HELTON ", "HEMBREE ", "HEMPHILL ", "HENDERSON ", "HENDON ", "HENDRICK ", "HENDRICKS ", "HENDRICKSON ", + "HENDRIX ", "HENKE ", "HENLEY ", "HENNESSEY ", "HENNING ", "HENRY ", "HENSLEY ", "HENSON ", "HER ", + "HERBERT ", "HEREDIA ", "HERMAN ", "HERMANN ", "HERNANDEZ ", "HERNDON ", "HERR ", "HERRERA ", "HERRICK ", + "HERRIN ", "HERRING ", "HERRINGTON ", "HERRMANN ", "HERRON ", "HERSHBERGER ", "HERZOG ", "HESS ", "HESTER ", + "HEWITT ", "HEYWARD ", "HIATT ", "HIBBARD ", "HICKEY ", "HICKMAN ", "HICKS ", "HICKSON ", "HIDALGO ", + "HIGDON ", "HIGGINBOTHAM ", "HIGGINS ", "HIGGS ", "HIGH ", "HIGHTOWER ", "HILDEBRAND ", "HILDRETH ", + "HILL ", "HILLARD ", "HILLER ", "HILLIARD ", "HILLMAN ", "HILLS ", "HILTON ", "HIMES ", "HINDMAN ", + "HINDS ", "HINES ", "HINKLE ", "HINOJOSA ", "HINSON ", "HINTON ", "HIRSCH ", "HITCHCOCK ", "HITE ", "HITT ", + "HO ", "HOANG ", "HOBBS ", "HOBSON ", "HODGE ", "HODGES ", "HODGSON ", "HOFF ", "HOFFMAN ", "HOFFMANN ", + "HOGAN ", "HOGG ", "HOGUE ", "HOKE ", "HOLBROOK ", "HOLCOMB ", "HOLCOMBE ", "HOLDEN ", "HOLDER ", + "HOLGUIN ", "HOLIDAY ", "HOLLAND ", "HOLLENBECK ", "HOLLEY ", "HOLLIDAY ", "HOLLINGSWORTH ", "HOLLINS ", + "HOLLIS ", "HOLLOMAN ", "HOLLOWAY ", "HOLLY ", "HOLM ", "HOLMAN ", "HOLMES ", "HOLT ", "HOLTON ", "HOLTZ ", + "HOMAN ", "HOMER ", "HONEYCUTT ", "HONG ", "HOOD ", "HOOK ", "HOOKER ", "HOOKS ", "HOOPER ", "HOOVER ", + "HOPE ", "HOPKINS ", "HOPPE ", "HOPPER ", "HOPSON ", "HORAN ", "HORN ", "HORNE ", "HORNER ", "HORNSBY ", + "HOROWITZ ", "HORSLEY ", "HORTON ", "HORVATH ", "HOSKINS ", "HOSTETLER ", "HOUCK ", "HOUGH ", "HOUGHTON ", + "HOULE ", "HOUSE ", "HOUSER ", "HOUSTON ", "HOWARD ", "HOWE ", "HOWELL ", "HOWERTON ", "HOWES ", "HOWLAND ", + "HOY ", "HOYLE ", "HOYT ", "HSU ", "HUANG ", "HUBBARD ", "HUBER ", "HUBERT ", "HUDDLESTON ", "HUDGENS ", + "HUDGINS ", "HUDSON ", "HUERTA ", "HUEY ", "HUFF ", "HUFFMAN ", "HUGGINS ", "HUGHES ", "HUGHEY ", "HULL ", + "HULSEY ", "HUMES ", "HUMMEL ", "HUMPHREY ", "HUMPHREYS ", "HUMPHRIES ", "HUNDLEY ", "HUNT ", "HUNTER ", + "HUNTINGTON ", "HUNTLEY ", "HURD ", "HURLEY ", "HURST ", "HURT ", "HURTADO ", "HUSKEY ", "HUSSEY ", + "HUSTON ", "HUTCHENS ", "HUTCHERSON ", "HUTCHESON ", "HUTCHINGS ", "HUTCHINS ", "HUTCHINSON ", "HUTCHISON ", + "HUTSON ", "HUTTO ", "HUTTON ", "HUYNH ", "HWANG ", "HYATT ", "HYDE ", "HYLAND ", "HYLTON ", "HYMAN ", + "HYNES ", "IBARRA ", "INGLE ", "INGRAHAM ", "INGRAM ", "INMAN ", "IRBY ", "IRELAND ", "IRISH ", "IRIZARRY ", + "IRONS ", "IRVIN ", "IRVINE ", "IRVING ", "IRWIN ", "ISAAC ", "ISAACS ", "ISAACSON ", "ISBELL ", "ISOM ", + "ISON ", "ISRAEL ", "IVERSON ", "IVES ", "IVEY ", "IVORY ", "IVY ", "JACK ", "JACKMAN ", "JACKS ", + "JACKSON ", "JACOB ", "JACOBS ", "JACOBSEN ", "JACOBSON ", "JACOBY ", "JACQUES ", "JAEGER ", "JAMES ", + "JAMESON ", "JAMISON ", "JANES ", "JANKOWSKI ", "JANSEN ", "JANSSEN ", "JARAMILLO ", "JARRELL ", "JARRETT ", + "JARVIS ", "JASPER ", "JAY ", "JAYNES ", "JEAN ", "JEFFERIES ", "JEFFERS ", "JEFFERSON ", "JEFFERY ", + "JEFFREY ", "JEFFRIES ", "JENKINS ", "JENNINGS ", "JENSEN ", "JENSON ", "JERNIGAN ", "JESSUP ", "JETER ", + "JETT ", "JEWELL ", "JEWETT ", "JIMENEZ ", "JOBE ", "JOE ", "JOHANSEN ", "JOHN ", "JOHNS ", "JOHNSON ", + "JOHNSTON ", "JOINER ", "JOLLEY ", "JOLLY ", "JONES ", "JORDAN ", "JORDON ", "JORGENSEN ", "JORGENSON ", + "JOSE ", "JOSEPH ", "JOY ", "JOYCE ", "JOYNER ", "JUAREZ ", "JUDD ", "JUDE ", "JUDGE ", "JUDKINS ", + "JULIAN ", "JUNG ", "JUSTICE ", "JUSTUS ", "KAHN ", "KAISER ", "KAMINSKI ", "KANE ", "KANG ", "KAPLAN ", + "KARR ", "KASPER ", "KATZ ", "KAUFFMAN ", "KAUFMAN ", "KAY ", "KAYE ", "KEANE ", "KEARNEY ", "KEARNS ", + "KEATING ", "KEATON ", "KECK ", "KEE ", "KEEFE ", "KEEFER ", "KEEGAN ", "KEEL ", "KEELER ", "KEELING ", + "KEEN ", "KEENAN ", "KEENE ", "KEENER ", "KEENEY ", "KEETON ", "KEITH ", "KELLEHER ", "KELLER ", "KELLEY ", + "KELLOGG ", "KELLUM ", "KELLY ", "KELSEY ", "KELSO ", "KEMP ", "KEMPER ", "KENDALL ", "KENDRICK ", + "KENNEDY ", "KENNEY ", "KENNY ", "KENT ", "KENYON ", "KERN ", "KERNS ", "KERR ", "KESSLER ", "KETCHUM ", + "KEY ", "KEYES ", "KEYS ", "KEYSER ", "KHAN ", "KIDD ", "KIDWELL ", "KIEFER ", "KILGORE ", "KILLIAN ", + "KILPATRICK ", "KIM ", "KIMBALL ", "KIMBLE ", "KIMBRELL ", "KIMBROUGH ", "KIMMEL ", "KINARD ", "KINCAID ", + "KINDER ", "KING ", "KINGSLEY ", "KINNEY ", "KINSEY ", "KIRBY ", "KIRCHNER ", "KIRK ", "KIRKLAND ", + "KIRKPATRICK ", "KIRKWOOD ", "KISER ", "KISH ", "KITCHEN ", "KITCHENS ", "KLEIN ", "KLINE ", "KLINGER ", + "KNAPP ", "KNIGHT ", "KNOLL ", "KNOTT ", "KNOTTS ", "KNOWLES ", "KNOWLTON ", "KNOX ", "KNUDSEN ", + "KNUDSON ", "KNUTSON ", "KOCH ", "KOEHLER ", "KOENIG ", "KOHL ", "KOHLER ", "KOHN ", "KOLB ", "KONG ", + "KOONCE ", "KOONTZ ", "KOPP ", "KOVACH ", "KOWALSKI ", "KOZAK ", "KOZLOWSKI ", "KRAFT ", "KRAMER ", + "KRAUS ", "KRAUSE ", "KRAUSS ", "KREBS ", "KRIEGER ", "KROLL ", "KRUEGER ", "KRUG ", "KRUGER ", "KRUSE ", + "KUHN ", "KUNKEL ", "KUNTZ ", "KUNZ ", "KURTZ ", "KUYKENDALL ", "KYLE ", "LABBE ", "LABELLE ", "LACEY ", + "LACHANCE ", "LACKEY ", "LACROIX ", "LACY ", "LADD ", "LADNER ", "LAFFERTY ", "LAFLAMME ", "LAFLEUR ", + "LAI ", "LAIRD ", "LAKE ", "LAM ", "LAMAR ", "LAMB ", "LAMBERT ", "LAMM ", "LANCASTER ", "LANCE ", "LAND ", + "LANDERS ", "LANDIS ", "LANDON ", "LANDRUM ", "LANDRY ", "LANE ", "LANEY ", "LANG ", "LANGDON ", "LANGE ", + "LANGER ", "LANGFORD ", "LANGLEY ", "LANGLOIS ", "LANGSTON ", "LANHAM ", "LANIER ", "LANKFORD ", "LANNING ", + "LANTZ ", "LAPLANTE ", "LAPOINTE ", "LAPORTE ", "LARA ", "LARGE ", "LARKIN ", "LAROCHE ", "LAROSE ", + "LARRY ", "LARSEN ", "LARSON ", "LARUE ", "LASH ", "LASHLEY ", "LASSITER ", "LASTER ", "LATHAM ", + "LATIMER ", "LATTIMORE ", "LAU ", "LAUER ", "LAUGHLIN ", "LAVENDER ", "LAVIGNE ", "LAVOIE ", "LAW ", + "LAWHORN ", "LAWLER ", "LAWLESS ", "LAWRENCE ", "LAWS ", "LAWSON ", "LAWTON ", "LAY ", "LAYMAN ", "LAYNE ", + "LAYTON ", "LE ", "LEA ", "LEACH ", "LEAHY ", "LEAK ", "LEAKE ", "LEAL ", "LEAR ", "LEARY ", "LEAVITT ", + "LEBLANC ", "LEBRON ", "LECLAIR ", "LEDBETTER ", "LEDESMA ", "LEDFORD ", "LEDOUX ", "LEE ", "LEEPER ", + "LEES ", "LEFEBVRE ", "LEGER ", "LEGG ", "LEGGETT ", "LEHMAN ", "LEHMANN ", "LEIGH ", "LEIGHTON ", + "LEMASTER ", "LEMAY ", "LEMIEUX ", "LEMKE ", "LEMMON ", "LEMON ", "LEMONS ", "LEMUS ", "LENNON ", "LENTZ ", + "LENZ ", "LEON ", "LEONARD ", "LEONE ", "LERMA ", "LERNER ", "LEROY ", "LESLIE ", "LESSARD ", "LESTER ", + "LEUNG ", "LEVESQUE ", "LEVI ", "LEVIN ", "LEVINE ", "LEVY ", "LEW ", "LEWANDOWSKI ", "LEWIS ", "LEYVA ", + "LI ", "LIBBY ", "LIDDELL ", "LIEBERMAN ", "LIGHT ", "LIGHTFOOT ", "LIGHTNER ", "LIGON ", "LILES ", + "LILLEY ", "LILLY ", "LIM ", "LIMA ", "LIMON ", "LIN ", "LINARES ", "LINCOLN ", "LIND ", "LINDBERG ", + "LINDER ", "LINDGREN ", "LINDLEY ", "LINDQUIST ", "LINDSAY ", "LINDSEY ", "LINDSTROM ", "LINK ", "LINKOUS ", + "LINN ", "LINTON ", "LINVILLE ", "LIPSCOMB ", "LIRA ", "LISTER ", "LITTLE ", "LITTLEFIELD ", "LITTLEJOHN ", + "LITTLETON ", "LIU ", "LIVELY ", "LIVINGSTON ", "LLOYD ", "LO ", "LOCKE ", "LOCKETT ", "LOCKHART ", + "LOCKLEAR ", "LOCKWOOD ", "LOERA ", "LOFTIN ", "LOFTIS ", "LOFTON ", "LOGAN ", "LOGSDON ", "LOGUE ", + "LOMAX ", "LOMBARD ", "LOMBARDI ", "LOMBARDO ", "LONDON ", "LONG ", "LONGO ", "LONGORIA ", "LOOMIS ", + "LOONEY ", "LOPER ", "LOPES ", "LOPEZ ", "LORD ", "LORENZ ", "LORENZO ", "LOTT ", "LOUIS ", "LOVE ", + "LOVEJOY ", "LOVELACE ", "LOVELESS ", "LOVELL ", "LOVETT ", "LOVING ", "LOW ", "LOWE ", "LOWELL ", + "LOWERY ", "LOWMAN ", "LOWRY ", "LOY ", "LOYA ", "LOYD ", "LOZANO ", "LU ", "LUCAS ", "LUCE ", "LUCERO ", + "LUCIANO ", "LUCKETT ", "LUDWIG ", "LUGO ", "LUIS ", "LUJAN ", "LUKE ", "LUMPKIN ", "LUNA ", "LUND ", + "LUNDBERG ", "LUNDY ", "LUNSFORD ", "LUONG ", "LUSK ", "LUSTER ", "LUTHER ", "LUTTRELL ", "LUTZ ", "LY ", + "LYLE ", "LYLES ", "LYMAN ", "LYNCH ", "LYNN ", "LYON ", "LYONS ", "LYTLE ", "MA ", "MAAS ", "MABE ", + "MABRY ", "MACDONALD ", "MACE ", "MACHADO ", "MACIAS ", "MACK ", "MACKAY ", "MACKENZIE ", "MACKEY ", + "MACKIE ", "MACKLIN ", "MACLEAN ", "MACLEOD ", "MACON ", "MADDEN ", "MADDOX ", "MADERA ", "MADISON ", + "MADRID ", "MADRIGAL ", "MADSEN ", "MAES ", "MAESTAS ", "MAGANA ", "MAGEE ", "MAGGARD ", "MAGNUSON ", + "MAGUIRE ", "MAHAFFEY ", "MAHAN ", "MAHER ", "MAHON ", "MAHONEY ", "MAIER ", "MAIN ", "MAJOR ", "MAJORS ", + "MAKI ", "MALCOLM ", "MALDONADO ", "MALLEY ", "MALLORY ", "MALLOY ", "MALONE ", "MALONEY ", "MANCINI ", + "MANCUSO ", "MANESS ", "MANGUM ", "MANLEY ", "MANN ", "MANNING ", "MANNS ", "MANSFIELD ", "MANSON ", + "MANUEL ", "MANZO ", "MAPLE ", "MAPLES ", "MARBLE ", "MARCH ", "MARCHAND ", "MARCOTTE ", "MARCUM ", + "MARCUS ", "MARES ", "MARIN ", "MARINO ", "MARION ", "MARK ", "MARKHAM ", "MARKLEY ", "MARKS ", "MARLER ", + "MARLOW ", "MARLOWE ", "MARQUEZ ", "MARQUIS ", "MARR ", "MARRERO ", "MARROQUIN ", "MARSH ", "MARSHALL ", + "MARTEL ", "MARTELL ", "MARTENS ", "MARTIN ", "MARTINDALE ", "MARTINEZ ", "MARTINO ", "MARTINS ", + "MARTINSON ", "MARTZ ", "MARVIN ", "MARX ", "MASON ", "MASSEY ", "MASSIE ", "MAST ", "MASTERS ", + "MASTERSON ", "MATA ", "MATHENY ", "MATHESON ", "MATHEWS ", "MATHIAS ", "MATHIS ", "MATLOCK ", "MATNEY ", + "MATOS ", "MATSON ", "MATTESON ", "MATTHEW ", "MATTHEWS ", "MATTINGLY ", "MATTISON ", "MATTOS ", "MATTOX ", + "MATTSON ", "MAULDIN ", "MAUPIN ", "MAURER ", "MAURO ", "MAXEY ", "MAXFIELD ", "MAXWELL ", "MAY ", + "MAYBERRY ", "MAYER ", "MAYERS ", "MAYES ", "MAYFIELD ", "MAYHEW ", "MAYNARD ", "MAYO ", "MAYS ", "MAZZA ", + "MCADAMS ", "MCAFEE ", "MCALISTER ", "MCALLISTER ", "MCARTHUR ", "MCBEE ", "MCBRIDE ", "MCCABE ", + "MCCAFFREY ", "MCCAIN ", "MCCALL ", "MCCALLISTER ", "MCCALLUM ", "MCCANN ", "MCCANTS ", "MCCARTER ", + "MCCARTHY ", "MCCARTNEY ", "MCCARTY ", "MCCASKILL ", "MCCAULEY ", "MCCLAIN ", "MCCLANAHAN ", "MCCLARY ", + "MCCLEARY ", "MCCLELLAN ", "MCCLELLAND ", "MCCLENDON ", "MCCLINTOCK ", "MCCLINTON ", "MCCLOSKEY ", + "MCCLOUD ", "MCCLUNG ", "MCCLURE ", "MCCOLLUM ", "MCCOMBS ", "MCCONNELL ", "MCCOOL ", "MCCORD ", + "MCCORKLE ", "MCCORMACK ", "MCCORMICK ", "MCCOY ", "MCCRACKEN ", "MCCRARY ", "MCCRAY ", "MCCREARY ", + "MCCUE ", "MCCULLOCH ", "MCCULLOUGH ", "MCCUNE ", "MCCURDY ", "MCCURRY ", "MCCUTCHEON ", "MCDADE ", + "MCDANIEL ", "MCDANIELS ", "MCDERMOTT ", "MCDONALD ", "MCDONNELL ", "MCDONOUGH ", "MCDOUGAL ", "MCDOUGALL ", + "MCDOWELL ", "MCDUFFIE ", "MCELROY ", "MCEWEN ", "MCFADDEN ", "MCFALL ", "MCFARLAND ", "MCFARLANE ", + "MCGEE ", "MCGEHEE ", "MCGHEE ", "MCGILL ", "MCGINNIS ", "MCGOVERN ", "MCGOWAN ", "MCGRATH ", "MCGRAW ", + "MCGREGOR ", "MCGREW ", "MCGRIFF ", "MCGUIRE ", "MCHENRY ", "MCHUGH ", "MCINNIS ", "MCINTIRE ", "MCINTOSH ", + "MCINTYRE ", "MCKAY ", "MCKEE ", "MCKEEVER ", "MCKENNA ", "MCKENNEY ", "MCKENZIE ", "MCKEON ", "MCKEOWN ", + "MCKINLEY ", "MCKINNEY ", "MCKINNON ", "MCKNIGHT ", "MCLAIN ", "MCLAUGHLIN ", "MCLAURIN ", "MCLEAN ", + "MCLEMORE ", "MCLENDON ", "MCLEOD ", "MCMAHAN ", "MCMAHON ", "MCMANUS ", "MCMASTER ", "MCMILLAN ", + "MCMILLEN ", "MCMILLIAN ", "MCMULLEN ", "MCMURRAY ", "MCNABB ", "MCNAIR ", "MCNALLY ", "MCNAMARA ", + "MCNEAL ", "MCNEELY ", "MCNEIL ", "MCNEILL ", "MCNULTY ", "MCNUTT ", "MCPHERSON ", "MCQUEEN ", "MCRAE ", + "MCREYNOLDS ", "MCSWAIN ", "MCVAY ", "MCVEY ", "MCWHORTER ", "MCWILLIAMS ", "MEACHAM ", "MEAD ", "MEADE ", + "MEADOR ", "MEADOWS ", "MEANS ", "MEARS ", "MEDEIROS ", "MEDINA ", "MEDLEY ", "MEDLIN ", "MEDLOCK ", + "MEDRANO ", "MEEHAN ", "MEEK ", "MEEKER ", "MEEKS ", "MEIER ", "MEJIA ", "MELANCON ", "MELENDEZ ", "MELLO ", + "MELTON ", "MELVIN ", "MENA ", "MENARD ", "MENDENHALL ", "MENDEZ ", "MENDOZA ", "MENENDEZ ", "MERCADO ", + "MERCER ", "MERCHANT ", "MERCIER ", "MEREDITH ", "MERRELL ", "MERRICK ", "MERRILL ", "MERRIMAN ", + "MERRITT ", "MESA ", "MESSENGER ", "MESSER ", "MESSINA ", "METCALF ", "METZ ", "METZGER ", "METZLER ", + "MEYER ", "MEYERS ", "MEZA ", "MICHAEL ", "MICHAELS ", "MICHAUD ", "MICHEL ", "MICKENS ", "MIDDLETON ", + "MILAM ", "MILBURN ", "MILES ", "MILLARD ", "MILLER ", "MILLIGAN ", "MILLIKEN ", "MILLS ", "MILNE ", + "MILNER ", "MILTON ", "MIMS ", "MINER ", "MINNICK ", "MINOR ", "MINTER ", "MINTON ", "MINTZ ", "MIRANDA ", + "MIRELES ", "MITCHELL ", "MIXON ", "MIZE ", "MOBLEY ", "MOCK ", "MOE ", "MOELLER ", "MOEN ", "MOFFETT ", + "MOFFITT ", "MOHR ", "MOJICA ", "MOLINA ", "MOLL ", "MONACO ", "MONAGHAN ", "MONAHAN ", "MONEY ", "MONIZ ", + "MONK ", "MONROE ", "MONSON ", "MONTAGUE ", "MONTALVO ", "MONTANEZ ", "MONTANO ", "MONTEMAYOR ", "MONTERO ", + "MONTES ", "MONTEZ ", "MONTGOMERY ", "MONTOYA ", "MOODY ", "MOON ", "MOONEY ", "MOORE ", "MOORMAN ", + "MORA ", "MORALES ", "MORAN ", "MOREAU ", "MOREHEAD ", "MORELAND ", "MORENO ", "MOREY ", "MORGAN ", + "MORIARTY ", "MORIN ", "MORLEY ", "MORRELL ", "MORRILL ", "MORRIS ", "MORRISON ", "MORRISSEY ", "MORROW ", + "MORSE ", "MORTENSEN ", "MORTON ", "MOSBY ", "MOSELEY ", "MOSER ", "MOSES ", "MOSHER ", "MOSIER ", + "MOSLEY ", "MOSS ", "MOTLEY ", "MOTT ", "MOULTON ", "MOULTRIE ", "MOUNT ", "MOWERY ", "MOYA ", "MOYE ", + "MOYER ", "MUELLER ", "MUHAMMAD ", "MUIR ", "MULKEY ", "MULL ", "MULLEN ", "MULLER ", "MULLIGAN ", + "MULLIN ", "MULLINS ", "MULLIS ", "MUNCY ", "MUNDY ", "MUNIZ ", "MUNN ", "MUNOZ ", "MUNSON ", "MURDOCK ", + "MURILLO ", "MURPHY ", "MURRAY ", "MURRELL ", "MURRY ", "MUSE ", "MUSGROVE ", "MUSSER ", "MYERS ", "MYLES ", + "MYRICK ", "NABORS ", "NADEAU ", "NAGEL ", "NAGLE ", "NAGY ", "NAJERA ", "NAKAMURA ", "NALL ", "NANCE ", + "NAPIER ", "NAQUIN ", "NARANJO ", "NARVAEZ ", "NASH ", "NATHAN ", "NATION ", "NAVA ", "NAVARRETE ", + "NAVARRO ", "NAYLOR ", "NEAL ", "NEALY ", "NEEDHAM ", "NEEL ", "NEELEY ", "NEELY ", "NEFF ", "NEGRETE ", + "NEGRON ", "NEIL ", "NEILL ", "NELMS ", "NELSON ", "NESBITT ", "NESMITH ", "NESS ", "NESTOR ", "NETTLES ", + "NEUMAN ", "NEUMANN ", "NEVAREZ ", "NEVILLE ", "NEW ", "NEWBERRY ", "NEWBY ", "NEWCOMB ", "NEWELL ", + "NEWKIRK ", "NEWMAN ", "NEWSOM ", "NEWSOME ", "NEWTON ", "NG ", "NGO ", "NGUYEN ", "NICHOLAS ", "NICHOLS ", + "NICHOLSON ", "NICKEL ", "NICKERSON ", "NIELSEN ", "NIELSON ", "NIETO ", "NIEVES ", "NILES ", "NIX ", + "NIXON ", "NOBLE ", "NOBLES ", "NOE ", "NOEL ", "NOLAN ", "NOLAND ", "NOLEN ", "NOLL ", "NOONAN ", + "NORFLEET ", "NORIEGA ", "NORMAN ", "NORRIS ", "NORTH ", "NORTON ", "NORWOOD ", "NOVAK ", "NOVOTNY ", + "NOWAK ", "NOWLIN ", "NOYES ", "NUGENT ", "NULL ", "NUMBERS ", "NUNES ", "NUNEZ ", "NUNLEY ", "NUNN ", + "NUTT ", "NUTTER ", "NYE ", "OAKES ", "OAKLEY ", "OAKS ", "OATES ", "OBRIEN ", "OBRYAN ", "OCAMPO ", + "OCASIO ", "OCHOA ", "OCHS ", "OCONNELL ", "OCONNER ", "OCONNOR ", "ODELL ", "ODEN ", "ODOM ", "ODONNELL ", + "ODUM ", "OGDEN ", "OGLE ", "OGLESBY ", "OH ", "OHARA ", "OJEDA ", "OKEEFE ", "OLDHAM ", "OLDS ", "OLEARY ", + "OLIPHANT ", "OLIVA ", "OLIVARES ", "OLIVAREZ ", "OLIVAS ", "OLIVE ", "OLIVEIRA ", "OLIVER ", "OLIVO ", + "OLMSTEAD ", "OLSEN ", "OLSON ", "OLVERA ", "OMALLEY ", "ONEAL ", "ONEIL ", "ONEILL ", "ONTIVEROS ", + "ORDONEZ ", "OREILLY ", "ORELLANA ", "ORLANDO ", "ORNELAS ", "OROSCO ", "OROURKE ", "OROZCO ", "ORR ", + "ORTA ", "ORTEGA ", "ORTIZ ", "OSBORN ", "OSBORNE ", "OSBURN ", "OSGOOD ", "OSHEA ", "OSORIO ", "OSTEEN ", + "OSTRANDER ", "OSULLIVAN ", "OSWALD ", "OSWALT ", "OTERO ", "OTIS ", "OTOOLE ", "OTT ", "OTTO ", + "OUELLETTE ", "OUTLAW ", "OVERBY ", "OVERSTREET ", "OVERTON ", "OWEN ", "OWENS ", "PACE ", "PACHECO ", + "PACK ", "PACKARD ", "PACKER ", "PADGETT ", "PADILLA ", "PAGAN ", "PAGE ", "PAIGE ", "PAINE ", "PAINTER ", + "PAK ", "PALACIOS ", "PALMA ", "PALMER ", "PALUMBO ", "PANNELL ", "PANTOJA ", "PAPE ", "PAPPAS ", + "PAQUETTE ", "PARADIS ", "PARDO ", "PAREDES ", "PARENT ", "PARHAM ", "PARIS ", "PARISH ", "PARK ", + "PARKER ", "PARKINSON ", "PARKS ", "PARNELL ", "PARR ", "PARRA ", "PARRIS ", "PARRISH ", "PARROTT ", + "PARRY ", "PARSON ", "PARSONS ", "PARTIN ", "PARTRIDGE ", "PASSMORE ", "PATE ", "PATEL ", "PATERSON ", + "PATINO ", "PATRICK ", "PATTEN ", "PATTERSON ", "PATTON ", "PAUL ", "PAULEY ", "PAULSEN ", "PAULSON ", + "PAXTON ", "PAYNE ", "PAYTON ", "PAZ ", "PEACE ", "PEACHEY ", "PEACOCK ", "PEAK ", "PEARCE ", "PEARSON ", + "PEASE ", "PECK ", "PEDERSEN ", "PEDERSON ", "PEEBLES ", "PEEK ", "PEEL ", "PEELER ", "PEEPLES ", + "PELLETIER ", "PELTIER ", "PEMBERTON ", "PENA ", "PENCE ", "PENDER ", "PENDERGRASS ", "PENDLETON ", "PENN ", + "PENNELL ", "PENNINGTON ", "PENNY ", "PEOPLES ", "PEPPER ", "PERALES ", "PERALTA ", "PERDUE ", "PEREA ", + "PEREIRA ", "PEREZ ", "PERKINS ", "PERREAULT ", "PERRIN ", "PERRON ", "PERRY ", "PERRYMAN ", "PERSON ", + "PETER ", "PETERMAN ", "PETERS ", "PETERSEN ", "PETERSON ", "PETIT ", "PETRIE ", "PETTIGREW ", "PETTIS ", + "PETTIT ", "PETTWAY ", "PETTY ", "PEYTON ", "PFEIFER ", "PFEIFFER ", "PHAM ", "PHAN ", "PHELAN ", "PHELPS ", + "PHIFER ", "PHILLIPS ", "PHIPPS ", "PICARD ", "PICKARD ", "PICKENS ", "PICKERING ", "PICKETT ", "PIERCE ", + "PIERRE ", "PIERSON ", "PIKE ", "PILCHER ", "PIMENTEL ", "PINA ", "PINCKNEY ", "PINEDA ", "PINKERTON ", + "PINKSTON ", "PINO ", "PINSON ", "PINTO ", "PIPER ", "PIPKIN ", "PIPPIN ", "PITMAN ", "PITRE ", "PITT ", + "PITTMAN ", "PITTS ", "PLACE ", "PLANTE ", "PLATT ", "PLEASANT ", "PLUMMER ", "PLUNKETT ", "POE ", "POGUE ", + "POINDEXTER ", "POINTER ", "POIRIER ", "POLANCO ", "POLAND ", "POLING ", "POLK ", "POLLACK ", "POLLARD ", + "POLLOCK ", "POMEROY ", "PONCE ", "POND ", "PONDER ", "POOL ", "POOLE ", "POORE ", "POPE ", "POPP ", + "PORTER ", "PORTERFIELD ", "PORTILLO ", "POSEY ", "POST ", "POSTON ", "POTTER ", "POTTS ", "POULIN ", + "POUNDS ", "POWELL ", "POWER ", "POWERS ", "PRADO ", "PRATER ", "PRATHER ", "PRATT ", "PRENTICE ", + "PRESCOTT ", "PRESLEY ", "PRESSLEY ", "PRESTON ", "PREWITT ", "PRICE ", "PRICHARD ", "PRIDE ", "PRIDGEN ", + "PRIEST ", "PRIETO ", "PRINCE ", "PRINGLE ", "PRITCHARD ", "PRITCHETT ", "PROCTOR ", "PROFFITT ", + "PROSSER ", "PROVOST ", "PRUETT ", "PRUITT ", "PRYOR ", "PUCKETT ", "PUENTE ", "PUGH ", "PULIDO ", + "PULLEN ", "PULLEY ", "PULLIAM ", "PURCELL ", "PURDY ", "PURNELL ", "PURVIS ", "PUTMAN ", "PUTNAM ", + "PYLE ", "QUALLS ", "QUARLES ", "QUEEN ", "QUEZADA ", "QUICK ", "QUIGLEY ", "QUILLEN ", "QUINLAN ", + "QUINN ", "QUINONES ", "QUINONEZ ", "QUINTANA ", "QUINTANILLA ", "QUINTERO ", "QUIROZ ", "RADER ", + "RADFORD ", "RAFFERTY ", "RAGAN ", "RAGLAND ", "RAGSDALE ", "RAINES ", "RAINEY ", "RAINS ", "RALEY ", + "RALPH ", "RALSTON ", "RAMEY ", "RAMIREZ ", "RAMON ", "RAMOS ", "RAMSAY ", "RAMSEY ", "RAND ", "RANDALL ", + "RANDLE ", "RANDOLPH ", "RANEY ", "RANGEL ", "RANKIN ", "RANSOM ", "RAPP ", "RASH ", "RASMUSSEN ", + "RATCLIFF ", "RATLIFF ", "RAU ", "RAUCH ", "RAWLINGS ", "RAWLINS ", "RAWLS ", "RAY ", "RAYBURN ", + "RAYFORD ", "RAYMOND ", "RAYNOR ", "RAZO ", "REA ", "READ ", "REAGAN ", "REARDON ", "REAVES ", "RECTOR ", + "REDD ", "REDDEN ", "REDDICK ", "REDDING ", "REDDY ", "REDMAN ", "REDMON ", "REDMOND ", "REECE ", "REED ", + "REEDER ", "REEDY ", "REES ", "REESE ", "REEVES ", "REGALADO ", "REGAN ", "REGISTER ", "REICH ", + "REICHERT ", "REID ", "REILLY ", "REINHARDT ", "REINHART ", "REIS ", "REITER ", "RENDON ", "RENFRO ", + "RENNER ", "RENO ", "RENTERIA ", "REUTER ", "REY ", "REYES ", "REYNA ", "REYNOLDS ", "REYNOSO ", "RHEA ", + "RHOADES ", "RHOADS ", "RHODEN ", "RHODES ", "RICCI ", "RICE ", "RICH ", "RICHARD ", "RICHARDS ", + "RICHARDSON ", "RICHEY ", "RICHIE ", "RICHMOND ", "RICHTER ", "RICKARD ", "RICKER ", "RICKETTS ", + "RICKMAN ", "RICKS ", "RICO ", "RIDDELL ", "RIDDICK ", "RIDDLE ", "RIDENOUR ", "RIDER ", "RIDGEWAY ", + "RIDLEY ", "RIFE ", "RIGBY ", "RIGGINS ", "RIGGS ", "RIGSBY ", "RILEY ", "RINALDI ", "RINEHART ", "RING ", + "RIOS ", "RIPLEY ", "RITCHEY ", "RITCHIE ", "RITTER ", "RIVAS ", "RIVERA ", "RIVERS ", "RIZZO ", "ROACH ", + "ROARK ", "ROBB ", "ROBBINS ", "ROBERGE ", "ROBERSON ", "ROBERT ", "ROBERTS ", "ROBERTSON ", "ROBEY ", + "ROBINETTE ", "ROBINS ", "ROBINSON ", "ROBISON ", "ROBLES ", "ROBSON ", "ROBY ", "ROCHA ", "ROCHE ", + "ROCK ", "ROCKWELL ", "RODEN ", "RODERICK ", "RODGERS ", "RODRIGUE ", "RODRIGUES ", "RODRIGUEZ ", + "RODRIQUEZ ", "ROE ", "ROGER ", "ROGERS ", "ROHR ", "ROJAS ", "ROLAND ", "ROLDAN ", "ROLLER ", "ROLLINS ", + "ROMAN ", "ROMANO ", "ROMEO ", "ROMERO ", "ROMO ", "RONEY ", "ROONEY ", "ROOT ", "ROPER ", "ROQUE ", + "ROSA ", "ROSADO ", "ROSALES ", "ROSARIO ", "ROSAS ", "ROSE ", "ROSEN ", "ROSENBAUM ", "ROSENBERG ", + "ROSENTHAL ", "ROSS ", "ROSSER ", "ROSSI ", "ROTH ", "ROUNDS ", "ROUNDTREE ", "ROUNTREE ", "ROUSE ", + "ROUSH ", "ROUSSEAU ", "ROUSSEL ", "ROWAN ", "ROWE ", "ROWELL ", "ROWLAND ", "ROWLEY ", "ROY ", "ROYAL ", + "ROYBAL ", "ROYER ", "ROYSTER ", "RUBIN ", "RUBIO ", "RUBY ", "RUCKER ", "RUDD ", "RUDOLPH ", "RUFF ", + "RUFFIN ", "RUIZ ", "RUNYAN ", "RUNYON ", "RUPERT ", "RUPP ", "RUSH ", "RUSHING ", "RUSS ", "RUSSELL ", + "RUSSO ", "RUST ", "RUTH ", "RUTHERFORD ", "RUTLEDGE ", "RYAN ", "RYDER ", "SAAVEDRA ", "SABO ", "SACCO ", + "SADLER ", "SAENZ ", "SAGE ", "SAGER ", "SALAS ", "SALAZAR ", "SALCEDO ", "SALCIDO ", "SALDANA ", + "SALDIVAR ", "SALERNO ", "SALES ", "SALGADO ", "SALINAS ", "SALISBURY ", "SALLEE ", "SALLEY ", "SALMON ", + "SALTER ", "SAM ", "SAMMONS ", "SAMPLE ", "SAMPLES ", "SAMPSON ", "SAMS ", "SAMSON ", "SAMUEL ", "SAMUELS ", + "SANBORN ", "SANCHES ", "SANCHEZ ", "SANDBERG ", "SANDER ", "SANDERS ", "SANDERSON ", "SANDLIN ", + "SANDOVAL ", "SANDS ", "SANFORD ", "SANTANA ", "SANTIAGO ", "SANTOS ", "SAPP ", "SARGENT ", "SASSER ", + "SATTERFIELD ", "SAUCEDO ", "SAUCIER ", "SAUER ", "SAULS ", "SAUNDERS ", "SAVAGE ", "SAVOY ", "SAWYER ", + "SAWYERS ", "SAXON ", "SAXTON ", "SAYERS ", "SAYLOR ", "SAYRE ", "SCALES ", "SCANLON ", "SCARBOROUGH ", + "SCARBROUGH ", "SCHAEFER ", "SCHAEFFER ", "SCHAFER ", "SCHAFFER ", "SCHELL ", "SCHERER ", "SCHILLER ", + "SCHILLING ", "SCHINDLER ", "SCHMID ", "SCHMIDT ", "SCHMITT ", "SCHMITZ ", "SCHNEIDER ", "SCHOFIELD ", + "SCHOLL ", "SCHOONOVER ", "SCHOTT ", "SCHRADER ", "SCHREIBER ", "SCHREINER ", "SCHROEDER ", "SCHUBERT ", + "SCHULER ", "SCHULTE ", "SCHULTZ ", "SCHULZ ", "SCHULZE ", "SCHUMACHER ", "SCHUSTER ", "SCHWAB ", + "SCHWARTZ ", "SCHWARZ ", "SCHWEITZER ", "SCOGGINS ", "SCOTT ", "SCRIBNER ", "SCROGGINS ", "SCRUGGS ", + "SCULLY ", "SEAL ", "SEALS ", "SEAMAN ", "SEARCY ", "SEARS ", "SEATON ", "SEAY ", "SEE ", "SEELEY ", + "SEGURA ", "SEIBERT ", "SEIDEL ", "SEIFERT ", "SEILER ", "SEITZ ", "SELBY ", "SELF ", "SELL ", "SELLERS ", + "SELLS ", "SENA ", "SEPULVEDA ", "SERNA ", "SERRANO ", "SESSIONS ", "SETTLE ", "SETTLES ", "SEVERSON ", + "SEWARD ", "SEWELL ", "SEXTON ", "SEYMORE ", "SEYMOUR ", "SHACKELFORD ", "SHADE ", "SHAFER ", "SHAFFER ", + "SHAH ", "SHANK ", "SHANKS ", "SHANNON ", "SHAPIRO ", "SHARKEY ", "SHARP ", "SHARPE ", "SHAVER ", "SHAW ", + "SHAY ", "SHEA ", "SHEARER ", "SHEEHAN ", "SHEETS ", "SHEFFIELD ", "SHELBY ", "SHELDON ", "SHELL ", + "SHELLEY ", "SHELLY ", "SHELTON ", "SHEPARD ", "SHEPHARD ", "SHEPHERD ", "SHEPPARD ", "SHERIDAN ", + "SHERMAN ", "SHERRILL ", "SHERROD ", "SHERRY ", "SHERWOOD ", "SHIELDS ", "SHIFFLETT ", "SHIN ", "SHINN ", + "SHIPLEY ", "SHIPMAN ", "SHIPP ", "SHIRLEY ", "SHIVELY ", "SHIVERS ", "SHOCKLEY ", "SHOEMAKER ", "SHOOK ", + "SHORE ", "SHORES ", "SHORT ", "SHORTER ", "SHRADER ", "SHULER ", "SHULL ", "SHULTZ ", "SHUMAKER ", + "SHUMAN ", "SHUMATE ", "SIBLEY ", "SIDES ", "SIEGEL ", "SIERRA ", "SIGLER ", "SIKES ", "SILER ", "SILLS ", + "SILVA ", "SILVER ", "SILVERMAN ", "SILVERS ", "SILVIA ", "SIMMONS ", "SIMMS ", "SIMON ", "SIMONE ", + "SIMONS ", "SIMONSON ", "SIMPKINS ", "SIMPSON ", "SIMS ", "SINCLAIR ", "SINGER ", "SINGH ", "SINGLETARY ", + "SINGLETON ", "SIPES ", "SISCO ", "SISK ", "SISSON ", "SIZEMORE ", "SKAGGS ", "SKELTON ", "SKIDMORE ", + "SKINNER ", "SKIPPER ", "SLACK ", "SLADE ", "SLAGLE ", "SLATER ", "SLATON ", "SLATTERY ", "SLAUGHTER ", + "SLAYTON ", "SLEDGE ", "SLOAN ", "SLOCUM ", "SLONE ", "SMALL ", "SMALLEY ", "SMALLS ", "SMALLWOOD ", + "SMART ", "SMILEY ", "SMITH ", "SMITHSON ", "SMOOT ", "SMOTHERS ", "SMYTH ", "SNEAD ", "SNEED ", "SNELL ", + "SNIDER ", "SNIPES ", "SNODGRASS ", "SNOW ", "SNOWDEN ", "SNYDER ", "SOARES ", "SOLANO ", "SOLIS ", + "SOLIZ ", "SOLOMON ", "SOMERS ", "SOMERVILLE ", "SOMMER ", "SOMMERS ", "SONG ", "SORENSEN ", "SORENSON ", + "SORIA ", "SORIANO ", "SORRELL ", "SOSA ", "SOTELO ", "SOTO ", "SOUSA ", "SOUTH ", "SOUTHARD ", + "SOUTHERLAND ", "SOUTHERN ", "SOUZA ", "SOWELL ", "SOWERS ", "SPAIN ", "SPALDING ", "SPANGLER ", "SPANN ", + "SPARKMAN ", "SPARKS ", "SPARROW ", "SPAULDING ", "SPEAR ", "SPEARMAN ", "SPEARS ", "SPEED ", "SPEER ", + "SPEIGHT ", "SPELLMAN ", "SPENCE ", "SPENCER ", "SPERRY ", "SPICER ", "SPILLMAN ", "SPINKS ", "SPIVEY ", + "SPOONER ", "SPRADLIN ", "SPRAGUE ", "SPRIGGS ", "SPRING ", "SPRINGER ", "SPROUSE ", "SPRUILL ", + "SPURGEON ", "SPURLOCK ", "SQUIRES ", "STACEY ", "STACK ", "STACKHOUSE ", "STACY ", "STAFFORD ", "STAGGS ", + "STAHL ", "STALEY ", "STALLINGS ", "STALLWORTH ", "STAMM ", "STAMPER ", "STAMPS ", "STANFIELD ", + "STANFORD ", "STANLEY ", "STANTON ", "STAPLES ", "STAPLETON ", "STARK ", "STARKEY ", "STARKS ", "STARLING ", + "STARNES ", "STARR ", "STATEN ", "STATON ", "STAUFFER ", "STCLAIR ", "STEADMAN ", "STEARNS ", "STEED ", + "STEEL ", "STEELE ", "STEEN ", "STEFFEN ", "STEGALL ", "STEIN ", "STEINBERG ", "STEINER ", "STEPHEN ", + "STEPHENS ", "STEPHENSON ", "STEPP ", "STERLING ", "STERN ", "STEVENS ", "STEVENSON ", "STEWARD ", + "STEWART ", "STIDHAM ", "STILES ", "STILL ", "STILLMAN ", "STILLWELL ", "STILTNER ", "STINE ", "STINNETT ", + "STINSON ", "STITT ", "STJOHN ", "STOCK ", "STOCKTON ", "STODDARD ", "STOKER ", "STOKES ", "STOLL ", + "STONE ", "STONER ", "STOREY ", "STORY ", "STOTT ", "STOUT ", "STOVALL ", "STOVER ", "STOWE ", "STPIERRE ", + "STRAIN ", "STRAND ", "STRANGE ", "STRATTON ", "STRAUB ", "STRAUSS ", "STREET ", "STREETER ", "STRICKLAND ", + "STRINGER ", "STRONG ", "STROTHER ", "STROUD ", "STROUP ", "STRUNK ", "STUART ", "STUBBLEFIELD ", "STUBBS ", + "STUCKEY ", "STULL ", "STUMP ", "STURDIVANT ", "STURGEON ", "STURGILL ", "STURGIS ", "STURM ", "STYLES ", + "SUAREZ ", "SUGGS ", "SULLIVAN ", "SUMMERLIN ", "SUMMERS ", "SUMNER ", "SUMPTER ", "SUN ", "SUTHERLAND ", + "SUTTER ", "SUTTON ", "SWAFFORD ", "SWAIN ", "SWAN ", "SWANK ", "SWANN ", "SWANSON ", "SWARTZ ", + "SWEARINGEN ", "SWEAT ", "SWEENEY ", "SWEET ", "SWENSON ", "SWIFT ", "SWISHER ", "SWITZER ", "SWOPE ", + "SYKES ", "SYLVESTER ", "TABER ", "TABOR ", "TACKETT ", "TAFT ", "TAGGART ", "TALBERT ", "TALBOT ", + "TALBOTT ", "TALLENT ", "TALLEY ", "TAM ", "TAMAYO ", "TAN ", "TANAKA ", "TANG ", "TANNER ", "TAPIA ", + "TAPP ", "TARVER ", "TATE ", "TATUM ", "TAVARES ", "TAYLOR ", "TEAGUE ", "TEAL ", "TEEL ", "TEETER ", + "TEJADA ", "TEJEDA ", "TELLEZ ", "TEMPLE ", "TEMPLETON ", "TENNANT ", "TENNEY ", "TERRELL ", "TERRILL ", + "TERRY ", "THACKER ", "THAMES ", "THAO ", "THARP ", "THATCHER ", "THAYER ", "THERIAULT ", "THERIOT ", + "THIBODEAU ", "THIBODEAUX ", "THIEL ", "THIGPEN ", "THOMAS ", "THOMASON ", "THOMPSON ", "THOMSEN ", + "THOMSON ", "THORN ", "THORNBURG ", "THORNE ", "THORNHILL ", "THORNTON ", "THORP ", "THORPE ", "THORTON ", + "THRASH ", "THRASHER ", "THURMAN ", "THURSTON ", "TIBBETTS ", "TIBBS ", "TICE ", "TIDWELL ", "TIERNEY ", + "TIJERINA ", "TILLER ", "TILLERY ", "TILLEY ", "TILLMAN ", "TILTON ", "TIMM ", "TIMMONS ", "TINKER ", + "TINSLEY ", "TIPTON ", "TIRADO ", "TISDALE ", "TITUS ", "TOBIAS ", "TOBIN ", "TODD ", "TOLBERT ", "TOLEDO ", + "TOLER ", "TOLIVER ", "TOLLIVER ", "TOM ", "TOMLIN ", "TOMLINSON ", "TOMPKINS ", "TONEY ", "TONG ", "TORO ", + "TORRENCE ", "TORRES ", "TORREZ ", "TOTH ", "TOTTEN ", "TOVAR ", "TOWNES ", "TOWNS ", "TOWNSEND ", "TRACY ", + "TRAHAN ", "TRAMMELL ", "TRAN ", "TRAPP ", "TRASK ", "TRAVERS ", "TRAVIS ", "TRAYLOR ", "TREADWAY ", + "TREADWELL ", "TREJO ", "TREMBLAY ", "TRENT ", "TREVINO ", "TRIBBLE ", "TRICE ", "TRIMBLE ", "TRINIDAD ", + "TRIPLETT ", "TRIPP ", "TROTTER ", "TROUT ", "TROUTMAN ", "TROY ", "TRUDEAU ", "TRUE ", "TRUITT ", + "TRUJILLO ", "TRUONG ", "TUBBS ", "TUCK ", "TUCKER ", "TUGGLE ", "TURK ", "TURLEY ", "TURMAN ", "TURNBULL ", + "TURNER ", "TURNEY ", "TURPIN ", "TUTTLE ", "TYLER ", "TYNER ", "TYREE ", "TYSON ", "ULRICH ", "UNDERHILL ", + "UNDERWOOD ", "UNGER ", "UPCHURCH ", "UPSHAW ", "UPTON ", "URBAN ", "URBINA ", "URIBE ", "USHER ", "UTLEY ", + "VAIL ", "VALADEZ ", "VALDES ", "VALDEZ ", "VALENCIA ", "VALENTI ", "VALENTIN ", "VALENTINE ", + "VALENZUELA ", "VALERIO ", "VALLE ", "VALLEJO ", "VALLES ", "VAN ", "VANBUREN ", "VANCE ", "VANDIVER ", + "VANDYKE ", "VANG ", "VANHOOSE ", "VANHORN ", "VANMETER ", "VANN ", "VANOVER ", "VANWINKLE ", "VARELA ", + "VARGAS ", "VARNER ", "VARNEY ", "VASQUEZ ", "VAUGHAN ", "VAUGHN ", "VAUGHT ", "VAZQUEZ ", "VEAL ", "VEGA ", + "VELA ", "VELASCO ", "VELASQUEZ ", "VELAZQUEZ ", "VELEZ ", "VENABLE ", "VENEGAS ", "VENTURA ", "VERA ", + "VERDIN ", "VERGARA ", "VERNON ", "VEST ", "VETTER ", "VICK ", "VICKERS ", "VICKERY ", "VICTOR ", "VIDAL ", + "VIEIRA ", "VIERA ", "VIGIL ", "VILLA ", "VILLALOBOS ", "VILLANUEVA ", "VILLAREAL ", "VILLARREAL ", + "VILLASENOR ", "VILLEGAS ", "VINCENT ", "VINES ", "VINSON ", "VITALE ", "VO ", "VOGEL ", "VOGT ", "VOSS ", + "VU ", "VUE ", "WADDELL ", "WADE ", "WADSWORTH ", "WAGGONER ", "WAGNER ", "WAGONER ", "WAHL ", "WAITE ", + "WAKEFIELD ", "WALDEN ", "WALDRON ", "WALDROP ", "WALKER ", "WALL ", "WALLACE ", "WALLEN ", "WALLER ", + "WALLING ", "WALLIS ", "WALLS ", "WALSH ", "WALSTON ", "WALTER ", "WALTERS ", "WALTON ", "WAMPLER ", + "WANG ", "WARD ", "WARDEN ", "WARE ", "WARFIELD ", "WARNER ", "WARREN ", "WASHBURN ", "WASHINGTON ", + "WASSON ", "WATERMAN ", "WATERS ", "WATKINS ", "WATSON ", "WATT ", "WATTERS ", "WATTS ", "WAUGH ", "WAY ", + "WAYNE ", "WEATHERFORD ", "WEATHERLY ", "WEATHERS ", "WEAVER ", "WEBB ", "WEBBER ", "WEBER ", "WEBSTER ", + "WEDDLE ", "WEED ", "WEEKS ", "WEEMS ", "WEINBERG ", "WEINER ", "WEINSTEIN ", "WEIR ", "WEIS ", "WEISS ", + "WELCH ", "WELDON ", "WELKER ", "WELLER ", "WELLMAN ", "WELLS ", "WELSH ", "WENDT ", "WENGER ", + "WENTWORTH ", "WENTZ ", "WENZEL ", "WERNER ", "WERTZ ", "WESLEY ", "WEST ", "WESTBROOK ", "WESTER ", + "WESTFALL ", "WESTMORELAND ", "WESTON ", "WETZEL ", "WHALEN ", "WHALEY ", "WHARTON ", "WHATLEY ", "WHEAT ", + "WHEATLEY ", "WHEATON ", "WHEELER ", "WHELAN ", "WHIPPLE ", "WHITAKER ", "WHITCOMB ", "WHITE ", "WHITED ", + "WHITEHEAD ", "WHITEHURST ", "WHITEMAN ", "WHITESIDE ", "WHITFIELD ", "WHITING ", "WHITLEY ", "WHITLOCK ", + "WHITLOW ", "WHITMAN ", "WHITMIRE ", "WHITMORE ", "WHITNEY ", "WHITSON ", "WHITT ", "WHITTAKER ", + "WHITTEN ", "WHITTINGTON ", "WHITTLE ", "WHITWORTH ", "WHYTE ", "WICK ", "WICKER ", "WICKHAM ", "WICKS ", + "WIESE ", "WIGGINS ", "WILBANKS ", "WILBER ", "WILBUR ", "WILBURN ", "WILCOX ", "WILD ", "WILDE ", + "WILDER ", "WILES ", "WILEY ", "WILHELM ", "WILHITE ", "WILKE ", "WILKERSON ", "WILKES ", "WILKINS ", + "WILKINSON ", "WILKS ", "WILL ", "WILLARD ", "WILLETT ", "WILLEY ", "WILLIAM ", "WILLIAMS ", "WILLIAMSON ", + "WILLIFORD ", "WILLINGHAM ", "WILLIS ", "WILLOUGHBY ", "WILLS ", "WILLSON ", "WILMOTH ", "WILSON ", "WILT ", + "WIMBERLY ", "WINCHESTER ", "WINDHAM ", "WINFIELD ", "WINFREY ", "WING ", "WINGATE ", "WINGFIELD ", + "WINKLER ", "WINN ", "WINSLOW ", "WINSTEAD ", "WINSTON ", "WINTER ", "WINTERS ", "WIRTH ", "WISE ", + "WISEMAN ", "WISNIEWSKI ", "WITCHER ", "WITHERS ", "WITHERSPOON ", "WITHROW ", "WITT ", "WITTE ", + "WOFFORD ", "WOLF ", "WOLFE ", "WOLFF ", "WOLFORD ", "WOMACK ", "WONG ", "WOO ", "WOOD ", "WOODALL ", + "WOODARD ", "WOODBURY ", "WOODCOCK ", "WOODEN ", "WOODLEY ", "WOODRUFF ", "WOODS ", "WOODSON ", "WOODWARD ", + "WOODWORTH ", "WOODY ", "WOOLDRIDGE ", "WOOLEY ", "WOOTEN ", "WORD ", "WORDEN ", "WORKMAN ", "WORLEY ", + "WORRELL ", "WORSHAM ", "WORTH ", "WORTHAM ", "WORTHINGTON ", "WORTHY ", "WRAY ", "WREN ", "WRIGHT ", "WU ", + "WYANT ", "WYATT ", "WYLIE ", "WYMAN ", "WYNN ", "WYNNE ", "XIONG ", "YAMAMOTO ", "YANCEY ", "YANEZ ", + "YANG ", "YARBROUGH ", "YATES ", "YAZZIE ", "YBARRA ", "YEAGER ", "YEE ", "YI ", "YOCUM ", "YODER ", "YOO ", + "YOON ", "YORK ", "YOST ", "YOUNG ", "YOUNGBLOOD ", "YOUNGER ", "YOUNT ", "YU ", "ZAMBRANO ", "ZAMORA ", + "ZAPATA ", "ZARAGOZA ", "ZARATE ", "ZAVALA ", "ZEIGLER ", "ZELLER ", "ZEPEDA ", "ZHANG ", "ZIEGLER ", + "ZIELINSKI ", "ZIMMER ", "ZIMMERMAN ", "ZINK ", "ZOOK ", "ZUNIGA " }; + + public static String generateRandomName() { + String first, last; + first = mFirstNames[MathUtils.randInt(0, mFirstNames.length-1)].toLowerCase(); + last = mLastNames[MathUtils.randInt(0, mLastNames.length-1)].toLowerCase(); + if (first.equalsIgnoreCase(last)) { + while (first.equalsIgnoreCase(last)) + first = mFirstNames[MathUtils.randInt(0, mFirstNames.length-1)].toLowerCase(); + } + first.substring(0, 1).toUpperCase(); + last.substring(0, 1).toUpperCase(); + return first+" "+last; + + } + +} diff --git a/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java b/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java new file mode 100644 index 0000000000..eb3200c21d --- /dev/null +++ b/src/Java/gtPlusPlus/plugin/villagers/VillagerUtils.java @@ -0,0 +1,24 @@ +package gtPlusPlus.plugin.villagers; + +import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler; +import gtPlusPlus.api.objects.data.Pair; +import net.minecraft.util.ResourceLocation; + +public class VillagerUtils { + + + public static void registerNewVillager(int aID, String aName, Object aProfession, Object aCareer, ResourceLocation aSkin, IVillageTradeHandler aCustomTrade) { + + //Register Custom Trade to Registry. + if (aCustomTrade != null) { + Core_VillagerAdditions.mVillagerTrades.put(new Pair<Integer, IVillageTradeHandler>(aID, aCustomTrade)); + } + //Register Skin to Registry. + if (aSkin != null) { + Core_VillagerAdditions.mVillagerSkins.put(aID, aSkin); + } + + } + + +} diff --git a/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java b/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java new file mode 100644 index 0000000000..2d6e0bf62a --- /dev/null +++ b/src/Java/gtPlusPlus/plugin/villagers/entity/EntityBaseVillager.java @@ -0,0 +1,447 @@ +package gtPlusPlus.plugin.villagers.entity; + +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.Iterator; +import java.util.Random; + +import cpw.mods.fml.common.registry.VillagerRegistry; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.reflect.ReflectionUtils; +import gtPlusPlus.plugin.villagers.NameLists; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentData; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.MathHelper; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; +import net.minecraft.village.Village; +import net.minecraft.world.World; + +public abstract class EntityBaseVillager extends EntityVillager{ + + //public static final VillagerProfession mProfession; + + /* + * + Your problem is that you are extending EntityVillager, + but buyingList and addDefaultEquipment are both PRIVATE members of EntityVillager - + you cannot use or override them without Reflection or ASM. + + What you can do, however, is override getRecipes to return your own list, + but because you override EntityVillager, your mob is still using the villager's + buyingList (which is NULL) when useRecipe or any other villager method is called. + You either have to override every method from EntityVillager which interacts with + buyingList and make it use your own list, or you need to not extend EntityVillager and just implement IMerchant instead. + */ + + public EntityBaseVillager(World aWorld, int aID) { + super(aWorld, aID); + } + + @Override + public void writeEntityToNBT(NBTTagCompound aNBT) { + if (this.hasCustomNameTag()) { + if (!aNBT.hasKey("aCustomName")) { + aNBT.setString("aCustomName", this.getCommandSenderName()); + } + } + super.writeEntityToNBT(aNBT); + } + + @Override + public void readEntityFromNBT(NBTTagCompound aNBT) { + if (aNBT.hasKey("aCustomName")) { + if (this.getCustomNameTag() != aNBT.getString("aCustomName")) { + this.setCustomNameTag(aNBT.getString("aCustomName")); + } + } + super.readEntityFromNBT(aNBT); + } + + @Override + public void writeToNBT(NBTTagCompound aNBT) { + // TODO Auto-generated method stub + super.writeToNBT(aNBT); + } + + @Override + public void readFromNBT(NBTTagCompound aNBT) { + // TODO Auto-generated method stub + super.readFromNBT(aNBT); + } + + @Override + protected boolean canDespawn() { + return !this.hasCustomNameTag(); + } + + @Override + public void setProfession(int p_70938_1_) { + super.setProfession(p_70938_1_); + } + + @Override + public int getProfession() { + return super.getProfession(); + } + + @Override + public void useRecipe(MerchantRecipe p_70933_1_) { + super.useRecipe(p_70933_1_); + } + + @Override + public void setRecipes(MerchantRecipeList p_70930_1_) { + super.setRecipes(p_70930_1_); + } + + public abstract boolean shouldAlwaysSprint(); + + @Override + public void onLivingUpdate() { + + //Set Custom Name + if (!this.hasCustomNameTag()) { + this.setCustomNameTag(NameLists.generateRandomName()); + } + + super.onLivingUpdate(); + + //Make these guys always sprint + if (shouldAlwaysSprint()) { + if (!this.isSprinting()) { + this.setSprinting(true); + } + } + + } + + @Override + public Entity getEntityToAttack() { + return super.getEntityToAttack(); + } + + @Override + public boolean getAlwaysRenderNameTag() { + return hasCustomNameTag(); + } + + @Override + public Random getRNG() { + return CORE.RANDOM; + } + + @Override + public void setSprinting(boolean bool) { + super.setSprinting(bool); + } + + + /** + * Custom Shit + */ + + + protected float getField_82191_bN() { + Field v82191; + try { + v82191 = ReflectionUtils.getField(getClass(), "field_82191_bN"); + try { + return v82191 != null ? v82191.getFloat(this) : 0f; + } catch (IllegalArgumentException | IllegalAccessException e) { + return 0f; + } + } catch (NoSuchFieldException e1) { + return 0f; + } + } + + protected void setField_82191_bN(float f) { + try { + ReflectionUtils.setField(this, "field_82191_bN", f); + } catch (IllegalArgumentException e) {} + } + + protected boolean getNeedsInitilization() { + Field v82191; + try { + v82191 = ReflectionUtils.getField(getClass(), "needsInitilization"); + try { + return v82191 != null ? v82191.getBoolean(this) : false; + } catch (IllegalArgumentException | IllegalAccessException e) { + return false; + } + } catch (NoSuchFieldException e1) { + return false; + } + } + + protected void setNeedsInitilization(boolean f) { + try { + ReflectionUtils.setField(this, "needsInitilization", f); + } catch (IllegalArgumentException e) {} + } + + protected MerchantRecipeList getBuyingList() { + Field v82191; + MerchantRecipeList o; + try { + v82191 = ReflectionUtils.getField(getClass(), "buyingList"); + try { + o = (MerchantRecipeList) v82191.get(this); + return v82191 != null ? o : null; + } catch (IllegalArgumentException | IllegalAccessException e) { + return null; + } + } catch (NoSuchFieldException e1) { + return null; + } + } + + protected void setBuyingList(MerchantRecipeList f) { + try { + ReflectionUtils.setField(this, "buyingList", f); + } catch (IllegalArgumentException e) {} + } + + protected Village getVillageObject() { + Field v82191; + try { + v82191 = ReflectionUtils.getField(getClass(), "villageObj"); + try { + return v82191 != null ? (Village) v82191.get(this) : null; + } catch (IllegalArgumentException | IllegalAccessException e) { + return null; + } + } catch (NoSuchFieldException e1) { + return null; + } + } + + protected String getLastBuyingPlayer() { + Field v82191; + try { + v82191 = ReflectionUtils.getField(getClass(), "lastBuyingPlayer"); + try { + return v82191 != null ? (String) v82191.get(this) : ""; + } catch (IllegalArgumentException | IllegalAccessException e) { + return ""; + } + } catch (NoSuchFieldException e1) { + return ""; + } + } + + + + + public MerchantRecipeList getRecipes(EntityPlayer p_70934_1_){ + if (getBuyingList() == null){ + this.addDefaultEquipmentAndRecipies(1); + } + return getBuyingList(); + } + + + + /** + * Adjusts the probability of obtaining a given recipe being offered by a villager + */ + private float adjustProbability(float p_82188_1_) + { + float f1 = p_82188_1_ + getField_82191_bN(); + return f1 > 0.9F ? 0.9F - (f1 - 0.9F) : f1; + } + + /** + * based on the villagers profession add items, equipment, and recipies adds par1 random items to the list of things + * that the villager wants to buy. (at most 1 of each wanted type is added) + */ + private void addDefaultEquipmentAndRecipies(int p_70950_1_) + { + if (this.getBuyingList() != null) + { + setField_82191_bN(MathHelper.sqrt_float((float)this.getBuyingList().size()) * 0.2F); + } + else + { + setField_82191_bN(0.0F); + } + + MerchantRecipeList merchantrecipelist; + merchantrecipelist = new MerchantRecipeList(); + VillagerRegistry.manageVillagerTrades(merchantrecipelist, this, this.getProfession(), this.rand); + int k; + label50: + + switch (this.getProfession()) + { + case 0: + func_146091_a(merchantrecipelist, Items.wheat, this.rand, this.adjustProbability(0.9F)); + func_146091_a(merchantrecipelist, Item.getItemFromBlock(Blocks.wool), this.rand, this.adjustProbability(0.5F)); + func_146091_a(merchantrecipelist, Items.chicken, this.rand, this.adjustProbability(0.5F)); + func_146091_a(merchantrecipelist, Items.cooked_fished, this.rand, this.adjustProbability(0.4F)); + func_146089_b(merchantrecipelist, Items.bread, this.rand, this.adjustProbability(0.9F)); + func_146089_b(merchantrecipelist, Items.melon, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.apple, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.cookie, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.shears, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.flint_and_steel, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.cooked_chicken, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.arrow, this.rand, this.adjustProbability(0.5F)); + + if (this.rand.nextFloat() < this.adjustProbability(0.5F)) + { + merchantrecipelist.add(new MerchantRecipe(new ItemStack(Blocks.gravel, 10), new ItemStack(Items.emerald), new ItemStack(Items.flint, 4 + this.rand.nextInt(2), 0))); + } + + break; + case 1: + func_146091_a(merchantrecipelist, Items.paper, this.rand, this.adjustProbability(0.8F)); + func_146091_a(merchantrecipelist, Items.book, this.rand, this.adjustProbability(0.8F)); + func_146091_a(merchantrecipelist, Items.written_book, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Item.getItemFromBlock(Blocks.bookshelf), this.rand, this.adjustProbability(0.8F)); + func_146089_b(merchantrecipelist, Item.getItemFromBlock(Blocks.glass), this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.compass, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.clock, this.rand, this.adjustProbability(0.2F)); + + if (this.rand.nextFloat() < this.adjustProbability(0.07F)) + { + Enchantment enchantment = Enchantment.enchantmentsBookList[this.rand.nextInt(Enchantment.enchantmentsBookList.length)]; + int i1 = MathHelper.getRandomIntegerInRange(this.rand, enchantment.getMinLevel(), enchantment.getMaxLevel()); + ItemStack itemstack = Items.enchanted_book.getEnchantedItemStack(new EnchantmentData(enchantment, i1)); + k = 2 + this.rand.nextInt(5 + i1 * 10) + 3 * i1; + merchantrecipelist.add(new MerchantRecipe(new ItemStack(Items.book), new ItemStack(Items.emerald, k), itemstack)); + } + + break; + case 2: + func_146089_b(merchantrecipelist, Items.ender_eye, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.experience_bottle, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.redstone, this.rand, this.adjustProbability(0.4F)); + func_146089_b(merchantrecipelist, Item.getItemFromBlock(Blocks.glowstone), this.rand, this.adjustProbability(0.3F)); + Item[] aitem = new Item[] {Items.iron_sword, Items.diamond_sword, Items.iron_chestplate, Items.diamond_chestplate, Items.iron_axe, Items.diamond_axe, Items.iron_pickaxe, Items.diamond_pickaxe}; + Item[] aitem1 = aitem; + int j = aitem.length; + k = 0; + + while (true) + { + if (k >= j) + { + break label50; + } + + Item item = aitem1[k]; + + if (this.rand.nextFloat() < this.adjustProbability(0.05F)) + { + merchantrecipelist.add(new MerchantRecipe(new ItemStack(item, 1, 0), new ItemStack(Items.emerald, 2 + this.rand.nextInt(3), 0), EnchantmentHelper.addRandomEnchantment(this.rand, new ItemStack(item, 1, 0), 5 + this.rand.nextInt(15)))); + } + + ++k; + } + case 3: + func_146091_a(merchantrecipelist, Items.coal, this.rand, this.adjustProbability(0.7F)); + func_146091_a(merchantrecipelist, Items.iron_ingot, this.rand, this.adjustProbability(0.5F)); + func_146091_a(merchantrecipelist, Items.gold_ingot, this.rand, this.adjustProbability(0.5F)); + func_146091_a(merchantrecipelist, Items.diamond, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.iron_sword, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.diamond_sword, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.iron_axe, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.diamond_axe, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.iron_pickaxe, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.diamond_pickaxe, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.iron_shovel, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_shovel, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.iron_hoe, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_hoe, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.iron_boots, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_boots, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.iron_helmet, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_helmet, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.iron_chestplate, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_chestplate, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.iron_leggings, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.diamond_leggings, this.rand, this.adjustProbability(0.2F)); + func_146089_b(merchantrecipelist, Items.chainmail_boots, this.rand, this.adjustProbability(0.1F)); + func_146089_b(merchantrecipelist, Items.chainmail_helmet, this.rand, this.adjustProbability(0.1F)); + func_146089_b(merchantrecipelist, Items.chainmail_chestplate, this.rand, this.adjustProbability(0.1F)); + func_146089_b(merchantrecipelist, Items.chainmail_leggings, this.rand, this.adjustProbability(0.1F)); + break; + case 4: + func_146091_a(merchantrecipelist, Items.coal, this.rand, this.adjustProbability(0.7F)); + func_146091_a(merchantrecipelist, Items.porkchop, this.rand, this.adjustProbability(0.5F)); + func_146091_a(merchantrecipelist, Items.beef, this.rand, this.adjustProbability(0.5F)); + func_146089_b(merchantrecipelist, Items.saddle, this.rand, this.adjustProbability(0.1F)); + func_146089_b(merchantrecipelist, Items.leather_chestplate, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.leather_boots, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.leather_helmet, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.leather_leggings, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.cooked_porkchop, this.rand, this.adjustProbability(0.3F)); + func_146089_b(merchantrecipelist, Items.cooked_beef, this.rand, this.adjustProbability(0.3F)); + } + + if (merchantrecipelist.isEmpty()) + { + func_146091_a(merchantrecipelist, Items.gold_ingot, this.rand, 1.0F); + } + + Collections.shuffle(merchantrecipelist); + + if (this.getBuyingList() == null) + { + this.setBuyingList(new MerchantRecipeList()); + } + + for (int l = 0; l < p_70950_1_ && l < merchantrecipelist.size(); ++l) + { + this.getBuyingList().addToListWithCheck((MerchantRecipe)merchantrecipelist.get(l)); + } + } + + /** + * main AI tick function, replaces updateEntityActionState + */ + @Override + protected void updateAITick(){ + if (!this.isTrading()){ + if (this.getNeedsInitilization()){ + if (this.getBuyingList().size() > 1){ + Iterator<MerchantRecipe> iterator = this.getBuyingList().iterator(); + + while (iterator.hasNext()){ + MerchantRecipe merchantrecipe = (MerchantRecipe)iterator.next(); + + if (merchantrecipe.isRecipeDisabled()) + { + merchantrecipe.func_82783_a(this.rand.nextInt(6) + this.rand.nextInt(6) + 2); + } + } + } + + this.addDefaultEquipmentAndRecipies(1); + this.setNeedsInitilization(false); + + if (this.getVillageObject() != null && this.getLastBuyingPlayer() != null){ + this.worldObj.setEntityState(this, (byte)14); + this.getVillageObject().setReputationForPlayer(this.getLastBuyingPlayer(), 1); + } + } + } + super.updateAITick(); + } + +} diff --git a/src/Java/gtPlusPlus/plugin/villagers/entity/trade/BaseVillagerTrade.java b/src/Java/gtPlusPlus/plugin/villagers/entity/trade/BaseVillagerTrade.java new file mode 100644 index 0000000000..61db98e803 --- /dev/null +++ b/src/Java/gtPlusPlus/plugin/villagers/entity/trade/BaseVillagerTrade.java @@ -0,0 +1,32 @@ +package gtPlusPlus.plugin.villagers.entity.trade; + +import java.util.Random; + +import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.village.MerchantRecipeList; + +public abstract class BaseVillagerTrade implements IVillageTradeHandler { + + + /* + Recently in my mod I started working on a new villager and after doing so I could not figure out to assign new trades to this villager. + Registering the villager + VillagerRegistry.instance().registerVillageTradeHandler(i, new TradeHandler());} + VillagerRegistry.instance().registerVillagerId(8); + VillagerRegistry.instance().registerVillagerSkin(8, new ResourceLocation("chow", "textures/dealer.png")); + VillagerRegistry.instance().getRegisteredVillagers(); + In my trade handler for vanilla villagers it goes off case 0 for instance being the farmer. I thought that it being case 8 would represent the id 8 for the custom villager but it still doesn't work. Could anyone help me out with this please? + * + * + First, you'll need to make a new class that extends IVillageTradeHandler. + In the constructor, add ItemStacks of the items you want it to trade to an ArrayList, + then in the manipulateTradesForVillager method, have it make sure the villager is yours by using villager.getProfession() + and your villager ID, then in a for loop use recipeList.addToListWithCheck to add new instances of MerchantRecipe to your villager's trade list. + Then, in your mod's main class, register the trade handler with VillageRegistry.instance().registerVillagerTradeHandler(villagerId, instanceOfTradeHandler); + */ + + @Override + public abstract void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random); + +} |